GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
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 
29 namespace gr {
30 namespace 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 {
64 public:
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:62
boost::shared_ptr< frequency_modulator_fc > sptr
Definition: frequency_modulator_fc.h:66
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:43
synchronous 1:1 input to output with historyOverride work to provide the signal processing implementa...
Definition: sync_block.h:37
#define ANALOG_API
Definition: gr-analog/include/gnuradio/analog/api.h:30