GNU Radio Manual and C++ API Reference
3.9.1.0
The Free & Open Software Radio Ecosystem
clock_recovery_mm_cc.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2004,2011,2012 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
7
* SPDX-License-Identifier: GPL-3.0-or-later
8
*
9
*/
10
11
#ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
12
#define INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
13
14
#include <
gnuradio/block.h
>
15
#include <
gnuradio/digital/api.h
>
16
17
namespace
gr
{
18
namespace
digital {
19
20
/*!
21
* \brief Mueller and Müller (M&M) based clock recovery block with complex input, complex
22
* output.
23
* \ingroup synchronizers_blk
24
* \ingroup deprecated_blk
25
*
26
* \details
27
* This implements the Mueller and Müller (M&M) discrete-time
28
* error-tracking synchronizer.
29
*
30
* The peak to peak input signal amplitude must be symmetrical
31
* about zero, as the M&M timing error detector (TED) is a
32
* decision directed TED, and this block uses a symbol decision
33
* slicer referenced at zero.
34
*
35
* The input signal peak amplitude should be controlled to a
36
* consistent level (e.g. +/- 1.0) before this block to achieve
37
* consistent results for given gain settings; as the TED's output
38
* error signal is directly affected by the input amplitude.
39
*
40
* The input signal must have peaks in order for the TED to output
41
* a correct error signal. If the input signal pulses do not have
42
* peaks (e.g. rectangular pulses) the input signal should be
43
* conditioned with a matched pulse filter or other appropriate
44
* filter to peak the input pulses. For a rectangular base pulse
45
* that is N samples wide, the matched filter taps would be
46
* [1.0/float(N)]*N, or in other words a moving average over N
47
* samples.
48
*
49
* This block will output samples at a rate of one sample per
50
* recovered symbol, and is thus not outputting at a constant rate.
51
*
52
* Output symbols are not a subset of input, but may be interpolated.
53
*
54
* The complex version here is based on: Modified Mueller and
55
* Muller clock recovery circuit:
56
*
57
* G. R. Danesfahani, T.G. Jeans, "Optimisation of modified Mueller
58
* and Muller algorithm," Electronics Letters, Vol. 31, no. 13, 22
59
* June 1995, pp. 1032 - 1033.
60
*/
61
class
DIGITAL_API
clock_recovery_mm_cc
:
virtual
public
block
62
{
63
public
:
64
// gr::digital::clock_recovery_mm_cc::sptr
65
typedef
std::shared_ptr<clock_recovery_mm_cc>
sptr
;
66
67
/*!
68
* Make a M&M clock recovery block.
69
*
70
* \param omega Initial estimate of samples per symbol
71
* \param gain_omega Gain setting for omega update loop
72
* \param mu Initial estimate of phase of sample
73
* \param gain_mu Gain setting for mu update loop
74
* \param omega_relative_limit limit on omega
75
*/
76
static
sptr
make(
float
omega,
77
float
gain_omega,
78
float
mu,
79
float
gain_mu,
80
float
omega_relative_limit);
81
82
virtual
float
mu()
const
= 0;
83
virtual
float
omega()
const
= 0;
84
virtual
float
gain_mu()
const
= 0;
85
virtual
float
gain_omega()
const
= 0;
86
87
virtual
void
set_verbose(
bool
verbose) = 0;
88
virtual
void
set_gain_mu(
float
gain_mu) = 0;
89
virtual
void
set_gain_omega(
float
gain_omega) = 0;
90
virtual
void
set_mu(
float
mu) = 0;
91
virtual
void
set_omega(
float
omega) = 0;
92
};
93
94
}
/* namespace digital */
95
}
/* namespace gr */
96
97
#endif
/* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H */
block.h
gr::digital::clock_recovery_mm_cc::sptr
std::shared_ptr< clock_recovery_mm_cc > sptr
Definition:
clock_recovery_mm_cc.h:65
DIGITAL_API
#define DIGITAL_API
Definition:
gr-digital/include/gnuradio/digital/api.h:18
gr::block
The abstract base class for all 'terminal' processing blocks.
Definition:
block.h:59
api.h
gr
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition:
basic_block.h:29
gr::digital::clock_recovery_mm_cc
Mueller and Müller (M&M) based clock recovery block with complex input, complex output.
Definition:
clock_recovery_mm_cc.h:61
gr-digital
include
gnuradio
digital
clock_recovery_mm_cc.h
Generated by
1.8.17