Field Guide · algorithm

Also known as: CMA equalizer, constant-modulus algorithm, Godard algorithm

A CMA equalizer uses the constant-modulus algorithm — a blind adaptive filter — to counteract multipath distortion and intersymbol interference without a known training sequence.1 It exploits a structural property of the transmitted signal rather than a reference: for constant-envelope and many PSK modulations, every symbol should land on a circle of fixed radius in the I/Q plane, so the equaliser can adapt purely from how far the received samples stray off that circle.

multipath-smeared CMA equalised (on the circle)
A CMA equaliser blindly undoes channel distortion by pulling every output sample toward a target circle of constant modulus, tightening smeared symbols into clean clusters.

How it works

The equaliser is an FIR filter whose taps are adjusted sample-by-sample to minimise the constant-modulus cost function

J = E[ (|y|² − R)² ],

the mean-squared deviation of the output magnitude |y| from a target radius R (R is a statistic of the source constellation, e.g. R = E[|s|⁴]/E[|s|²]). Note the cost depends only on the magnitude of the output, never on which symbol was sent — that is what makes it blind. A stochastic-gradient update, exactly the same machinery as the LMS algorithm but with a different error term, walks the taps downhill:

  • Error term: e = y · (R − |y|²). When a sample sits too far out (|y|² > R) the correction pulls it in; too far in, and it pushes it out — driving the cloud onto the circle regardless of angle.
  • Tap update: w ← w + μ · e* · x, with step size μ trading convergence speed against steady-state jitter (the misadjustment), just as in LMS.
  • Convergence is not guaranteed to the global optimum: the CMA cost surface is non-convex, so a badly initialised loop can settle in a local minimum. In practice the centre tap is initialised to a single spike and μ kept small.

Because CMA only fixes the magnitude, it leaves the constellation at an arbitrary rotation — it removes ISI but not carrier phase. A Costas loop or other phase tracker is run alongside to de-rotate the now-open eye.

Variants

  • Godard / dispersion-order variants. CMA is the p = 2 case of Godard’s more general family of blind constant-modulus criteria.
  • Multi-modulus (MMA). For QAM, where symbols do not all share one radius, a multi-modulus algorithm generalises the target to several rings.
  • CMA + DFE. CMA can pre-open the eye for a decision-feedback equalizer, which then uses its own decisions to cancel residual post-cursor ISI more aggressively than a linear filter can.
  • Trained fallback. Where a preamble or midamble exists, an LMS/RLS trained equaliser converges faster and more reliably; CMA earns its keep precisely when no training symbols are available.

Relevance to SDR

Blind equalisation matters in reflective urban and mobile channels — land-mobile trunking (P25, DMR, NXDN), broadcast, and microwave links — where echoes smear symbols into neighbours. Many of these waveforms are constant-envelope or near-constant-modulus, making them natural CMA candidates. GopherTrunk targets narrowband C4FM/PSK signals whose symbol rates keep intersymbol interference modest, so its decode chain leans on matched filtering and timing/carrier recovery rather than a full adaptive equaliser; CMA is the technique you would reach for if multipath in a given deployment became severe enough to close the eye.

Sources

  1. Constant modulus algorithm — Wikipedia, on the blind adaptive equalization technique, its cost function, and its stochastic-gradient (LMS-family) update. 

See also