General Purpose FIR Utility

June 2, 2021

The general purpose FIR filter (GP-FIR) utility is a tool for data filtering with a finite impulse response (FIR) filter.

Feed-forward System

Unlike the IIR filter, the FIR filter does not use feedback. An FIR filter often uses more multiplication and addition operations to compensate for its data flow impediment, sometimes upwards of 200 times as many.

However, designing an FIR filter with a linear phase is simple because of its feed-forward-only data flow. A linear phase ensures that all frequency components regardless of frequency will be delayed by the same amount of time.

general purpose FIR filter

Block diagram of a 2nd-order FIR filter.

Coefficients

hamming FIR coefficients

Coefficients for an FIR filter, such as those in the above illustration, may be generated by ObserVIEW based on the user’s desired frequency response.

Alternatively, FIR coefficients may be copied and pasted from a third-party software package such as MATLAB® or GNU Octave® or a website.

Trimming Tails

Filtering with a high coefficient count FIR filter introduces long “tails” at the beginning and end of the processed data. In ObserVIEW, these can be trimmed off the filtered data by selecting the Auto Trim Tails check box when exporting time waveform data.

export options in ObserVIEW

Export options in ObserVIEW. The Auto Trim Tails check box is the lowermost option.

High coefficient count FIR filters have most of their energy at the center of the coefficient sequence and very little in the tails. Filtering a data sequence with a filter is the equivalent of convolving the FIR filter coefficients with the time data. Convolution involves dragging the filter coefficient sequence along the time sequence.

tails on an FIR filter

Tails at the beginning and end of the processed data.

If the FIR filter’s tails are long, then it will take time for its high-energy middle to meet up with the data. Thus, it will introduce long tails to the front of the filtered data. Likewise, if a long tail FIR is dragged off the data sequence, a long tail will be introduced into the later part of the filtered data.