DSPRelated.com
Forums

PLL convergence problem

Started by yoni...@gmail.com October 16, 2005
I have a "phase detector" for timing synchronization based on 4th order
non-linearity. I use a very narrow loop-filter - 400Hz when the
sampling rate is 10MHz.
The S-Curve for the detector shows nice curve (I use ~10000 averages
for every point in the S-Curve).
When I use the detector as is, the loop fails to converge.

To cause the loop to converge I'm using a simple leaky integrator with
the following structure y[n] = 0.9*y[n-1] + 0.1*x[n], to filter the
detector output before entering it into the loop filter.

I don't understand why the leaky integrator causes the loop to
converge. Basically, the leaky integrator turns the close loop filter
from second order to third order, but If I plot the frequency response
of the second and third order filter I see no much deference.

I also don't know how to investigate what is happening. I tried to use
the linear equivalent closed loop filter in matlab, but because the
filter is sow narrow, it's impulse response is not stable because the
poles of the filter are very close to the unit circle.

Thanks,
Yoni.

yoni.baron@gmail.com wrote:
> I have a "phase detector" for timing synchronization based on 4th order > non-linearity. I use a very narrow loop-filter - 400Hz when the > sampling rate is 10MHz. > The S-Curve for the detector shows nice curve (I use ~10000 averages > for every point in the S-Curve). > When I use the detector as is, the loop fails to converge. > > To cause the loop to converge I'm using a simple leaky integrator with > the following structure y[n] = 0.9*y[n-1] + 0.1*x[n], to filter the > detector output before entering it into the loop filter. > > I don't understand why the leaky integrator causes the loop to > converge. Basically, the leaky integrator turns the close loop filter > from second order to third order, but If I plot the frequency response > of the second and third order filter I see no much deference. > > I also don't know how to investigate what is happening. I tried to use > the linear equivalent closed loop filter in matlab, but because the > filter is sow narrow, it's impulse response is not stable because the > poles of the filter are very close to the unit circle.
Look at the delay through the narrow filter. Control systems need to work with what's happening NOW, not with what happened THEN. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
I don't quite understand what you say.
As long that the loop bandwidth is larger then
the frequency offset, the loop should converge to the right frequency.

In my case the symbol rate error is constant, so there is no THEN and
NOW. they 
are the same.

Yoni.

yoni.baron@gmail.com wrote:
> I don't quite understand what you say. > As long that the loop bandwidth is larger then > the frequency offset, the loop should converge to the right frequency. > > In my case the symbol rate error is constant, so there is no THEN and > NOW. they > are the same.
Delay converts NOW to THEN. Promptness is important. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
yoni.baron@gmail.com wrote:

> I have a "phase detector" for timing synchronization based on 4th order > non-linearity. I use a very narrow loop-filter - 400Hz when the > sampling rate is 10MHz. > The S-Curve for the detector shows nice curve (I use ~10000 averages > for every point in the S-Curve). > When I use the detector as is, the loop fails to converge. > > To cause the loop to converge I'm using a simple leaky integrator with > the following structure y[n] = 0.9*y[n-1] + 0.1*x[n], to filter the > detector output before entering it into the loop filter. > > I don't understand why the leaky integrator causes the loop to > converge. Basically, the leaky integrator turns the close loop filter > from second order to third order, but If I plot the frequency response > of the second and third order filter I see no much deference. > > I also don't know how to investigate what is happening. I tried to use > the linear equivalent closed loop filter in matlab, but because the > filter is sow narrow, it's impulse response is not stable because the > poles of the filter are very close to the unit circle. > > Thanks, > Yoni. >
It sounds like your phase detector has a lot of noise that's throwing your loop out of whack. When you used your 10000 averages to find the detector characteristic did you look at how much random noise comes out? By running the signal through the low-pass filter you'd be cleaning up such noise. What are you using for a loop filter? Is it a PID or just a PI filter? Even if it's just a PI filter knocking the instantaneous noise down by a factor of 10 must be doing something for you. Your gains must be very low indeed -- are you hitting a nonlinearity in your NCO or in your loop filter that's causing problems? Overflow, perhaps? If you're really closing the loop at 400Hz then you should be able to filter this much more heavily. If you've already solved your problem then there's no need, of course, but if you've only partially solved it you should be able to bring your low-pass filter pole down to 4kHz fairly safely -- i.e. y[n] = y[n-1] + 0.0025(x[n] - y[n-1]). Note that with the pole value so low you may have underflow problems where you didn't before. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Jerry Avins wrote:

> yoni.baron@gmail.com wrote: > >> I don't quite understand what you say. >> As long that the loop bandwidth is larger then >> the frequency offset, the loop should converge to the right frequency. >> >> In my case the symbol rate error is constant, so there is no THEN and >> NOW. they are the same. > > > Delay converts NOW to THEN. Promptness is important. > > Jerry
Jerry: Be kind, he obviously only does control loops out of cookbooks. Yoni: This is a problem in closed-loop control. PLL's have their own peculiarities, but much of their basic behavior is easily described with linear feedback control theory. Some study in that area would be helpful. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Jerry Avins wrote:
> yoni.baron@gmail.com wrote: > > I don't quite understand what you say. > > As long that the loop bandwidth is larger then > > the frequency offset, the loop should converge to the right frequency. > > > > In my case the symbol rate error is constant, so there is no THEN and > > NOW. they > > are the same. > > Delay converts NOW to THEN. Promptness is important.
This reminds me of a "learning experience" I had with a tracking receiver design about 13 years ago. We could control the L.O. frequency in a downconverter to produce a constant I.F. output frequency, even though the carrier could vary by about 1/2 MHz (due to doppler, etc.). A narrowband 455kHz I.F. filter with a group delay of some ms was in the feedback loop. The system would sometimes lock several kHz (?) away from where it was supposed to be. I eventually found a paper that described the problem. I don't remember all the details, but "As long that the loop bandwidth is larger then the frequency offset, the loop should converge to the right frequency" is definitely false in the general case. A combination of high gain and delay caused the problem. Perhaps this is why the leaky integrator helped - it reduced the gain at low frequencies. Regards, Allan
On 16 Oct 2005 10:38:08 -0700, allanherriman@hotmail.com wrote:

>This reminds me of a "learning experience" I had with a tracking >receiver design about 13 years ago. We could control the L.O. >frequency in a downconverter to produce a constant I.F. output >frequency, even though the carrier could vary by about 1/2 MHz (due to >doppler, etc.). >A narrowband 455kHz I.F. filter with a group delay of some ms was in >the feedback loop. The system would sometimes lock several kHz (?) >away from where it was supposed to be. > >I eventually found a paper that described the problem. I don't >remember all the details, but "As long that the loop bandwidth is >larger then >the frequency offset, the loop should converge to the right frequency" >is definitely false in the general case. > >A combination of high gain and delay caused the problem. Perhaps this >is why the leaky integrator helped - it reduced the gain at low >frequencies.
Depending on what signals you were locking it probably just found a convenient false-lock point. Another way to prevent this sort of thing is to try to design the loop to have only one stable operating point, and that point being the desired lock frequency. Sometimes even just a dip in the overal tracking response can create essentially the same condition as an equalizer that has found a local minimum in the convergence space. It'll sit there and not move unless something perturbs it to find a better lock point. The leaky integrator is sometimes enough to make these local minima or false lock points just unstable enough to make it move on to the next (hopefully correct) stable operating point. Anyway, that's just another way to look at it. Eric Jacobsen Minister of Algorithms, Intel Corp. My opinions may not be Intel's opinions. http://www.ericjacobsen.org
You only need a multiplier for a phase detector - nothing that fancy.
You need to watch stabilty - the phase margin so you will need to know
the complete open loop transfer function. Do a Bode plot of your filter
+ VCO (this is an integrator + gain) and find the phase margin.If it is
too small then you either need to drop the overall loop gain or add a
phase-advance (lead).

Neebad

Hi Tim, Eric

Thanks for the reply.

I use a PI filter. all the design is floating point.
When I plot the PSD of the error metric I see that the error spectral
line is at about 10db higher then
the self noise around it.

I see no overflows in either the NCO or the loop accumulator.

I still don't see how a small leaky integrator that has cutoff
frequency way higher then that of the
closed loop filter can cause any difference. The frequency response of
both loops - the one with the leaky integrator
and the one without is almost identical. The only difference is that
the one with the leaky integrator has a little
higher stopband attenuation.

I don't have any extra delay in the loop except for the normal PI loop
delays (i.e for the accumulators) and one for the detector.

As for the false lock theory, Is there a way to check if I this is the
case?

Thanks,
Yoni.