GNU Radio Manual and C++ API Reference 3.8.5.0
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
frequency_modulator_fc.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2004,2012 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef INCLUDED_ANALOG_FREQUENCY_MODULATOR_FC_H
24#define INCLUDED_ANALOG_FREQUENCY_MODULATOR_FC_H
25
26#include <gnuradio/analog/api.h>
27#include <gnuradio/sync_block.h>
28
29namespace gr {
30namespace analog {
31
32/*!
33 * \brief Frequency modulator block
34 * \ingroup modulators_blk
35 *
36 * \details
37 * float input; complex baseband output
38 *
39 * Takes a real, baseband signal (x_m[n]) and output a frequency
40 * modulated signal (y[n]) according to:
41 *
42 * \f[
43 * y[n] = exp (j 2 \pi \frac{f_{\Delta}}{f_s} \sum{x[n]})
44 * \f]
45 *
46 * Where x[n] is the input sample at time n and \f$ f_{\Delta} \f$
47 * is the frequency deviation. Common values for \f$ f_{\Delta}
48 * \f$ are 5 kHz for narrowband FM channels such as for voice
49 * systems and 75 KHz for wideband FM, like audio broadcast FM
50 * stations.
51 *
52 * In this block, the input argument is \p sensitivity, not the
53 * frequency deviation. The sensitivity specifies how much the
54 * phase changes based on the new input sample. Given a maximum
55 * deviation, \f$ f_{\Delta} \f$, and sample rate \f$f_s\f$, the
56 * sensitivity is defined as:
57 *
58 * \f[
59 * k = 2 \pi \frac{f_{\Delta}}{f_s}
60 * \f]
61 */
63{
64public:
65 // gr::analog::frequency_modulator_fc::sptr
66 typedef boost::shared_ptr<frequency_modulator_fc> sptr;
67
68 /*!
69 * Build a frequency modulator block.
70 *
71 * \param sensitivity radians/sample = amplitude * sensitivity
72 */
73 static sptr make(float sensitivity);
74
75 virtual void set_sensitivity(float sens) = 0;
76 virtual float sensitivity() const = 0;
77};
78
79} /* namespace analog */
80} /* namespace gr */
81
82#endif /* INCLUDED_ANALOG_FREQUENCY_MODULATOR_FC_H */
Frequency modulator block.
Definition frequency_modulator_fc.h:63
virtual void set_sensitivity(float sens)=0
static sptr make(float sensitivity)
virtual float sensitivity() const =0
boost::shared_ptr< frequency_modulator_fc > sptr
Definition frequency_modulator_fc.h:66
synchronous 1:1 input to output with history
Definition sync_block.h:38
#define ANALOG_API
Definition gr-analog/include/gnuradio/analog/api.h:30
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition basic_block.h:46