[time-nuts] PLL Math Question

Bob Stewart bob at evoria.net
Thu Mar 13 15:10:27 EDT 2014


I just realized that I could do the math in sixteenths.  So, for 7/16ths multiply by 7 before shifting(i.e. dividing) and rounding.  That would probably give enough granularity.  I'll have to think about it.  It does open new doors.



> From: Dennis Ferguson <dennis.c.ferguson at gmail.com>
>To: Discussion of precise time and frequency measurement <time-nuts at febo.com> 
>Cc: Hal Murray <hmurray at megapathdsl.net> 
>Sent: Thursday, March 13, 2014 1:58 PM
>Subject: Re: [time-nuts] PLL Math Question
>Note that you can't do fixed-point computations exactly the same way
>you would do it in floating point, you often need to rearrange the equations
>a bit.  You can usually find a rearrangement which provides equivalent
>results, however.  Let's define an extra variable, x_sum, where
>    x_avg = x_sum * a_avg;
>The equation above can then be rewritten in terms of x_sum, i.e.
>    x_sum = x_sum * (1 - a_avg) + x;
>With an a_avg of 1/8 you'll instead be multiplying x_sum by 7, shifting
>it right 3 bits (you might want to round before the shift) and adding x.
>The new value of x_avg can be computed from the new value of x_sum with a
>shift (you might want to round that too), or you could pretend that x_sum
>is a fixed-point number with the decimal point 3 bits from the right.
>In either case x_sum carries enough bits that you don't lose precision.

More information about the time-nuts mailing list