Log in

Digital IIR Filters - Goldtronics [entries|archive|friends|userinfo]

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Digital IIR Filters [Sep. 24th, 2008|04:11 pm]
[Tags|, , , , , , ]

I much prefer digital over analog, and I just finished my DSP2 class. I also love MATLAB.
For my final project, I decided to explore the effects of quantization of the coefficients of various structures of infinite impulse response filters.

Simply put, I created a lowpass Chebyshev Type I filter (order 10, fc = 0.4 [normalized]). MATLAB outputs the numerator and denominator coefficients in Direct Form. I found some MATLAB programs which transform the direct form into cascade, parallel, and lattice-ladder structures. These structures are just a way of arranging/manipulating the coefficients; the frequency/phase response doesn't change. So why do these different structures exist? Because in a real system, we can't have infinite precision numbers. MATLAB outputs the coefficients as 64-bit Doubles, which for our sake, are "infinite" precision.

(I also like low power, low cost, low speed microcontrollers (i.e. 8-,16-bit Microchip PICs). Running a 64-bit floating point routine on one of these 20MHz beasts would take forever, so we quantize our filter coefficients to something more reasonable, like 8 or 16 bits.)

Because the coefficients used to implement the filter are not exact, the resulting poles and zeros will, generally, be different from the desired poles and zeros. As a consequence, the resulting filter will have a different frequency response than the one desired. If the poles are close to the unit circle, the stability of the filter may also be affected.

The different filter structures have varying sensitivity to the filter coefficient quantization. I quantized the coefficients in fixed point, from 6-24 bits.
Performance was measured by mean squared error in the passband only, and mean squared error across the whole frequency band. This later turned out to be unnecessary, as both MSEs are pretty much the same.

The direct form structure performed the worst, by far. The cascade, parallel, and lattice-ladder all performed about the same, and all performed really well.

The cascade filter closely matched the frequency and phase response of the original filter, while the parallel and lattice-ladder responses began to level out in the high frequency range (however they were still down about -50dB at 6-bits (and down even lower as the number of quantization bits increased), so this deviation isn't as dramatic as it looks in the frequency responses).

Full paper is here. Hopefully, my webserver is working.