discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] PLL error term related and limiting it to {-1, 1}


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] PLL error term related and limiting it to {-1, 1}
Date: Sat, 26 Nov 2011 12:28:43 -0500

On Fri, Nov 25, 2011 at 3:57 AM, Marcus M <address@hidden> wrote:
Hi,
In the PLL/Costas algorithms why is the error term limited between {1,-1}? I understand the need for limiting but how was the value '1' chosen? In the following,

float
gr_costas_loop_cc::phase_detector_2(gr_complex sample) const
{
  return (sample.real()*sample.imag());
}

the phase detector returns the product of the I and Q parts of the sample which means that the phase error detected is dependent upon the signal sample amplitude and if the amplitude of the signal is greater than 1, the returned error ought to be greater than 1 in most of the cases and limiting the error in such cases defeats the purpose. What am I missing here as this algorithm always seems to work?

Thanks

It's a bit of an unspoken rule that the signals into these blocks should be normalized (although they are fairly tolerant of signals > 1, but probably < 10). Any signal coming from a UHD source should be with the +/-1 range, unless it is manipulated strangely before that.

There is also the point here that the analysis of these loops really depends on a small-scale analysis of the phase difference, where you can approximate sin(theta) = theta. So returning large values doesn't actually make sense mathematically. Having said that, the actual implementations are also built such that even with large scale offsets, they are still monotonic and therefore point the error in the correct direction.

That explanation is a bit hand-wavy, but hopefully it makes some intuitive sense if you've study these kinds of control loops.

Thanks for the interesting question, though!

Tom

 
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]