discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Discuss-gnuradio] gr.clock_recovery_mm_ff() help


From: Tom Rondeau
Subject: RE: [Discuss-gnuradio] gr.clock_recovery_mm_ff() help
Date: Sun, 25 Mar 2007 14:10:43 -0400

Whoops, I realized I sent this straight to George yesterday and not the
list.

> -----Original Message-----
> From: address@hidden [mailto:discuss-
> 
> On Fri, Mar 23, 2007 at 11:40:39PM -0700, George Barrinuevo 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.


The number of samples per symbol can be anything (within reason), and the
M&M algorithm requires a minimum of 2. The value of omega should default to
the number of samples per symbol; this value determines the sampling period
in the M&M loop. The gain_omega is used to adjust omega, but this should be
very small since you don't want too much variation around it (we have set
this value as 0.25*gain_mu^2).

The value of mu is related to the adjustment of the sampling due to the
error signal, and it could default to anything. Between 0 and 1 is good. The
gain_mu is probably the most important value for the loops response. This is
the correction factor based on the timing difference between symbols. If you
look in the DQPKS or DBPSK demodulators in the code
(src/python/gnuradio/blksimpl), you'll see how these are set. Somewhere
between 0.05 and 0.15.

Tom





reply via email to

[Prev in Thread] Current Thread [Next in Thread]