[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Tracking PLL phase error
From: |
Andy Walls |
Subject: |
Re: [Discuss-gnuradio] Tracking PLL phase error |
Date: |
Tue, 19 Aug 2014 13:23:35 -0400 |
> Hello,
>
> I'm using the gr::analog::pll_carriertracking_cc() block to track a very
> stable signal of which I don't know the exact frequency and of which I
> want to detect (small!) phase oscillations.
>
> In my tests I discovered that the tracked signal has a residual phase
> modulation that I would not expect to find. I tried a simple test, very
> similar to the qa test for the block, and indeed I found that even for a
> constant frequency input signal the output has some residual phase
> oscillations. The amplitude of the oscillations depends on the pll
> bandwidth and on the frequency of the input signal, of the order of mrad
> for this examples (qa_pll_carriertracking.py).
>
> I need to get rid of those oscillations because they mask the phase
> signal I want to measure. I'm going to investigate the issue further,
> but does anyone have an idea about where those may come from?
Just a guess; try changing
pll_carriertracking_cc_impl::phase_detector()
to use atan2() or atan2f() instead of gr::fast_atan2f().
It should be better, but will probably be slower.
gr::fast_atan2f() is a lookup with linear interpolation:
" * [fast_atan2f] calculates the arc tangent with an
* average error of +/- 0.045 degrees.
*/"
0.045 degrees is 0.785 milliradians, I think.
Regards,
Andy
> I suspect
> the digital oscillator may introduce some numeric error that may explain
> them, but they seem quite big...
>
> Cheers,
> Daniele