> 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 _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio