# De-embed transmission lines with FIR filters

Serial data out of networking SERDES have reached rates as high as 28Gbps and are continuously evolving. At such high data rates, even small PCB traces act as transmission lines, degrading the signal integrity through attenuation and dispersion. It is difficult to monitor the SERDES transmitter output right at the chip balls. Usually, the signal will be brought to an SMA or SMP connector to be monitored by oscilloscope. However, the signal characteristics change due to the transmission line present between the IC and the connector. The challenge is to monitor the signal performance at SERDES pins, and this can be accomplished by de-embedding the effect of the trace. This Design Idea describes a methodology to de-embed the transmission line.

Let H(s) be the impulse response of the trace, if X(s) is the input signal, mathematically:

Y(s) = H(s) * X(s)

X(s) = Y(s) * H^{-1}(s)

We can implement H^{-1}(s) as an FIR filter, using MATLAB to determine the filter coefficients (link to files at end of article).

The H(s) of a trace can be measured using a network analyzer by measuring Sdd21. We need to determine the coefficients of an FIR filter (h_{f}(t)) whose frequency response(H_{f}(s)) is close to the inverse of Sdd21 measured above, i.e., H_{f}(s) = H^{-1}(s). The approach used to compute the filter coefficients is to start with certain coefficients
and compute the frequency response. Compute the magnitude error between H(s) and H_{f}(s). Using an optimization algorithm, coefficients are varied to minimize the sum squared error.

Referring to ** FIR_filter_design.m**,

**nc**is the number of coefficients in the FIR filter, and

**drate**is the data rate in Gbps of the input serial data. Choose

**fs**such that

**fs**/

**drate**is an integer. This will define the number of coefficients present in one bit.

**ncbit**gives the time difference between the adjacent coefficients. Let

**N**be the number of points in the frequency response H

_{f}(s), and

**numfpts**= N/2 is the number of frequency points in the Nyquist range. The Nyquist frequency for the filter transfer function is

**fs**/2. Define a frequency range

**finmin**to

**finmax**over which the magnitude error is computed.

Frequency points up to the Nyquist for the filter are given by:

Hz_{1} = (k***fs**)/(2***numfpts**), where k = 0 to numpts-1

Interpolation is done to compute the Sdd21 magnitude at Hz_{1} frequency points. Initialize filter coefficients to some value. Compute the magnitude of the frequency response of the filter using **freqz** MATLAB function, and determine the error between the Sdd21 magnitude data obtained after interpolation. The sum square error is minimized using the MATLAB **fminbnd** function. The minimization algorithm can be implemented in many ways; the code presented here is only one way of implementing it.

**Experiment results**

To demonstrate the effect of the FIR filter, a Keysight 86100D sampling scope is used, along with a Tektronix BERTScope, generating a pattern at 10.3125Gbps. The output of BERTScope is connected to the DSO, and the waveform is stored in the scope memory, as shown in **Figure 2** (magenta). The BERTScope output is then connected to a transmission line on a PCB; the SDD21(dB) profile of the channel is shown in **Figure 1**. The output from the channel is connected to the DSO (yellow trace). The attenuation and dispersion caused by the channel have significantly degraded the waveform. In the math option of the scope, there is a linear equalizer block which takes filter coefficients as input. Insert the linear equalizer block in the signal path and enter the filter coefficients. The output of the block is the green trace. The FIR filter removes the ISI effect of the channel and restores the waveform quite well.

**Figure 1 **Sdd21 of the PCB trace

The FIR coefficients obtained from the MATLAB code are:

0.766, -0.115, -0.097, -0.119, -0.090, -0.099, -0.083, -0.033, 0.028, 0.015, 0.042, 0.013, 0.024, -0.008, 0.002, -0.019, 0.000, -0.025, 0.005, -0.014, 0.011, -0.007, 0.021, -0.002, 0.014, -0.009, 0.009, -0.018, 0.003, -0.022

**Figure 2**BertScope PRBS7 output (magenta); signal at PCB trace output (yellow); FIR filter output (green)

**Conclusion**

The filter has significantly improved the signal integrity by removing the attenuation caused by the PCB trace. Processing can be done in an oscilloscope, offline, implemented in hardware, etc.

There are some differences between the BertScope output and filter output, which could be due to the following:

- There is some peaking in the first UI. This is due to the large values of filter coefficients a2, a3, and a4. Most of the high frequency amplification is done by these coefficients, which causes the peaking. The algorithm could be modified to correct this.
- H1(s) should be band-limited by using a LPF function. This will give a band limited filter and the error should be minimized over the entire transfer function. This is also expected to reduce the peaking in first UI. In this article, the filter is band-limited by defining fmin and fmax, which introduces errors.
- The phase information is not included in determining the filter coefficients, which introduces some errors.

Calculation of the filter coefficients could be improved by making these corrections in the design algorithm.

Download the MATLAB files

**Also see**:

- Receiver equalization is not nearly enough
- DesignCon paper and tutorial explain de-embedding
- De-embedding improves measurement accuracy
- How oscilloscopes derive de-embed filters
- Measure a 75? cable with a 50? VNA
- Characterize a 28 Gbit/s Transceiver

## Almost Done

Please confirm the information below before signing in.

{* #socialRegistrationForm *} {* firstName *} {* lastName *} {* displayName *} {* emailAddress *} {* addressCountry *} {* companyName *} {* ednembJobfunction *} {* jobFunctionOther *} {* ednembIndustry *} {* industryOther *}