FFE
Description: feedforward equalizer
Library: Numeric, Communications
Class: SDFFFE
Parameters
Name 
Description 
Default 
Unit 
Type 
Range 

NumFFtaps 
number of feedforward taps 
5 

int 

FFinitial 
feedforward filter taps are initialized by users or not: NO, YES 
NO 

enum 

FFtaps 
initial feedforward filter taps (only valid when FFinitial is YES) 
{0, 0, 0, 0, 0} 

real array 

EquAlgorithm 
adaptive algorithm: None, LMS, RLS, ZF 
LMS 

enum 

TrainSeqLen 
length of training sequence 
1000 

int 

Fraction 
number of samples per symbol at input, range [1, 16]. Fraction=1: symbolspaced equalizer; Fraction=2~16: fractionally spaced equalizer 
1 

int 

RefTap 
index of reference tap for LMS and RLS algorithms, range [1, NumFFtaps] 
3 

int 

Alpha 
step size for LMS algorithm 
1e3 

real 

Lambda 
weighting factor for RLS algorithm 
0.999 

real 
(0.0, 1.0) 
Delta 
small positive constant for RLS algorithm 
0.001 

real 
(0.0, 10.0] 
TargetMSE 
reference MSE in dB for stopping updating coefficients when RLS equalizer reaches this MSE 
40 
dB 
real 
(100, 100] 
SaveTapsFile 
filename in which to save final tap values 


string 

Pin Inputs
Pin 
Name 
Description 
Signal Type 

1 
input 
input signal before equalizer 
real 
2 
TrainSeq 
input training sequence for equalizer 
real 
Pin Outputs
Pin 
Name 
Description 
Signal Type 

3 
output 
output signal after decision feedback equalizer 
real 
Notes/Equations
 Timedispersive channels can cause intersymbol interference (ISI). For example, in a multipath scattering environment, the receiver sees delayed versions of a symbol transmission, which can interfere with other symbol transmissions. An equalizer attempts to mitigate ISI and thus improve the receiver's performance. This model is a FeedForward Equalization (FFE), and it operates with training sequence. In each firing, the input consumes Fraction input token and TrainSeq consumes one input token, while produces one output token.
 A block diagram of the equalizer is shown in Block Diagram of the FFE. This equalizer works in training sequence mode.
Block Diagram of the FFE
 If the parameter EquAlgorithm is set to ZF, RLS or LMS, the equalizer works in training and tracking modes. In the training mode, the training sequence (from Pin TrainSeq) is used as training sequence. The number of training sequence is TrainSeqLen. The error signal e _{k} is from the training signal:
is the input training sequence.
is the equalized output sequence.
After the training mode, the decision feedback equalizer coefficient is converged and the equalizer enters into the tracking mode. When the parameter EquAlgorithm is set to ZF, LMS or RLS, the ZF, LMS or RLS adaptive algorithm is used in tracking mode correspondingly. The error signal e _{k} is from the decision signal of the equalized signal:
where
is the detected output sequence for binary case:
If the parameter EquAlgorithm is set to NONE, the equalizer works in nonadaptive mode with fixed coefficients.
LMS Algorithm
The criterion most commonly used in the optimization of the equalizer coefficients is the minimization of the mean square error (MSE) between the desired equalizer output and the actual equalizer output.
MSE minimization can be accomplished recursively by use of the stochastic gradient algorithm introduced by Widrow, called the LMS algorithm. This algorithm is described by the coefficient update equation
where
C _{k} is the vector of the equalizer coefficients at the kth iteration X _{k} represents the signal vector.
α is parameter Alpha.
RLS Algorithm
The convergence rate of the LMS algorithm is slow because a single parameter α controls the rate of adaptation. A fast converging algorithm is obtained if a recursive least squares (RLS) criterion is adopted for adjustment of the equalizer coefficients.
The RLS iteration algorithm follows.
Calculate output:
Calculate Kalman gain vector:
Update inverse of the correlation matrix:
Update coefficients:
is parameter Lamda.
is a diagonal matrix with initial value Delta*I (here I is a diagonal matrix).
Delta is parameter Delta.
The updating of coefficients in RLS algorithm will be halted when the MSE averaged over 100 consecutive symbols is less than a reference MSE defined by TargetMSE.
ZF Algorithm
The zeroforcing (ZF) solution is achieved by forcing the crosscorrelation between the error sequence
and the desired information sequence {Ik} to be zero.
When in the training mode, the coefficients are updated as:
When in the tracking mode, the coefficients are updated as:
where
is the detected output sequence.  For LMS and RLS algorithms, the total delay caused by the equalizer is equal to (RefTap1)/Fraction. Usually the reference tap is set to the center tap in a linear equalizer, or the center tap of the forward filter in a DFE equalizer.
For ZF algorithm, no delay is introduced by this equalizer after the equalizer has converged. Note that ZF algorithm has a condition that the input signal needs to have the eye open prior to equalization. That is, the convergence of ZF algorithm requires
L is the number of ISI affected symbols and the impulse response {f _{n}} are coefficients of the linear filter model which causes ISI.  Parameter Details:
 NumFFtaps specifies the number of feedforward taps.
 FFinitial indicates whether the feedforward filter taps are initialized by users or not. If users don't want to set FFtaps, FFinitial is selected as NO and the FFtaps are generated in code automatically.
 FFtaps specifies the initial value of feedforward filter taps if FFinitial is YES.
 EquAlgorithm selects the equalizer algorithm.
 TrainSeqLen specifies the length of training sequence.
 Fraction specifies the number of samples per symbol at input, range [1, 16].
 RefTap specifies the index of reference tap for LMS and RLS algorithms, ranged from 1 to NumFFtaps.
 Alpha specifies the step size for tap adjustment.
 Lambda specifies weighting factor for RLS algorithm.
 Delta specifies a small positive constant for RLS algorithm.
 TargetMSE specifies the reference MSE in dB for RLS algorithm. RLS equalizer will stop updating coefficients when the MSE averaged over 100 consecutive symbols is less than this reference.
 SaveTapsFile specifies the filename in which to save final feedforward tap values. If the SaveTapsFile string is nonnull, a file will be created with the name given by that string, and the final tap values will be stored there after the run has completed.
References
 John G. Proakis, Digital Communications, Third Edition, McGrawHill, 1995.
 Dimitris G. Manolakis et.al, Statistical and Adaptive Signal Processing, McGrawHill, 2000.