Bug in mspk_receiver_cc?

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

On Fri, Mar 6, 2009 at 10:29 AM, Stefan
Brüns[email protected] wrote:

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

Any comments, is this actually a bug?

Yes. Your fix was applied to the trunk today as r10702.

Thanks!

Johnathan