GNU Radio's DPD Package
MP_model_PA.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 Alekh Gupta
4  *
5  * SPDX-License-Identifier: GPL-3.0-or-later
6  *
7  * This 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  * This software 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 this software; 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_DPD_MP_MODEL_PA_H
24 #define INCLUDED_DPD_MP_MODEL_PA_H
25 
26 #include <gnuradio/sync_block.h>
27 #include <dpd/api.h>
28 
29 namespace gr {
30 namespace dpd {
31 
32 /*!
33  * \brief Implementation of Memory Polynomial model based
34  * Power Amplifier. (Complex input, Complex output)
35  * \ingroup dpd
36  *
37  * \details
38  * It produces an output based on the Memory Polynomial (MP)
39  * model formed using the current block parameters for
40  * each input.
41  *
42  * Function to describe relation between Input & Output
43  * of MP based model:
44  * \f[
45  * y[n] = \sum\limits_{k=1}^{K}(\sum\limits_{m=0}^{M} a_{km} x(n-m) |x(n-m)|^{k-1})
46  * \f]
47  *
48  * Where x is the input, y is the output, K is the maximum power order,
49  * M is the maximum memory depth and \f$a_{km}\f$ is the coefficients (kernels)
50  * of the system.
51  *
52  */
53 class DPD_API MP_model_PA : virtual public gr::sync_block
54 {
55 public:
56  // gr::dpd::MP_model_PA
57  typedef boost::shared_ptr<MP_model_PA> sptr;
58 
59  /*!
60  * \brief Make a MP_model_PA block
61  *
62  * \param Order Maximum Power Order (K) or Nonlinearity
63  * Order of Memory Polynomial (MP).
64  * \param Mem_Depth Memory Depth (M)
65  * or Maximum no. of terms of each order in MP.
66  * \param Mode Mode of Operation, i.e., Odd Order Terms Only
67  * or Even Order Terms Only or Both Terms.
68  * \param Coeff A shift-structured coefficient vector
69  * of complex data types of order (K x M) containing the coefficients for the MP
70  * Model.
71  */
72  static sptr make(int Order,
73  int Mem_Depth,
74  std::string Mode,
75  const std::vector<gr_complex>& Coeff);
76 };
77 
78 } // namespace dpd
79 } // namespace gr
80 
81 #endif /* INCLUDED_DPD_MP_MODEL_PA_H */
boost::shared_ptr< MP_model_PA > sptr
Definition: MP_model_PA.h:57
Definition: gain_phase_calibrate.h:14
#define DPD_API
Definition: api.h:19
Implementation of Memory Polynomial model based Power Amplifier. (Complex input, Complex output) ...
Definition: MP_model_PA.h:53