See What’s Coming Soon to Altium Designer 24

Setting the new standard in electronics design.

Interference Amplitude Distortion

Jason J. Ellison
|  Created: February 8, 2021  |  Updated: April 12, 2021

I’ve talked about COM and channel analysis in previous blogs, and I’d like to continue the discussion with more visual aids and some example code to enable readers to do some analysis themselves.

To start, let’s review what COM is and a high level overview of how COM is calculated. COM is a signal-to-noise ratio of voltage at a point in time. The point in time is the sampling point, and the available signal is the voltage of the pulse response at the sampling point. A pulse response is the shape of the voltage after going through the channel under test, and the pulse is simply a rect function with a unit interval that corresponds to the intended data rate.

The noise is found by statistical analysis and is broken up into three main categories: ISI, Crosstalk, and System.

Figure 1. Noise Statistical analysis in three main categories: ISI, crosstalk, system
Figure 1. Noise Statistical analysis in three main categories: ISI, crosstalk, system

ISI noise is the statistical noise from the reflections in the channel. Every non-zero value in the pulse response after the DFE taps adds to this noise. The only values that are considered are M points away from each other. This is seen in the figure below as circles. The magenta circles are the noise contributions that have been taken care of by the DFE, and the black circles are the noise values that are do not have any DFE applied. 

Figure 2. Noise contributions taken care of by DTE and noise values with no DFE
Figure 2. Noise contributions taken care of by DTE and noise values with no DFE

The crosstalk is done in the exact same way except the noise value is asynchronous. Meaning, COM takes the peak crosstalk value instead of the value that corresponds to the available signal slice. The system noise contains the data-dependant jitter (DDJ), random jitter, and a lumped value of noise from the IC. The DDJ is related to the reflections so it trends with the ISI noise value: more ISI means more DDJ. However, all other system noise is constant regardless of the channel.

Doing the calculations to create the pulse response is by no means easy, but most engineers and scientists can get it eventually. However, the noise portion of the problem is much more difficult. The main issue is implementing equation 93A-39 which I have below.

Figure 3. Equation 93A-39
Figure 3. Equation 93A-39

For most of the world, this is a fairly intimidating equation. I’m going to explain each part then show some visual aids. Starting from left to right, pn(y) is the probability of voltage being at location y from the contributing sample, n. In other words, it’s the how likely an amount of noise will occur for one of the points in the pulse response. 1/L takes into account the modulation. Every level has it’s own probability, and the total probability in the y direction needs to add up to one. So the probability is split up equally for each level. In this paper, I’m going to analyze Non-Return Zero (NRZ), Pulse Amplitude Modulation 4 (PAM4), and PAM6. For NRZ, there are two levels, PAM4 has four levels, and PAM6 has 6 levels. In practice, the IEEE COM code only evaluates the probability distribution function (PDF) for one level, because the standard does not take into account asymmetric levels (but it could 😉 ). Only considering one level also improves the speed of execution which has been a hot button topic in the standard.

Let’s skip the delta function for a moment, and go into its argument:. . The only thing that is important here is the argument is zero when y is the same as .. Finally, there is the delta function: , and the delta function is simply one when it’s argument is zero.

So if we sweep over y, you get the PDF of how much noise sample n will create. The next step is to use equation 93A-40 for each sample n and you get the PDF of the noise from the time-domain source. 

Figure 4. Equation 93A-40
Figure 4. Equation 93A-40

I’m going to apply this equation to the sample shown below. It is a point where the re-reflected signal is creating noise on the channel of 0.000819779 volts. 

Figure 5. Re-reflected signal creating noise on the channel of 0.000819779 volts
Figure 5. Re-reflected signal creating noise on the channel of 0.000819779 volts

Plotting the inner argument of 93A-39, you get the following graph. You can see there is a zero crossing for both l = 0 and l = 1, and that the crossing is at +/-0.000819779.  These zero crossing points are where pn(y)  = 1/L.

Figure 6. Zero crossing for both l = 0 and l = 1
Figure 6. Zero crossing for both l = 0 and l = 1

If we then plot this PDF, we get the following graph.

Figure 7. Plotting PDF
Figure 7. Plotting PDF

The same analysis can be done for and other modulation schemes, and I have NRZ, PAM4, PAM6, and PAM8 shown below. The probability of each noise source decreases as modulation increases, and there are more sources of noise as modulation increases.

Figure 8. NRZ, PAM4, PAM6, and PAM8
Figure 8. NRZ, PAM4, PAM6, and PAM8

You then apply equation 93A-40 for each relevant sample and you get a proper distribution. The animation below shows the distribution being made. The black line indicates the sample point n being considered and the PDF updates as the line moves. I normalized the PDF so the peak is one so the animation is clean, but the sum of the PDF must equal one for it to be valid. Take notice how the PDF spreads as the sample point moves along the noise between 5 and 6 ns. This is exactly how reflections cause noise in the system. The level of the noise is quite small and notice how it dramatically increases the width of the noise.

Figure 9. How reflections cause noise in the system
Figure 9. How reflections cause noise in the system

The next obvious question is, “how does modulation affect the amount of noise?” Will adding levels increase noise, or will lowering the probability of each level lower the total noise? It turns out there is less noise from ISI as modulation increases. The graph below shows the PDF from this equalized pulse response for NRZ, PAM4, PAM6, and PAM8.

Figure 10. PDF from this equalized pulse response for NRZ, PAM4, PAM6, and PAM8
Figure 10. PDF from this equalized pulse response for NRZ, PAM4, PAM6, and PAM8

That would seem to indicate that moving up in modulation lowers noise. So why don’t we just crank up the modulation to get higher data-rates! Well, it’s not that easy, and I’ll talk more about that below.

I mentioned earlier the sum of the PDF must equal one for it to be valid, and if you implement this code in MATLAB, you’ll notice something strange happens as L increases.

L Sum of p
2 1
4 1
6 0.026084
8 1.2496e-5


What happened? It turns out the numbers are so small that double precision is not enough to capture the PDF, and as it is created you lose some information. Fortunately, there is a workaround for this. Knowing the sum must equal one, you can simply divide the PDF by the sum of p and you will force this behavior, and this is exactly what the IEEE posted COM code does. Otherwise, you would need to implement a higher precision scale in MATLAB. That would slow down the code for really no gain.

The code to create this distribution and an example script to run it has been posted here.

We have seen that we can use this interference equation to gather insight into how reflections cause signal degradation. Let’s take things a step further and explore the decision feedback equalization (DFE). The IEEE specification indicates how many samples will be corrected by the DFE. The variable for the samples is Nb, and I set Nb to 12 for all examples in this paper. As long as the noise voltage is below a threshold, the COM code considers these samples zero and nullifies the noise, but what happens to the other samples? 


DFE’s that affect samples other than the available signal slice are typically either ideal rect functions, or scaled pulse responses. What happens if you take the pulse amplitudes defined by the green lines, and use them to eliminate the noise? You get the plot below. The first sample of noise has been eliminated, but the pulse used to correct the noise is also causing extra noise!


The DFE taps need to be created serially instead of all at the same time. If we do that, we get effectively no noise at the sampling point, and the other points have residual noise that affects the signal at other slices. The animation below shows this process.


Now that we have an equalized pulse response with and without DFE, we can sweep the sampling point to create statistical eye patterns and see how exactly the DFE affects the signal quality. I have eye patterns below for NRZ, PAM4, and PAM6 for equalized pulse responses and equalized pulse responses with the DFE. And just as before, you can sweep the sampling points and watch as the eye pattern is created. It makes for interesting observations, but in this case, I only have a trace. I think it would be more exciting if I applied this to a backplane. However, I don’t have a noisy backplane to analyze, so this will have to do for today.

The PAM6 eye being created

PAM6 eye being created
NRZ - Before and after DFE (25G)



PAM4 - Before and after DFE (50G)



PAM6 - Before and after DFE (75G)


Let’s make some observations from these plots. First, notice how dramatically the eye pattern improves from the DFE. The equalized NRZ eye pattern would likely work just fine without a DFE, but the PAM4 and PAM6 eyes are completely closed before the DFE is implemented.

The second observation is how dramatically the eye width decreases with modulation. Eyeballing it (pun intended), the eye width decreases by 50% with each added modulation. That means not only will it be harder for the system to detect the proper value in the voltage direction, but the sampling point needs to be increasingly stable with increased modulation.

Finally, observe the eye height in the PAM6 eye. Again, this assumes the transmitter can perfectly create equally distributed levels and there is no system noise. Adding system noise and asymmetrical levels will make this very difficult to resolve with low BER, and that explains why we need forward error correction (FEC) at higher data rates and modulation schemes. You just cannot get error-free transmission without it.

That wraps it up for this quarter. So what did we learn from this? Open-source code is available from the MATHWORKS site to create interference aptitude distortion PDFs, and you can use these PDFs to create eye patterns. We also observed how reflections create signal noise by watching the interference PDF get wider as we considered reflections from the pulse response. Finally, we observed how dramatically difficult it gets to achieve error-free performance from a channel as modulation increases. I hope that gives readers an appreciation for the need for reduced reflections and increased tech such as adding FEC.

Until next time, stay safe out there!

The design tools in Altium Designer® contain everything you need to keep up with new technology. Talk to us today and find out how we can enhance your next PCB Design.

About Author

About Author

Jason J Ellison received his Masters of Science in Electrical Engineering from Penn State University in December 2017.
He is employed as a signal integrity engineer and develops high-speed interconnects, lab automation technology, and calibration technology. His interests are signal integrity, power integrity and embedded system design. He also writes technical publications for journals such as “The Signal Integrity Journal”.
Mr. Ellison is an active IEEE member and a DesignCon technical program committee member.

Related Resources

Back to Home
Thank you, you are now subscribed to updates.