Field Guide · algorithm

Also known as: halfband filter, half-band FIR

A half-band filter is a linear-phase FIR filter whose frequency response is antisymmetric about one quarter of the sample rate (f_s/4), so its passband and stopband are mirror images and — the useful consequence — every other tap is exactly zero.1 That structural zero means a half-band filter does about half the work of an ordinary FIR of the same length, which makes it the standard building block for efficient 2:1 decimation and interpolation stages in software radio front-ends.

tap index n (even taps = 0 except centre) h[0] non-zero at odd n ○ = zero tap
A half-band impulse response: a dominant centre tap, tapering non-zero taps at odd offsets, and forced-zero taps at every even offset — so nearly half the multiplies vanish.

How it works

Design a symmetric low-pass FIR with its −6 dB cutoff exactly at f_s/4 and equal passband/stopband ripple. The half-band constraint forces the impulse response to satisfy h[n] = 0 for all even n except the centre tap, which equals 0.5. Intuitively, the response has odd symmetry about the (0.5, f_s/4) point: whatever it passes below f_s/4 it must reject by the same amount above it, and that pins the even taps to zero.

Two things follow directly:

  • Half the arithmetic. With ~N/2 of the N taps zero, you skip those multiplies entirely. Combined with FIR coefficient symmetry (fold-and-add the mirror taps), a half-band filter needs roughly N/4 multiplies per output.
  • Natural fit for 2:1. Its cutoff at f_s/4 is exactly the new Nyquist edge after halving the rate, so it is the correct anti-alias filter for a decimate-by-2 step (and the correct anti-image filter for an interpolate-by-2 step). Because the zero taps land on the samples you are about to discard, polyphase form skips them too.

In practice

Large rate changes are built as a cascade of half-band stages, each halving the rate. Early stages (still at a high rate, where most energy is far from the band of interest) can use short, gentle half-bands; the final stage nearest the signal uses a longer, sharper one. This “decreasing-length” chain keeps the total multiply-rate tiny compared with one big filter at the input rate. Half-bands pair well with a CIC filter doing the bulk, coarse decimation and a polyphase half-band cleaning up the passband droop and providing the last 2:1. Their main limitation is that the fixed f_s/4 transition band offers no free choice of cutoff — you get 2:1 or you cascade.

Relevance to SDR

Half-band chains are ubiquitous in SDR hardware and software: RTL-SDR and other receivers decimate their raw ADC stream toward the channel rate through cascaded half-bands, and virtually every SDR toolkit ships a half-band decimator. In a trunking receiver they help bring a multi-megahertz capture down to the 48 kHz-class channel rate used by C4FM/π-4-DQPSK decoders. GopherTrunk’s multirate decimation path relies on the same principle — do the sharpest filtering only at the lowest rate — even where the exact stages are general FIR/CIC rather than strictly half-band.

Sources

  1. Half-band filter — Wikipedia, on the f_s/4-symmetric FIR with alternate zero taps used for efficient 2:1 rate change. 

See also