On Fri, Mar 23, 2007 at 11:40:39PM -0700, George B. wrote:
Hello,
I am trying to use the gr.clock_recovery_mm_cc (float
omega, float gain_omega, float mu, float gain_mu).
What do I set for the omega, gain_omega, mu, and
gain_mu? There is also a version of this function
with 5 parameters.
For a shoot-from-the-hip introduction, take a look at some of the
places in the Python code where these blocks are instantiated.
Without a good understanding of the algorithm, trying to explain these
is tough. I suggest starting with these books and papers:
/*!
- \brief Mueller and Müller (M&M) based clock recovery block with complex
input, complex output.
- \ingroup block
-
- This implements the Mueller and Müller (M&M) discrete-time error-tracking
synchronizer.
-
- See "Digital Communication Receivers: Synchronization, Channel
- Estimation and Signal Processing" by Heinrich Meyr, Marc Moeneclaey,
& Stefan Fechtel.
- ISBN 0-471-50275-8.
*/
/*
Modified Mueller and Muller clock recovery circuit
Based:
G. R. Danesfahani, T.G. Jeans, “Optimisation of modified Mueller
and Muller
algorithm,” Electronics Letters, Vol. 31, no. 13, 22 June 1995,
pp. 1032 - 1033.
*/
Also, what should be the number of samples per bit
going into this gr.clock_recovery_mm_ff() or how much
oversampling per bit should be used as the input?
About 2 samples per symbol should be fine.
Also, because of the constraints given by the filters implemented
within gri_mmse_fir_interpolator_cc, the input signal must contain no
significant energy above Fs/4, where Fs is the sampling rate. Note
that this restriction is twice as tight as the Nyquist criterion.
Eric