there seems to be a bug in the costas loop. As far as I understand, in case of 
nonzero carrier offset, each incoming sample should be rotated with a linear 
increasing phasor (assuming a constant offset). This is done with the 
following code:

void
gr_mpsk_receiver_cc::mm_sampler(symbol) {
  d_phase += d_freq;
  nco = gr_expj(d_phase+d_theta);
  sample = nco*symbol;
}

This looks fine so far for me (although I dont understand why theta is added 
every time, and not once in the initialization of d_phase ...), but there is 
also the following:

void
gr_mpsk_receiver_cc::phase_error_tracking(sample) {
...
  d_phase += d_freq + d_alpha*phase_error;
...
}

So d_phase gets incremented by d_freq on every incoming sample, and once every 
symbol.

Any comments, is this actually a bug?

Stefan

-- 
Stefan Brüns  /  Bergstraße 21  /  52062 Aachen
mailto:lurch at gmx.li  http://www.kawo1.rwth-aachen.de/~lurchi/
   phone: +49 241 53809034     mobile: +49 151 50412019


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to