Chapter 9 Carrier Acquisition and Tracking March 5, 2008
b[n] coder bit/ symbol transmit filter, pt(t) Modulator Channel, c(t) noise interference form other users LNA/ AGC Demodulator receive/matched filter, p R(t) sampler Equalizer slicer/ decoder ˆb[n] Carrier recovery Timing recovery
9.1 Non-Data Aided Carrier Recovery Methods
9.1.1 Binary PSK with a rectangular pulse-shape x BPSK (t) = x(t) cos(2πf c t) where x(t) = s[n]p T (t nt b ), n= s[n] {+1, 1} are the transmit symbols (bits).
9.1.1 Binary PSK with a rectangular pulse-shape x BPSK (t) = x(t) cos(2πf c t) where x(t) = s[n]p T (t nt b ), n= s[n] {+1, 1} are the transmit symbols (bits). When p T (t nt b ) = Π ( t T b ), x(t) = ±1, and thus x 2 BPSK(t) = cos 2 (2πf c t) = 1 2 + 1 2 cos(4πf ct).
9.1.2 Binary PSK with a band-limited pulse-shape y BPSK (t) = y(t) cos(2πf c t + θ 0 )
9.1.2 Binary PSK with a band-limited pulse-shape y BPSK (t) = y(t) cos(2πf c t + θ 0 ) y 2 BPSK(t) = 1 2 (y 2 rms + y ac (t))(1 + cos(4πf c t + 2θ 0 ))
9.1.2 Binary PSK with a band-limited pulse-shape (continued) MATLAB Script CRExp1.m Tb=0.0001; L=100; Ts=Tb/L; fc=100000; fs=1/ts; alpha=0.5; N=8*L; sigmav=0; c=1; s=sign(randn(1000,1)); pt=sr cos p(n,l,alpha); xt=conv(expander(s,l),pt); t=[0:length(xt)-1] *Ts; xt=cos(2*pi*fc*t).*xt; xr=conv(c,xt); xr=xr+sigmav*randn(size(xr)); xr2 = xr.ˆ2; [ X, F ]=spec analysis(xr2,fs); figure, axes( position,[0.1 0.25 0.8 0.5]), plot(f,x, k ) xlabel( FREQUENCY, Hz ), ylabel( AMPLITUDE )
9.1.2 Binary PSK with a band-limited pulse-shape (continued) 6 x 10 4 5 4 AMPLITUDE 3 2 1 0 5 4 3 2 1 0 1 2 3 4 5 FREQUENCY, Hz x 10 5
9.1.3 Quadrature Amplitude Modulation In the case of QAM, the modulation process results in the complex baseband signal where θ(t) = 2π f c t + θ 0. y(t) = (x R (t) + jx I (t))e jθ(t)
9.1.3 Quadrature Amplitude Modulation In the case of QAM, the modulation process results in the complex baseband signal y(t) = (x R (t) + jx I (t))e jθ(t) where θ(t) = 2π f c t + θ 0. Taking the 4th power of y(t), we get or y 4 (t) = ( x 4 R (t) + x 4 I (t) 6x 2 R (t)x 2 I (t) + j2x R (t)x I (t)(x 2 R (t) x 2 I (t))) e j4θ(t) y 4 (t) = m y4 e j4θ(t) + v(t)e j4θ(t) where [ ] m y4 = avg xr(t) 4 + xi 4 (t) 6xR(t)x 2 I 2 (t).
Numerical Study of m y4 m y4 = m y4 E [ y(t) 4 ] Table: Numerical values of the normalized mean m y4 for different QAM constellations and three choices of the roll-off factor α. Constellation α = 0.25 α = 0.5 α = 1 4-QAM/QPSK 0.65 0.79 0.95 16-QAM 0.37 0.43 0.49 64-QAM 0.33 0.37 0.43 256-QAM 0.32 0.36 0.42
MATLAB Script CRExp2.m Tb=0.0001; L=100; M1=20; Ts=Tb/L; fs=1/ts; fc=100000; Dfc=10; N=8*L; phic=0.5; sigmav=0; alpha=0.5; c=1; Nb=12000; b=sign(randn(nb,1)); M=input( QAM size (4, 16, 64, 256) = ); if M==4 s=b(1:2:end)+i*b(2:2:end); elseif M==16 s=2*b(1:4:end)+b(2:4:end)+i*(2*b(3:4:end)+b(4:4:end)); elseif M==64 s=4*b(1:6:end)+2*b(2:6:end)+b(3:6:end)+... j*(4*b(4:6:end)+2*b(5:6:end)+b(6:6:end)); elseif M==256 s=8*b(1:8:end)+4*b(2:8:end)+2*b(3:8:end)+b(4:8:end)+... j*(8*b(5:8:end)+4*b(6:8:end)+2*b(7:8:end)+b(8:8:end)); else print( Error! M should be 4, 16, 64 or 256 ); end pt=sr cos p(n,l,alpha); xbbt=conv(expander(s,l),pt); t=[0:length(xbbt)-1] *Ts; xt=real(exp(i*2*pi*fc*t).*xbbt); xr=conv(c,xt); xr=xr+sigmav*randn(size(xr)); t=[0:length(xr)-1] *Ts; y=2*exp(-i*(2*pi*(fc-dfc)*t-phic)).*xr; pr=pt; y=conv(y,pr); y=y(1:m1:end); fs1=fs/m1; y4=y.ˆ4; [ X, F ]=spec analysis(y4,fs1); figure, axes( position,[0.1 0.25 0.8 0.5]), plot(f,x, k ) xlabel( FREQUENCY, Hz ), ylabel( AMPLITUDE )
12 10 8 AMPLITUDE 6 4 2 0 2.5 2 1.5 1 0.5 0 0.5 1 1.5 2 2.5 FREQUENCY, Hz x 10 4
9.2 Non-Data Aided Carrier Acquisition and Tracking Algorithms
9.2.1 Coarse carrier acquisition MATLAB Script CRExp2.m (Extension 1) Coarse carrier acquisition and compensation [xmax,imax]=max(x); Dfc est=f(imax)/4; y1=y.*exp(-j*2*pi*dfc est*ts*m1);
9.2.2 Fine carrier acquisition and tracking y[n] ( ) 4 PLL 4 Interpolator e j
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n]
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n] We wish to synthesize and adjust φ to track θ. y[n] = cos(2πf c nt s + φ)
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n] We wish to synthesize y[n] = cos(2πf c nt s + φ) and adjust φ to track θ. Cost function: [ ( ) ] 2 ξ = E LP(x AM [n]y[n])
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n] We wish to synthesize y[n] = cos(2πf c nt s + φ) and adjust φ to track θ. Cost function: [ ( ) ] 2 ξ = E LP(x AM [n]y[n]) Here, x AM [n]y[n] = x[n] 2 and [ ] cos(θ φ)+cos(4πf c nt s +θ+φ) +ν[n] cos(2πf c nt s +φ) LP(x AM [n]y[n]) = x[n] 2 cos(θ φ) + ψ[n].
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n] We wish to synthesize y[n] = cos(2πf c nt s + φ) and adjust φ to track θ. Cost function: [ ( ) ] 2 ξ = E LP(x AM [n]y[n]) Here, x AM [n]y[n] = x[n] 2 and Hence, [ ] cos(θ φ)+cos(4πf c nt s +θ+φ) +ν[n] cos(2πf c nt s +φ) LP(x AM [n]y[n]) = x[n] 2 cos(θ φ) + ψ[n]. ξ = σ2 x 4 cos2 (θ φ) + σ 2 ψ
9.3 Costas Loop Costas loop for AM signal x AM [n] = x[n] cos(2πf c nt s + θ) + ν[n] We wish to synthesize y[n] = cos(2πf c nt s + φ) and adjust φ to track θ. Cost function: [ ( ) ] 2 ξ = E LP(x AM [n]y[n]) Here, x AM [n]y[n] = x[n] 2 and Hence, [ ] cos(θ φ)+cos(4πf c nt s +θ+φ) +ν[n] cos(2πf c nt s +φ) LP(x AM [n]y[n]) = x[n] 2 cos(θ φ) + ψ[n]. ξ = σ2 x 4 cos2 (θ φ) + σ 2 ψ Clearly, maximizing ξ leads to the desired tracking, i.e., the PLL.
9.3 Costas Loop Derivation of Costas loop for AM signals ˆξ = ( ) 2 LP(x AM [n]y[n]) φ[n + 1] = φ[n] + µ ˆξ φ ˆξ φ = 2LP (x AM[n]y[n]) (LP(x AM[n]y[n])) φ ( ) ˆξ φ = 2LP(x AM[n]y[n])LP x AM [n] y[n] φ φ[n + 1] = φ[n] + 2µLP(x AM [n] cos(2πf c nt s + φ[n])) LP (x AM [n] ( sin(2πf c nt s + φ[n]))).
9.3 Costas Loop Costas loop for AM signals
9.3 Costas Loop Linear model of Costas loop for AM signals φ ν [n] θ[n] ɛ[n] L(z) c[n] µz 1 φ[n] 1 z 1
9.3 Costas Loop Costas loop for QAM signals
9.3 Pilot Aided Carrier Acquisition Method We begin with y(t) = e j2π fct x(t) + ν(t), where X x(t) = s[n]h 0 (t nt b ) n=
9.3 Pilot Aided Carrier Acquisition Method We begin with y(t) = e j2π fct x(t) + ν(t), where X x(t) = s[n]h 0 (t nt b ) n= In discrete-time, when the samples are at the spacing T b, y[n] = x[n]e j2π fcnt b + ν[n]
9.3 Pilot Aided Carrier Acquisition Method We begin with y(t) = e j2π fct x(t) + ν(t), where X x(t) = s[n]h 0 (t nt b ) n= In discrete-time, when the samples are at the spacing T b, y[n] = x[n]e j2π fcnt b + ν[n] Assuming that the transmit symbols are periodic and have a period of N symbols, after a transient interval, x[n] = x[n + N]
9.3 Pilot Aided Carrier Acquisition Method We begin with y(t) = e j2π fct x(t) + ν(t), where X x(t) = s[n]h 0 (t nt b ) n= In discrete-time, when the samples are at the spacing T b, y[n] = x[n]e j2π fcnt b + ν[n] Assuming that the transmit symbols are periodic and have a period of N symbols, after a transient interval, x[n] = x[n + N] Next, we form the summation J = N X 2 J e j2π fcnt b n=n 1 y[n + N]y [n] and note that N X 2 n=n 1 x[n] 2
9.3 Pilot Aided Carrier Acquisition Method We begin with y(t) = e j2π fct x(t) + ν(t), where X x(t) = s[n]h 0 (t nt b ) n= In discrete-time, when the samples are at the spacing T b, y[n] = x[n]e j2π fcnt b + ν[n] Assuming that the transmit symbols are periodic and have a period of N symbols, after a transient interval, x[n] = x[n + N] Next, we form the summation J = Solving this for f c, we get N X 2 J e j2π fcnt b f c n=n 1 y[n + N]y [n] and note that N X 2 n=n 1 x[n] 2 1 2πNT b (J)
9.3 Pilot Aided Carrier Acquisition Method (continued) Lock Range: Correct operation of the above procedure requires that π < (J) < π
9.3 Pilot Aided Carrier Acquisition Method (continued) Lock Range: Correct operation of the above procedure requires that π < (J) < π This leads to the lock range f b 2N < f c < f b 2N
9.4 Data Aided Carrier Tracking Method received signal demodulation/ carrier and timing recovery equalizer s[n] PLL slicer ŝ[n] detected data e j phase detector loop filter ɛ[n] = ( s[n]ŝ [n]) I{ s[n]ŝ [n]} R{ s[n]ŝ [n]}
9.4 Data Aided Carrier Tracking Method (continued) MATLAB Script DDCR.m Tb=0.0001; L=100; Ts=Tb/L; fs=1/ts; fc=100000; Dfc=0; N=8*L; phic=pi/8; sigmav=0.05; alpha=0.5; c=1; b=sign(randn(2000,1)); s=b(1:2:end)+i*b(2:2:end); pt=sr cosp(n,l,alpha); xbbt=conv(expander(s,l),pt); t=[0:length(xbbt)-1] *Ts; xt=real(exp(i*2*pi*fc*t).*xbbt); xr=conv(c,xt); xr=xr+sigmav*randn(size(xr)); t=[0:length(xr)-1] *Ts; y=2*exp(-i*(2*pi*(fc-dfc)*t-phic)).*xr; pr=pt; y=conv(y,pr); y=y(1:l:end);y=y(9:end-8); % Extract the received signal samples % at the correct timing phase phi=zeros(size(y)); s1=zeros(size(y)); mu=0.01; for n=1:length(y)-1 s1(n)=y(n)*exp(-j*phi(n)); s2=sign(real(s1(n)))+j*sign(imag(s1(n))); % Slicer s12=s1(n)*s2 ; e=imag(s12)/real(s12); phi(n+1)=phi(n)+mu*e; end figure(1), plot(phi) figure(2), plot(y, * ), axis( square), hold on, plot(s1(1:end-1), *r ), plot([-2 2],[-2 2],[-2 2],[2-2]), hold off
9.4 Data Aided Carrier Tracking Method (continued) 0.4 0.35 0.3 0.25 φ[n] 0.2 0.15 0.1 0.05 0 0 100 200 300 400 500 n
9.4 Data Aided Carrier Tracking Method (continued) 2 1.5 1 Imaginary part 0.5 0 0.5 1 1.5 2 2 1 0 1 2 Real part