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.
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 = 2case 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
-
Constant modulus algorithm — Wikipedia, on the blind adaptive equalization technique, its cost function, and its stochastic-gradient (LMS-family) update. ↩