GNU Radio's DPD Package
GMP_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 
8 #ifndef INCLUDED_DPD_GMP_MODEL_PA_H
9 #define INCLUDED_DPD_GMP_MODEL_PA_H
10 
11 #include <gnuradio/sync_block.h>
12 #include <dpd/api.h>
13 
14 namespace gr {
15 namespace dpd {
16 
17 /*!
18  * \brief Implementation of Generalised Memory Polynomial model
19  * based Power Amplifier. (Complex input, Complex output)
20  * \ingroup dpd
21  *
22  * \details
23  * It produces an output based on the
24  * Generalised Memory Polynomial model formed using the current
25  * block parameters for each input.
26  *
27  * Function to describe relation between Input and Output
28  * of GMP based model:
29  * \f[
30  * y[n] = \sum\limits_{k=0}^{K_a-1}(\sum\limits_{l=0}^{L_a-1} a_{kl} x(n-l)
31  * |x(n-l)|^{k}) + \\
32  * \sum\limits_{k=1}^{K_b}(\sum\limits_{m=1}^{M_b}(\sum\limits_{l=0}^{L_b-1}
33  * b_{kml} x(n-l) |x(n-l-m)|^{k})) \f] The representation on the right consists of two
34  * components, namely, the signed-aligned-envelope component and signal-and-lagging
35  * component. The number of coefficients to be estimated are: \f$M = K_a L_a + K_b M_b
36  * L_b\f$ across across \f$K_a + K_b M_b\f$ channels.
37  */
38 class DPD_API GMP_model_PA : virtual public gr::sync_block
39 {
40 public:
41  typedef boost::shared_ptr<GMP_model_PA> sptr;
42 
43  /*!
44  * \brief Make a GMP_model_PA block
45  *
46  * \param model_param1 Maximum Power Order(K_a) in the
47  * signal-and-aligned-envelope component of the GMP Model.
48  * \param model_param2 Memory Depth(L_a) or
49  * Maximum number of terms of each power order in the
50  * signal-and-aligned-envelope component of the GMP Model.
51  * \param model_param3 Maximum Power Order(K_b) in the
52  * signal-and-lagging-envelope component of the GMP Model.
53  * \param model_param4 Lagging Cross-Terms Index(M_b) or
54  * Maximum number of terms due to Lagging Cross Terms for
55  * each memory depth in the signal-and-lagging-envelope
56  * component of the GMP Model.
57  * \param model_param5 Memory-Depth(L_b) or
58  * Maximum number of terms of each power order in the
59  * signal-and-lagging-envelope component of the GMP Model.
60  * \param mode Mode of Operation, i.e., Odd Order Terms Only
61  * or Even Order Terms Only or Both Terms.
62  * \param coeff1 A shift-structured coefficients vector of
63  * complex data types of order (K_a x L_a) for the
64  * signal-and-aligned-envelope component.
65  * \param coeff2 A shift-structured coefficients vector of
66  * complex data types of order (K_b x L_b x M_b) for the
67  * signal-and-lagging-envelope component.
68  */
69  static sptr make(int model_param1,
70  int model_param2,
71  int model_param3,
72  int model_param4,
73  int model_param5,
74  std::string mode,
75  const std::vector<gr_complex>& coeff1,
76  const std::vector<gr_complex>& coeff2);
77 };
78 
79 } // namespace dpd
80 } // namespace gr
81 
82 #endif /* INCLUDED_DPD_GMP_MODEL_PA_H */
boost::shared_ptr< GMP_model_PA > sptr
Definition: GMP_model_PA.h:41
Definition: gain_phase_calibrate.h:14
Implementation of Generalised Memory Polynomial model based Power Amplifier. (Complex input...
Definition: GMP_model_PA.h:38
#define DPD_API
Definition: api.h:19