Field Guide · algorithm

Also known as: FSE, T/2 equalizer, fractionally spaced equalizer

A fractionally-spaced equalizer (FSE) is an adaptive equalizer whose taps are spaced closer than one symbol apart — most commonly half a symbol, “T/2” — so it operates on two or more samples per symbol instead of one.1 The extra resolution is not a luxury: a symbol-spaced equalizer can only correct the channel as seen at the symbol instants, which makes it blind to anything happening between them — the shape of the pulse itself, and the exact sampling phase. An FSE sees the waveform between symbols too, and that lets it do jobs a symbol-spaced filter structurally cannot.

on-time (T) midpoint (T/2) two tap phases per symbol see the pulse, not just its symbol-instant values
Symbol-spaced taps touch only the dark samples; the T/2 taps also weight the midpoints, giving the equalizer authority over the pulse shape between decisions.

How it works

The FSE is an FIR filter running at 2× the symbol rate whose output is read once per symbol; adaptation (LMS against training, or blind CMA) updates the T/2-spaced taps exactly as it would symbol-spaced ones. The structural wins:

  • It synthesizes the receive matched filter implicitly. The optimal receiver front end is matched filter + symbol-rate sampler; a T/2 FSE spans both roles, so if the receiver’s fixed filter is matched to the wrong pulse, the FSE quietly learns the correction. A symbol-spaced equalizer cannot — the mismatch lives between its taps.
  • It is insensitive to sampling phase. Symbol-spaced equalization degrades with timing offset because aliasing of the (excess-bandwidth) pulse folds differently at each phase; T/2 sampling keeps the excess band un-aliased, so residual timing error becomes just another linear distortion the taps absorb.
  • It equalizes before decimation, so channel nulls that land between symbol-rate alias points remain correctable.

The costs are 2× the taps and one genuine trap: fractional spacing enlarges the blind cost function’s null space — tap combinations that leave the output modulus unchanged — so on a clean channel the taps can random-walk. A small leakage term (w ← (1−leak)·w each update) shrinks unexcited taps toward zero: real ISI sustains taps, noise alone does not.

Relevance to SDR

GopherTrunk’s FSE (internal/dsp/equalizer/fse.go) exists because of a pulse-mismatch bug class no symbol-spaced filter could fix: the P25 CQPSK/LSM receiver matched-filters with a root-raised-cosine, but a real P25 C4FM transmitter shapes a different (CPM) pulse — the outer ±1800 Hz rails arrive under-shot and the constellation closes, and a symbol-spaced CMA cannot open it (issue #492). The T/2 blind FSE consumes the timing loop’s on-time sample and the half-symbol-earlier midpoint interpolant, corrects the pulse mismatch and any multipath ISI, and runs ahead of the carrier loop (the CMA cost is rotation-invariant, with the centre tap phase-pinned so tap drift is not read as a frequency offset). It is always-on for P25 CQPSK/LSM. Note the contrast with the TETRA paths, where the differential decoder imposes its own constraint and the equalizers are applied as frozen snapshots — see snapshot equalization.

Sources

  1. Equalization (communications) — Wikipedia, on adaptive equalizer structures including fractionally-spaced designs and their timing-phase insensitivity. 

See also