[Top][All Lists]

## Re: [Discuss-gnuradio] pll_refout_cc - finding optimum alpha & beta ??

 From: Eric Blossom Subject: Re: [Discuss-gnuradio] pll_refout_cc - finding optimum alpha & beta ?? Date: Thu, 16 Mar 2006 14:39:49 -0800 User-agent: Mutt/1.5.9i

```On Thu, Mar 16, 2006 at 05:24:26PM -0500, Charles Swiger wrote:
> On Thu, 2006-03-16 at 12:35 -0800, Eric Blossom wrote:
>
> > Chuck, I could have this totally wrong (the code definitely needs some
> > comments), but it's a second order control loop.  We're adjusting both the
> > estimates of the phase and the derivative of the phase (commonly
> > called frequency ;))
> >
> > I believe that setting
> >
> >   alpha = some value
> >   beta = 0.25 * alpha * alpha
> >
> > will result in a critically damped control loop.
> > Try some experiments that maintain this relationship.
> >
>
> Nothing meaningful.
>
> Here's the only place they're used:
>
>     d_freq = d_freq + d_beta * error;
>     d_phase = mod_2pi(d_phase + d_freq + d_alpha * error);
>
> It's way over my head but is d_freq supposed to be in the d_phase
> calculation, 2nd line? phase is mod_2pi but freq can be a very big
> number, like mod_2pi(100000 + 1.572849). That is I'm USING very big
> numbers for max_freq and min_freq - don't suppose they're normalized
> somehow.

OK.  I can see why that would be a problem.  mod_2pi is optimized for
the expected "close in case" (symmetric around zero), thus the phase
isn't *really* getting folded down to [-pi,pi].

Try changing mod_2pi to make the bounds check and then compute the
modulus if it needs to using division, floor, multiplication and
subtraction. It's not cheap, but it'll probably compute the right