This post is a summary of the main content of G. R. Danesfahani and T. G. Jeans, Optimisation of modified Mueller and Müller algorithm, Electronics Letters 31(13), 22nd June 1995, pages 1032-1033 (DOI 10.1049/el:19950711). The original paper is copyright IEE, and is available from IEEE or your local library. The algorithm described in that paper is the one used in GNU Radio‘s gr_clock_recovery_mm block.
The paper first recalls the modified Mueller and Müller algorithm: given
- data symbols
- received signal
with real part
,
- the receiver’s decision on the data symbol
then the modified Mueller and Müller algorithm (mM&M) computes an error
.
The paper then observes that this algorithm contains a self-noise term which can be cancelled by adding
.
The resulting algorithm, the optimised modified Mueller and Müller algorithm for real symbols (e.g., BPSK), outputs a timing error
.
This can be generalised to the complex domain (e.g., for QPSK) as
,
where
is the receiver’s decision on the (complex) data symbol, and
is the complex conjugate of
.
Figure 1 presents this equation in the form of a block diagram, including a combined filter and interpolator (and presumably sampler) betweeen the input signal and , a decision block between
and
, and a loop filter driven from the real output of the equation via
which influences the filter/interpolator/sampler.
The paper then presents simulation results (using a gain factor of ) which show that while the mM&M algorithm has fast acquisition it has lots of jitter and some symbol slips; by contrast the optimised mM&M algorithm exhibits much less jitter and no symbol slips, while preserving the same fast acquisition characteristics.