<< Chapter < Page | Chapter >> Page > |
Because the direct method of the previous section is unreliable, this section pursues an alternative strategy based on the observationthat the phase estimates of the PLL “converge” to a line that has a slope proportional to the difference between the actual frequencyof the carrier and the frequency that is assumed at the receiver.(Recall [link] and [link] .) The indirect method cascades two PLLs: the first finds this line(and hence indirectly specifies the frequency), the second converges to a constant appropriate for the phase offset.
The scheme is pictured in [link] . Suppose that the received signal has been preprocessedto form . This is applied tothe inputs of two PLLs. Or two SD phase tracking algorithms or two Costas loops, though in the latter casethe squaring preprocessing is unnecessary. The top PLL functions exactly as expected from previous sections: if the frequency of its oscillator is , then the phase estimates converge to a ramp with slope , that is,
where is the -intercept of the ramp. The values are then added to , the phase estimate in the lower PLL. The output of the bottom oscillator is
Effectively, the top loop has synthesized a signal that has the “correct” frequency for the bottom loop.Accordingly, . Since a sinusoid with frequency and “phase” is indistinguishable from a sinusoid with frequency and phase , these values can be used to generate a sinusoid that is aligned with in both frequency and phase. This signal can then be used to demodulatethe received signal.
Some M
atlab code to implement this dual PLL scheme is
provided by
dualplls.m
.
Ts=1/10000; time=5; t=0:Ts:time-Ts; % time vector
fc=1000; phoff=-2; % carrier freq. and phaserp=cos(4*pi*fc*t+2*phoff); % construct carrier = rBPF
mu1=.01; mu2=.003; % algorithm stepsizesf0=1001; % assumed freq. at receiver
lent=length(t); th1=zeros(1,lent); % initialize estimatesth2=zeros(1,lent); carest=zeros(1,lent);
for k=1:lent-1 th1(k+1)=th1(k)-mu1*rp(k)*...
sin(4*pi*f0*t(k)+2*th1(k)); % top PLL th2(k+1)=th2(k)-mu2*rp(k)*...
sin(4*pi*f0*t(k)+2*th1(k)+2*th2(k)); % bottom PLL carest(k)=cos(4*pi*f0*t(k)+2*th1(k)+2*th2(k)); % carrier estimateend
dualplls.m estimation of carrier via dual loop structure
(download file)
The output of this program is shown in
[link] .
The upper graph shows that
, the phase estimate
of the top PLL, converges to a ramp. The middle plot shows that
,
the phase estimate of the bottom PLL, converges to a constant.Thus the procedure is working. The bottom graph shows the
error between the preprocessed signal
rp
and a synthesized carrier
carest
. The parameters
f0
,
th1
, and
th2
can then be used to synthesize a cosine wave that has the
correct frequency and phase to demodulate the received signal.
Notification Switch
Would you like to follow the 'Software receiver design' conversation and receive update notifications?