Fir Filter Coefficients Calculation
The gadget spec URL could not be found
As it has turned out recently, TFilter is being used by many leading corporations in the
Semiconductor, Consumer Electronics, Medical Devices, Transport, and Power Generation industries,
major Universities, and an Aeronautics Research Agency (nonexhaustive list).
Should you require Additional Features, Enterprise Features or Services, please contact
peter аt almafa dоt org,
or fill out the feature request form.
This free online IIR design tool
The idea is that you will be able to perform engineering calculations in your browser,
share your work easily, and reuse what others have shared.
The sharing features are still missing, but you can already test the calculation engine.
Please note that the generated code is faster if the number of the taps
is a power of 2.
Fixed point precision of taps
C type of coefficients
C type of accumulator (must be big enough to store the sum of all taps multiplied by the
largest possible input signal)
Unroll convolution loop (only recommended if the number of taps is less than 40)
The basic idea behind the Window method of filter design is that the ideal frequency response of the desired filter is equal to 1 for all the pass band frequencies, and equal to 0 for all the stop band frequencies, then the filter impulse response is obtained by taking the Discrete Fourier Transform (DFT) of the ideal frequency response. Unfortunately, the filter response would be infinitely long since it has to reproduce the infinitely steep discontinuities in the ideal frequency response at the band edges. To create a Finite Impulse Response (FIR) filter, the time domain filter coefficients must be restricted in number by multiplying by a window function of a finite width. The simplest window function is the rectangular window which corresponds to truncating the sequence after a certain number of terms.
Rectangular windowing the time domain will result in a frequency spectrum with the width of the pass band close to the desired value but with side lobes appearing at the band edges (the effects of time domain windowing on the frequency spectrum are discussed in more detail in the Spectrum Analyser page).
To suppress the side lobes and make the filter frequency response approximate more closely to the ideal, the width of the window must be increased and the window function tapered down to zero at the ends. This will increase the width of the transition region between the pass and stop bands, but will lower the side lobe levels outside the pass band.
The KaiserBessel window provides a simple to calculate set of window coefficients, the parameters of which can be adjusted to produce the desired maximum side lobe level for a near minimal filter length. To demonstrate the power and simplicity of this technique the KaiserBessel filter generator is shown below. Simply set the sample rate and the type of filter desired, low pass, band pass or high pass, then set the frequency values of the edges of the filter and the minimum attenuation that is required in the stop band. Then press the "CALC FILTER" button, the filter coefficients are calculated and plotted along with a graph of the frequency response of the filter.
The actually formulae and the JavaScript code to implement them are presented at the bottom of the page.2.1.2 What is a linear phase filter?
"Linear Phase" refers to the condition where the phase response of the filter is a linear (straightline) function of frequency (excluding phase wraps at +/ 180 degrees). This results in the delay through the filter being the same at all frequencies. Therefore, the filter does not cause "phase distortion" or "delay distortion". The lack of phase/delay distortion can be a critical advantage of FIR filters over IIR and analog filters in certain systems, for example, in digital data modems.
2.1.3 What is the condition for linear phase?
FIR filters are usually designed to be linearphase (but they don't have to be.) A FIR filter is linearphase if (and only if) its coefficients are symmetrical around the center coefficient, that is, the first coefficient is the same as the last; the second is the same as the nexttolast, etc. (A linearphase FIR filter having an odd number of coefficients will have a single coefficient in the center which has no mate.)
Nonlinear phase, of course. Actually, the most popular alternative is "minimum phase". Minimumphase filters (which might better be called "minimum delay" filters) have less delay than linearphase filters with the same amplitude response, at the cost of a nonlinear phase characteristic, a.k.a. "phase distortion".
A lowpass FIR filter has its largestmagnitude coefficients in the center of the impulse response. In comparison, the largestmagnitude coefficients of a minimumphase filter are nearer to the beginning . (See dspGuru's tutorial How To Design MinimumPhase FIR Filters for more details.)
For an Ntap FIR filter with coefficients h(k), whose output is described by:
y(n)=h(0)x(n) + h(1)x(n1) + h(2)x(n2) + ... h(N1)x(nN1),
the filter's Z transform is:
H(z)=h(0)z0 + h(1)z1 + h(2)z2 + ... h(N1)z(N1) , or
The variable z in H(z) is a continuous complex variable, and we can describe it as: z=r·ejw, where r is a magnitude and w is the angle of z.
If we let r=1, then H(z) around the unit circle becomes the filter's frequency response H(jw). This means that substituting ejw for z in H(z) gives us an expression for the filter's frequency response H(w), which is:
H(jw)=h(0)ej0w + h(1)ej1w + h(2)ej2w + ... h(N1)ej(N1)w , or
Using Euler's identity, eja=cos(a)  jsin(a), we can write H(w) in rectangular form as:
H(jw)=h(0)[cos(0w)  jsin(0w)] + h(1)[cos(1w)  jsin(1w)] + ... h(N1)[cos((N1)w)  jsin((N1)w)] , or
Consider a DC (zero Hz) input signal consisting of samples which each have value 1.0. After the FIR's delay line had filled with the 1.0 samples, the output would be the sum of the coefficients. Therefore, the gain of a FIR filter at DC is simply the sum of the coefficients.
This intuitive result can be checked against the formula above. If we set w to zero, the cosine term is always 1, and the sine term is always zero, so the frequency response becomes:
Again, the key is the lack of feedback. The numeric errors that occur when implementing FIR filters in computer arithmetic occur separately with each calculation;
the FIR doesn't "remember" its past numeric errors. In contrast, the feedback aspect of IIR filters can cause numeric errors to compound with each calculation, as numeric errors are fed back.
The practical impact of this is that FIRs can generally be implemented using fewer bits of precision than IIRs. For example, FIRs can usually be implemented with 16 bits, but IIRs generally require 32 bits, or even more.
Because only a fraction of the calculations that would be required to implement a decimating or interpolating FIR in a literal way actually needs to be done.
Since FIR filters do not use feedback, only those outputs which are actually going to be used have to be calculated. Therefore, in the case of decimating FIRs (in which only 1 of N outputs will be used), the other N1 outputs don't have to be calculated. Similarly, for interpolating filters (in which zeroes are inserted between the input samples to raise the sampling rate) you don't actually have to multiply the inserted zeroes with their corresponding FIR coefficients and sum the result;
you just omit the multiplicationadditions that are associated with the zeroes (because they don't change the result anyway.)
In contrast, since IIR filters use feedback, every input must be used, and every input must be calculated because all inputs and outputs contribute to the feedback in the filter.
Boxcar  Boxcar FIR filters are simply filters in which each coefficient is 1.0. Therefore, for an Ntap boxcar, the output is just the sum of the past N samples. Because boxcar FIRs can be implemented using only adders, they are of interest primarily in hardware implementations, where multipliers are expensive to implement.
Hilbert Transformer  Hilbert Transformers shift the phase of a signal by 90 degrees. They are used primarily for creating the imaginary part of a complex signal, given its real part.
Differentiator  Differentiators have an amplitude response which is a linear function of frequency. They are not very popular nowadays, but are sometimes used for FM demodulators.

