Also known as: AFC, automatic frequency control
Automatic frequency control (AFC) continuously measures a residual carrier-frequency offset and nudges the receiver to cancel it, keeping the demodulator centred on the signal as oscillators drift.1 Where PPM correction fixes a static error once, AFC tracks a changing one — it is a closed loop, not a one-time setting.
How it works
AFC is a feedback loop with three parts, like any control loop: a frequency-error detector that estimates how far the carrier sits from the receiver’s centre, a loop filter that smooths the estimate, and a correction applied by shifting the tuning — retuning a numerically controlled oscillator, or adding a phase rotation per sample to the IQ stream. The error detector can measure offset directly (for example from the average rate of phase rotation in the demodulated signal, or from the position of a known pilot or spectral feature) and the loop drives that error toward zero.
The loop’s bandwidth sets its character: a wide loop acquires and follows fast drift but lets more noise through and can be pulled off by interference; a narrow loop is steady and noise-immune but slow to catch a moving carrier. AFC typically handles a larger frequency range than a phase loop but to coarser precision, so it is often paired with a finer phase tracker.
Variants
- Frequency-locked loop (FLL). A pure AFC that locks frequency only, tolerating any phase. Robust and wide-range, it is the usual acquisition aid before a phase loop takes over — see frequency-locked loop.
- AFC + Costas loop. A Costas loop recovers phase for coherent PSK demodulation but has a narrow pull-in range; an AFC/FLL first drags the carrier close enough for the Costas loop to lock. This two-stage acquire-then-track pattern is standard in digital receivers.
- Data-aided vs non-data-aided. The error detector may use known symbols (a preamble or sync word) for a clean estimate, or operate blindly on the modulated signal.
In practice
AFC exists because oscillators are never perfectly stable: the reference drifts with temperature and age (a matter of frequency stability), and short-term phase noise jitters the carrier even when its mean frequency is right. A steadily rotating constellation is the visible symptom AFC is there to remove — the whole symbol pattern spinning at a rate equal to the residual offset. AFC catches what static PPM correction leaves behind and what changes after calibration, so the two are complementary rather than alternatives: PPM removes the bulk error, AFC follows the remainder in real time.
Relevance to SDR
AFC often works alongside a Costas loop and appears in GopherTrunk’s receiver telemetry as a carrier-error reading; the loop keeps each channel’s demodulator centred as the tuner and the transmitter’s own reference drift. For narrowband trunking signals, where a few hundred hertz of uncorrected offset is enough to break symbol decisions, this continuous tracking is what turns an intermittent lock into a stable decode.
Sources
-
Automatic frequency control — Wikipedia, on tracking and cancelling carrier-frequency offset. ↩