# [time-nuts] PLL Math Question

Daniel Mendes dmendesf at gmail.com
Thu Mar 13 02:35:02 EDT 2014

```Em 13/03/2014 01:35, Bob Stewart escreveu:
> Hi Daniel,
>
> re: FIR vs IIR
>
>
> I'm not a DSP professional, though I do have an old Smiths, and I've read some of it.  So, could you give me some idea what the FIR vs IIR question means on a practical level for this application?  I can see that the MA is effective and easy to code, but takes up memory space I eventually may not have.  Likewise, I can see that the EA is hard to code for the general case, but takes up little memory.  Any thoughts would be appreciated unless this is straying too far from time-nuts territory.
>
>

FIR = Finite Impulse Response

It means that if you enter an impulse into your filter after some time
the response completely vanishes. Let´s have an example:

your filter has coefficients 0.25 ; 0.25 ; 0.25 ; 0.25   (a moving
average of length 4)

instead we could define this filter by the difference equation:

y[n] = 0.25x[n] + 0.25x[n-1] + 0.25x[n-2] + 0.25x[n-3]    (notice that
Y[n] can be computed by looking only at present and past values of x)

your data is  0;  0; 1; 0; 0; 0; 0 ...... (there´s an impulse of
amplitude 1 at n= 2)

0; 0; 0.25; 0.25; 0.25; 0.25; 0; 0; 0; ..... (this is the convolution
between the coefficients and the input data)

after 4 samples (the length of the filter) your output completely
vanishes. This means that all FIR filters are BIBO stable (BIBO =
bounded input, bounded output... if you enter numbers not infinite in
the filter the output never diverges)

IIR = infinite Impulse Response

It means that if you enter an impulse into your filter the response
never settle down again (but it can converge). Let´s have an example:

your filter cannot be described by coefficients anymore because it has
infinite response, so we need a difference equation. Let´s use the one
provided before for the exponential smoothing with a_avg = 1/8:

x_avg = x_avg + (x - x_avg) * 1/8;

this means:

y[n] = y[n-1] + (x[n] - y[n-1]) * 1/8

y[n] = y[n-1] - 1/8*y[n-1] + 1/8*x[n]

y[n] = 7/8*y[n-1] + 1/8*x[n]

you can see why this is different from the other filter: now the output is function not only from the present and past inputs, but also from the past output(s).

Lets try the same input as before:

your data is  0;  0; 1; 0; 0; 0; 0 ...... (there´s an impulse of amplitude 1 at t= 2)

y = 0 = 7/8*y[-1] + 1/8*x  (i´m assuming that y[-1] = 0.. and x is zero)
y = 0 = 7/8*y + 1/8*x
y = 1/8 = 7/8*y + 1/8*x (x = 1)
y = 7/64 = 7/8*y + 1/8*x (x = 0) = 0.109
y = 49/512 = 7/8*y + 1/8*x (x = 0) = 0.095
y = 343/4096 = 7/8*y + 1/8*x (x = 0) = 0.084

You can see that without truncation this will never go to zero again.

Usually you can get more attenuation with a IIR filter having the same computational complexity than a FIR filter but you need to take care about stability and truncation. Well, i´ll just copy here the relevant part from wikipedia about advantages and disadvantages:

The main advantage digital IIR filters have over FIR filters is their
efficiency in implementation, in order to meet a specification in terms
of passband, stopband, ripple, and/or roll-off. Such a set of
specifications can be accomplished with a lower order (/Q/ in the above
formulae) IIR filter than would be required for an FIR filter meeting
the same requirements. If implemented in a signal processor, this
implies a correspondingly fewer number of calculations per time step;
the computational savings is often of a rather large factor.

On the other hand, FIR filters can be easier to design, for instance, to
match a particular frequency response requirement. This is particularly
true when the requirement is not one of the usual cases (high-pass,
low-pass, notch, etc.) which have been studied and optimized for analog
filters. Also FIR filters can be easily made to be linear phase
<http://en.wikipedia.org/wiki/Linear_phase> (constant group delay
<http://en.wikipedia.org/wiki/Group_delay> vs frequency), a property
that is not easily met using IIR filters and then only as an
approximation (for instance with the Bessel filter
<http://en.wikipedia.org/wiki/Bessel_filter>). Another issue regarding
digital IIR filters is the potential for limit cycle
<http://en.wikipedia.org/wiki/Limit_cycle> behavior when idle, due to
the feedback system in conjunction with quantization.

Daniel

```