Field Guide · algorithm

Also known as: CIC filter, cascaded integrator-comb filter, Hogenauer filter

A CIC filter (cascaded integrator–comb) is a digital filter built from only integrators and combs — no multipliers, just adders and delays — which makes it the cheapest practical way to change sample rate by a large ratio.1 Introduced by Eugene Hogenauer in 1981, it is the standard first stage of decimation in SDR hardware and the front of software channelizers, where an incoming stream must be brought down by tens or hundreds to one before any multiply-heavy filtering is affordable.2

↓ R comb comb integrators @ high rate combs @ low rate rate/Routput
A CIC decimator: integrators accumulate at the high rate, the sample rate drops by R, then combs difference at the low rate — all with adders and delays, no multipliers.

How it works

A single integrator is a running accumulator, y[n] = y[n−1] + x[n]; a single comb is a delayed difference, y[n] = x[n] − x[n−M]. Cascade N integrators, drop the rate by R, then cascade N combs and the two halves collapse — through the identity that an accumulate-then-difference pair is a moving-average — into an N-th-order boxcar (moving average) low-pass filter of length R·M. The magic is where each stage runs: integrators sit before the rate change at the high input rate, combs sit after it at the low output rate, so the expensive delay lines in the combs are short and clocked slowly. For interpolation the structure runs in reverse (combs first, upsample, then integrators).

Because every coefficient is effectively ±1, a CIC needs no multipliers at all — only adders, registers, and the decimator/expander. That is why it is baked into the digital down-converters of nearly every SDR chip and FPGA front end: it delivers a huge, run-time-programmable rate change for a handful of gates per stage.

  • Bit growth. The integrators have unity-at-DC feedback, so their internal word grows by N·log₂(R·M) bits. Fixed-point implementations must size the accumulators for the worst case (and rely on two’s-complement wrap-around cancelling correctly between the integrator and comb sections), or the filter overflows silently.
  • Passband droop. A boxcar’s frequency response is a sinc (raised to the N-th power), which sags across the passband and has only modest stop-band rejection between its nulls. The nulls land on the aliasing bands, which is why the shape works, but the droop distorts wanted signals near band edge.

Variants and compensation

The droop is corrected downstream by a short compensation FIR — an inverse-sinc “CIC comp” filter — usually combined with the final half-band decimation stages that trim the rate the rest of the way and sharpen the transition band. Design freedom lives in three integers: the number of stages N (steeper roll-off and better alias rejection, but more droop and delay), the differential delay M (1 or 2, setting null placement), and the rate change R. A common SDR chain is CIC → CIC-comp FIR → half-band cascade → channel FIR, letting the multiplier-free CIC absorb the bulk of the decimation so the multiply-based filters only ever run at a low rate.

In practice

CIC filters are the workhorse of the first decimation stage in RTL-SDR, Airspy, and HackRF-class receivers and in the digital down-converters of communications ASICs, precisely because a programmable, gate-cheap rate change is exactly what a wideband front end needs before anything selective happens. Their weaknesses — droop and finite alias rejection — are tolerable there because a following FIR fixes both.

Relevance to SDR

Any GopherTrunk decode that starts from a wideband capture leans on CIC-style multiplier-free decimation in the SDR hardware before samples ever reach the host. GopherTrunk’s own software down-conversion favours polyphase and half-band FIR stages rather than a software CIC, but the principle — do the coarse rate reduction with the cheapest filter, then clean up with a short FIR — is the same one that shapes its channelizer front end.

Sources

  1. Cascaded integrator–comb filter — Wikipedia, on Hogenauer’s multiplier-free decimation/interpolation structure, bit growth, and passband droop. 

  2. An Economical Class of Digital Filters for Decimation and Interpolation — E. B. Hogenauer, IEEE Trans. ASSP, 1981 — the seminal CIC paper defining the register-growth and comb/integrator arrangement. 

See also