<< Chapter < Page | Chapter >> Page > |
Observe that the source signal does not appear in [link] . Thus, no training signal is required for its implementation andthe decision-directed LMS equalizer adaptation law of [link] is called a “blind” equalizer. Given its genesis, one should expect decision-directed LMS toexhibit poor behavior when the assumption regarding perfect decisions is violated.The basic rule of thumb is that 5% (or so) decision errors can be tolerated before decision-directed LMS failsto converge properly.
The M
atlab program
DDequalizer.m
has a familiar
structure. The only code changed from
LMSequalizer.m
is the calculation of the error term, which implements
rather than the LMS
error
[link] , and the initialization of
the equalizer. Because the equalizer must begin withan open eye,
f=0
is a poor choice. The initialization
that follows starts all taps at zero except for onein the middle that begins at unity. This is called the
“center-spike” initialization.If the channel eye is open, then the combination of
the channel and equalizer will also have an open eyewhen initialized with the center spike.
The exercises ask you to explore the issueof finding good initial values for the equalizer
parameters. As with the LMS equalizer, thecode in
EqualizerTest.m
can be used to test
the operation of the converged equalizer.
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=[0 1 0 0]'; % initialize equalizermu=.1;
% stepsizefor i=n+1:m
% iterate rr=r(i:-1:i-n+1)'; % vector of received signal
e=sign(f'*rr)-f'*rr; % calculate error f=f+mu*e*rr; % update equalizer coefficients
end
DDequalizer.m
find a DD equalizer f for the channel b
(download file)
Try the initialization
f=[0 0 0 0]'
in
DDequalizer.m
. With this initialization,
can the algorithm open the eye? Try increasing
m
.
Try changing the stepsize
mu
.
What other initializations will work?
What happens in
DDequalizer.m
when the stepsize
parameter
mu
is too large? What happens when it is too
small?
Add (uncorrelated, normally distributed) noise into
the simulation using the command
r=filter(b,1,s)+sd*randn(size(s))
.
What is the largest
sd
you can add, and still have no errors?
Does the initial value for
f
influence this number?
Try at least three initializations.
Modify
DDequalizer.m
to generate a source sequence
from the alphabet
. For the default channel
[0.5 1 -0.6]
, find an equalizer that opens the eye.
"Examples and Observations" provides the opportunity to view the simulated behavior of the decision-directedequalizer, and to compare its performance with the other methods.
Notification Switch
Would you like to follow the 'Software receiver design' conversation and receive update notifications?