>> For those who aren't familiar with this trick, it's easy to make a low
>> pass filter in software:
>>  X = X*(1-k) + k*new

> Designing filters seems like an art.  What is the frequency response of the
> above for different values of k?  I tend to like FIR filters because I think
> I understand them better.  I think yours is an IIR. 

It's a simple 1 pole filter.  The corner frequency scales with the sample 
rate.  If you have N samples per second and k is 1/K, then the time constant 
is K/N seconds.  So with 1 PPS and an 8 bit shift, you get a time constant of 
256 seconds.

It's just a trick to add to your collection.  It's only advantage is that it 
doesn't take many CPU cycles.  It's just shifts and adds, no multiplies or 
floating point.  I first saw it used to compute round trip times on early 
networking code.

You do have to get the scaling right: if k is right shift by 8 bits, X has to 
be stored shifted left 8 bits so the right shift doesn't throw away too much 
info.  You may need to store X shifted farther left, depending on the 
accuracy you need.  (Or maybe you don't care about accuracy and don't need to 
shift.)

It may be easier to think of X and a fraction with the binary point on the 
left of the word.  Then instead of storing X shifted left, the question is 
how wide does X have to be.




-- 
These are my opinions, not necessarily my employer's.  I hate spam.




_______________________________________________
time-nuts mailing list -- [email protected]
To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
and follow the instructions there.

Reply via email to