Also known as: Gardner timing recovery, Gardner TED, Gardner
Gardner timing recovery is a feedback algorithm that estimates symbol-timing error from two samples per symbol — one at the symbol instant and one at the midpoint between symbols.1 Its defining property is that it is non-data-aided (it needs no known preamble) and independent of carrier phase, so it can lock symbol timing before the carrier is fully recovered — a major practical convenience in an SDR demodulator.2
How it works
The timing-error detector (TED) uses three consecutive samples taken at twice the symbol rate: the previous on-time sample, the current midpoint sample, and the current on-time sample. The Gardner error is
e[k] = x_mid[k] · ( x[k] − x[k−1] ),
the midpoint sample multiplied by the difference between successive on-time samples. The
intuition: if the strobes are perfectly aligned, each on-time sample lands on a symbol peak
and the midpoint lands on the transition zero-crossing, giving e ≈ 0. If the clock is
early or late, the midpoint drifts off the crossing and the product acquires a sign that
tells the loop which way to slide the sampling phase. Crucially, the formula uses only the
real difference of successive samples and the midpoint magnitude, so a constant carrier
phase rotation multiplies both arms equally and cancels out — hence its phase
independence.
That error drives a standard second-order loop:
- Loop filter → interpolator control. The filtered error steers a fractional-delay interpolator (or an NCO controlling a resampler) that shifts the strobe toward the centre of the symbol, where the eye is widest.
- Two samples per symbol is the price. Gardner needs exactly 2 samples/symbol, twice the throughput of a one-sample detector, but avoids the matched-filter-and-decision overhead of decision-directed schemes.
- Data-transition dependence. The error is developed on symbol transitions, so long runs of identical symbols starve the detector — pulse shaping and scrambling that keep transitions frequent help it stay locked.
Variants
Gardner’s detector is one member of the non-data-aided TED family. The early-late gate detector uses samples symmetrically before and after the strobe to the same end and is closely related. Where sample budget is tight, the Mueller–Müller detector achieves timing recovery with only one sample per symbol, but it is decision-directed and therefore sensitive to carrier phase — the opposite trade from Gardner. Zero-crossing detectors are a degenerate, lower-performance cousin.
Relevance to SDR
Gardner recovery is a workhorse in SDR demodulators for PSK and QAM waveforms — it is the default symbol-timing block in many GNU Radio flowgraphs and appears throughout land-mobile (P25, DMR, NXDN) and satellite receive chains. Its carrier-phase independence lets a receiver lock timing and carrier as loosely coupled stages rather than one fragile joint loop. GopherTrunk’s C4FM/PSK decoders perform symbol-timing recovery of this non-data-aided, 2-samples-per-symbol kind to place the slicer at the eye centre. The detector is named for Floyd M. (Fred) Gardner, who published it in 1986.
Sources
-
Symbol synchronization — Wikipedia, for symbol-timing recovery including the Gardner timing-error detector and its non-data-aided operation. ↩
-
A BPSK/QPSK timing-error detector for sampled receivers — F. M. Gardner, IEEE Trans. Communications, 1986, the original paper deriving the two-sample, carrier-phase-independent TED. ↩