Central to the spectrum analyzer are the various
bandpass filters at the different critical frequencies which process samples
of input signals. Assuming a A/D module (which, in our case, was supplied
by the AT90S8535 microcontroller), we basically had to implement the various
filters for signal processing.
Note that the above transfer function implements an Infinite Impulse Response filter. Basically, an IIR filter takes as inputs previous outputs as well as current and previous inputs to produce the current, filtered output. Hence, a feedback loop is present. The above transfer function transforms, in the time domain, to a difference equation. The 'a's and 'b's in the above transfer function translate to the coefficients of the various terms in the difference equation. As we can see from the above, H(z) gives an expression for an n-th order filter.
Values for a and b above can be determined from computing the poles of the above transfer function.
p0 and p1 are the poles of this 2nd order band-pass filter while the z's represent the zeroes. '*' denotes complex conjugation. Hence, a two pole filter with nonzero a coefficient values and 3 b values can be formed by expanding the denominator and numerator respectively of the above equation. The poles p are of the form
where A is the magnitude and theta is the angle made by the whole in the unit circle z = 1 in the complex plane. Poles p were calculated based on the following relationship:
where fs is the sampling frequency of the system -
9 kHz in our case. fc is the desired critical frequency.
The transfer function of an FIR filter transforms, in the time domain,
to a difference equation that depends only on the current and previous
input values. Hence, feedback is not present in the construction of FIR
filters. This further simplifies computation. Essentially, the FIR filter
transfer function gives rise to the following:
where the b values are the respective coefficients in front of n (thus, an n-th order FIR filter) input samples.
FIR filters also have the property that they are not prone to instability, i.e. due to the finite-length impulse responses, the poles of the transfer function H(z) are guaranteed to be at 0 within the unit circle in the complex plane. Hence, stability of the filter is guaranteed. Stability is not always guaranteed in IIR filters, and this was most clearly noted when several filtered output values 'blew up'.
The figure below illustrates the magnitude and phase responses of Finite Impulse Response filters:
Note the linear phase response in the lower plot.
We noticed further that Butterworth filters are characterized by a magnitude
response that is maximally flat in the passband and monotonic overall.
Butterworth filters sacrifice rolloff steepness for monotonicity in
the pass- and stopbands. Unless the smoothness of the Butterworth filter
is needed, an elliptic or Chebyshev filter can generally provide steeper
rolloff characteristics with a lower filter order.
Furthermore, due to the feedback loop present in implementing IIR filters, we decided that Finite Impulse Response filters would better suit our purposes. This belief was strengthened by the idea that FIR filters are not succeptible to instability.
After making the signal processing system to non-realtime, we decided
to construct a 100-length FIR filter. This was done with aid of MATLAB.
We noticed that MATLAB designs an FIR filter using the window method. The
window method begins with an ideal lowpass filter, whose impulse response
is of infinite duration, and truncates it, producing a finite impulse response.