Also known as: RX chain, receive chain, receiver pipeline
A receiver chain is the ordered pipeline of digital-signal-processing stages a software-defined receiver runs to carry raw IQ samples through to decoded data: tune → filter → resample → demodulate → synchronise → decode.1 Each stage consumes the output of the one before it and hands a cleaner, more structured stream to the next, so a defect early in the chain (a poorly-placed filter, a wrong resample ratio) caps the quality of everything downstream.
How it works
Reading left to right, each stage has one job:
- Tune. A digital down converter mixes the wanted channel to 0 Hz using a numerically-controlled oscillator, so the signal of interest sits at baseband.
- Filter. A low-pass FIR filter rejects adjacent channels and the noise outside the signal’s bandwidth — often the same block as the tune step (a frequency-translating FIR).
- Resample. Decimation drops the rate to a small multiple of the symbol rate. This both cuts the arithmetic and sizes the matched filter and timing loop.
- Demodulate. The demodulator recovers the modulating quantity — instantaneous frequency for C4FM/FSK, phase for PSK — as a symbol-bearing waveform.
- Synchronise. Clock recovery finds the symbol instants and slices the waveform; a correlator then locates the sync word to establish frame timing.
- Decode. Deframing and forward-error-correction turn aligned symbols into validated bytes and messages.
In practice
A well-built chain fixes its internal rates so the decode stages are rate-invariant to the capture rate: the resample step normalises every input to a per-protocol channel rate, and the demodulator, matched filter, and clock loop are all sized from that rate, not the SDR’s. A symptom that appears only at a higher capture rate but reproduces in offline replay therefore points at the captured samples (front-end overload, phase noise), not the steady-state chain.
Relevance to SDR
The receiver chain is the skeleton of every SDR decoding application, and building one well is
mostly about getting the order and the rates right. GopherTrunk is a working example:
internal/scanner/ccdecoder implements exactly this pipeline — a Downconverter that tunes
and decimates to a fixed 48 kHz channel rate (144 kHz for TETRA), per-protocol demodulators,
internal/dsp/sync for clock and frame recovery, and per-radio deframers under
internal/radio. The chain is validated end-to-end from recorded IQ files with no hardware
attached, which is only possible because each stage is deterministic software.
Sources
-
Software-defined radio — Wikipedia, on the staged software pipeline that processes sampled RF. ↩