Posted by Colin Warwick
This post is based on my response to a question from the si-list Generic receiver equalization setting.
Updated July 2, 2013 with FFE info
The Channel Simulator in W2302 ADS Transient Convolution Element contains a general purpose high speed digital IC I/O receiver that includes three kinds of equalizer (continuous-time linear equalizer (CTLE), feed-forward equalizer (FFE), and decision feedback equalizer (DFE)). Here’s its dialog box:
For the CTLE you have to enter the gain, poles, and zeros manually and so my colleague Sanjeev Gupta wrote an article on how to do this in EDN entitled Continuous-time equalizers improve high-speed serial links: You can design an effective serial-channel equalizer in a few minutes (By the way, if the figures are fuzzy the originals are here)
The FFE and DFE are normally used with the Optimized setting, which calculates the tap coefficients automatically, but occasionally you might want to manually set the responses for those too. This article by Jared Zerbe Communication Techniques: Equalization & Modulation that shows the problem of FFE and DFE design is really the problem of FIR filter design. And the problem of optimal FIR filter design was largely solved by an algorithm by James McClellan and Thomas Parks.
So you can use your favorite digital signal processing package that contains the Parks-McClellan algorithm. You plug in 1) the desired frequency response and 2) the maximum number of taps you want to expend, and out pops a list of tap coefficients.
HPF_ParksMcClellan block we call the GNU
remez() function that is also available in GNU Octave.
MATLAB has both
remez() and a newer function called
firpm(), but for the few simple cases I tried the results were the same.
For an explanation of how this works with a given channel response see “Part 2” Tutorial: Mitigate Inter-Symbol Interference by using an Equalization Filter
Please add a comment in the likely event that I’ve missed something!