[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] gr_pll_carriertracking for atsc_fpll
From: |
Charles Swiger |
Subject: |
[Discuss-gnuradio] gr_pll_carriertracking for atsc_fpll |
Date: |
Wed, 14 May 2008 19:35:11 -0400 |
Is gr.pll_carriertracking_cc a suitable replacement for atsc_fpll? The
atsc one appears to have a loop filter that the carriertracking one does
not:
atsc_fpll:
float input = agc.scale (in[k]);
nco.step (); // increment phase
nco.sincos (&a_sin, &a_cos); // compute cos and sin
float I = input * a_sin;
float Q = input * a_cos;
out[k] = I;
float filtered_I = afci.filter (I);
float filtered_Q = afcq.filter (Q);
// phase detector
float x = atan2 (filtered_Q, filtered_I);
nco.adjust_phase (alpha * x);
nco.adjust_freq (beta * x);
pll_carriertracking:
error = phase_detector(iptr[i],d_phase);
d_freq = d_freq + d_beta * error;
d_phase = mod_2pi(d_phase + d_freq + d_alpha * error);
gr_sincosf(d_phase,&t_imag,&t_real);
optr[i] = iptr[i] * gr_complex(t_real,-t_imag);
If we can use a complex pll it would eleminate one upconverter and lower
some sampling rates. It kinda works with lots of errors - comparison of
their output here: http://www.swigerco.com/pll_compare.html
--Chuck
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Discuss-gnuradio] gr_pll_carriertracking for atsc_fpll,
Charles Swiger <=