Field Guide · algorithm

Also known as: FIR, finite impulse response filter

A FIR (finite impulse response) filter produces each output sample as a weighted sum of the most recent input samples — a tapped delay line multiplied by a fixed set of coefficients (taps) and added up.1 It is the most common digital filter in SDR because, having no feedback, it is unconditionally stable and can be made to have exactly linear phase — a flat group delay that preserves pulse shapes, which matters a great deal for digital modulation where waveform timing carries the data.

z⁻¹z⁻¹z⁻¹z⁻¹ ×a₀×a₁×a₂×a₃ Σ out input →
A FIR filter delays the input, scales each tap by a coefficient, and sums the products — a direct implementation of convolution with the filter's impulse response.

How it works

The output is the convolution of the input with the tap set: y[n] = Σ aₖ·x[n−k]. The coefficients are the filter’s impulse response, and their discrete Fourier transform is its frequency response — so choosing taps is choosing exactly which frequencies pass and which are rejected. There is no recursion and no internal state beyond the delay line, so a bounded input always yields a bounded output: a FIR can never oscillate or blow up.

Its signature property is linear phase. If the taps are symmetric (or antisymmetric) about their centre, every frequency is delayed by the same amount, so the filter shifts the whole signal in time without distorting its shape. That is essential for pulse-shaped digital signals, where a frequency-dependent delay would smear symbols into one another. The price is cost: a sharp transition band needs many taps, and each output costs one multiply-accumulate per tap, so a selective FIR is far more arithmetic than an equivalent IIR filter.

Variants: designing and speeding up FIRs

  • Windowing. Start from the ideal (infinite) impulse response — e.g. a sinc for a brick-wall low-pass — truncate it, and taper the ends with a window function (Hamming, Blackman, Kaiser) to trade main-lobe width against stop-band ripple. Simple and intuitive.
  • Parks–McClellan (Remez / equiripple). An optimal algorithm that spreads the approximation error evenly across the band, giving the shortest FIR that meets a given ripple and transition spec — the standard tool for demanding channel filters.2
  • Polyphase decomposition. When a FIR is combined with rate change, splitting its taps into sub-filters lets it skip the arithmetic for samples that will be discarded, forming the polyphase filter bank at the heart of efficient decimators, interpolators, and channelizers.
  • Fast convolution. For very long FIRs, block-processing methods such as overlap-add / overlap-save perform the convolution through the FFT, cutting the cost per output sample dramatically.

In practice

FIR filters do the selective work everywhere in an SDR chain: channel selection, anti-alias filtering before decimation, receive pulse-shaping, and CIC droop compensation. When phase linearity and stability matter more than raw efficiency — which in a demodulator they usually do — the FIR is the default choice.

Relevance to SDR

FIR filtering is pervasive in GopherTrunk’s DSP: the channelizer’s channel-select and anti-alias stages, half-band decimation, and receive matched/pulse-shaping filters are all FIRs, chosen for their linear phase and guaranteed stability. Their polyphase forms are what make simultaneous multi-channel decoding affordable on a CPU.

Sources

  1. Finite impulse response — Wikipedia, on the non-recursive, always-stable filter, its convolution form, and linear phase. 

  2. Parks–McClellan filter design algorithm — Wikipedia, on the equiripple/Remez method for optimal FIR design. 

See also