<< Chapter < Page | Chapter >> Page > |
The block oriented design of the previous section requires substantial computation even when the system delay is known since itrequires calculating the inverse of an matrix, where is the largest delay in the FIR linear equalizer.This section considers using an adaptive element to minimize the average of the squared error,
Observe that is a function of all the equalizer coefficients , since
which combines [link] with [link] , and where is the received signal at baseband after sampling.An algorithm for the minimization of with respect to the th equalizer coefficient is
To create an algorithm that can easily be implemented, it is necessary to evaluate this derivative withrespect to the parameter of interest. This is
the final equality from the chain rule [link] . Using [link] , the derivative of the source recovery error with respect to the th equalizer parameter is
since and for all . Substituting [link] into [link] and then into [link] , the update for the adaptive element is
Typically, the averaging operation is suppressed since the iteration with small stepsize itself has a lowpass (averaging) behavior.The result is commonly called the least mean squares (LMS) algorithm for direct linear equalizerimpulse response coefficient adaptation:
This adaptive equalization scheme is illustrated in [link] .
When all goes well, the recursive algorithm [link] converges to the vicinity of the block least-squares answer for the particular used in forming the delayed recovery error. As long as is nonzero, if the underlying composition of the received signal changes so that the error increasesand the desired equalizer changes, then the react accordingly. It is this tracking ability that earns it the labeladaptive. To provide tracking capability, the matrix solution of "A Matrix Description" could be recomputed for successive data blocks, but this requires significantly more computation.
The following M
atlab code implements an adaptive
equalizer design. The beginning and ending of theprogram are familiar from
openclosed.m
and
LSequalizer.m
.
The heart of the recursion lies in the
for
loop.
For each new data point, a vector is built containingthe new value and the past
n
values of the received
signal. This is multipliedby
f
to make a prediction of the next source symbol,
and the error is the difference between the predictionand the reality. (This is the calculation
of
from
[link] .) The equalizer
coefficients
f
are then updated as in
[link] .
b=[0.5 1 -0.6]; % define channelm=1000; s=sign(randn(1,m)); % binary source of length m
r=filter(b,1,s); % output of channeln=4; f=zeros(n,1); % initialize equalizer at 0
mu=.1; delta=2; % stepsize and delay deltafor i=n+1:m % iterate
rr=r(i:-1:i-n+1)'; % vector of received signal e=s(i-delta)-f'*rr; % calculate error
f=f+mu*e*rr; % update equalizer coefficientsend
LMSequalizer.m
find a LMS equalizer f for the channel b
(download file)
Notification Switch
Would you like to follow the 'Software receiver design' conversation and receive update notifications?