GNU Radio Manual and C++ API Reference
3.9.1.0
The Free & Open Software Radio Ecosystem
clock_recovery_mm_ff.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_FF_H
12
#define INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_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 float input, float
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
* See "Digital Communication Receivers: Synchronization, Channel
55
* Estimation and Signal Processing" by Heinrich Meyr, Marc
56
* Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8.
57
*/
58
class
DIGITAL_API
clock_recovery_mm_ff
:
virtual
public
block
59
{
60
public
:
61
// gr::digital::clock_recovery_mm_ff::sptr
62
typedef
std::shared_ptr<clock_recovery_mm_ff>
sptr
;
63
64
/*!
65
* Make a M&M clock recovery block.
66
*
67
* \param omega Initial estimate of samples per symbol
68
* \param gain_omega Gain setting for omega update loop
69
* \param mu Initial estimate of phase of sample
70
* \param gain_mu Gain setting for mu update loop
71
* \param omega_relative_limit maximum relative deviation from omega
72
*/
73
static
sptr
make(
float
omega,
74
float
gain_omega,
75
float
mu,
76
float
gain_mu,
77
float
omega_relative_limit);
78
79
virtual
float
mu()
const
= 0;
80
virtual
float
omega()
const
= 0;
81
virtual
float
gain_mu()
const
= 0;
82
virtual
float
gain_omega()
const
= 0;
83
84
virtual
void
set_verbose(
bool
verbose) = 0;
85
virtual
void
set_gain_mu(
float
gain_mu) = 0;
86
virtual
void
set_gain_omega(
float
gain_omega) = 0;
87
virtual
void
set_mu(
float
mu) = 0;
88
virtual
void
set_omega(
float
omega) = 0;
89
};
90
91
}
/* namespace digital */
92
}
/* namespace gr */
93
94
#endif
/* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H */
block.h
gr::digital::clock_recovery_mm_ff::sptr
std::shared_ptr< clock_recovery_mm_ff > sptr
Definition:
clock_recovery_mm_ff.h:62
gr::digital::clock_recovery_mm_ff
Mueller and Müller (M&M) based clock recovery block with float input, float output.
Definition:
clock_recovery_mm_ff.h:58
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
include
gnuradio
digital
clock_recovery_mm_ff.h
Generated by
1.8.17