GNU Radio's DPD Package
LMS_postdistorter.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 gr-dpd author.
4  *
5  * This is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3, or (at your option)
8  * any later version.
9  *
10  * This software is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this software; see the file COPYING. If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street,
18  * Boston, MA 02110-1301, USA.
19  */
20 
21 #ifndef INCLUDED_DPD_LMS_POSTDISTORTER_H
22 #define INCLUDED_DPD_LMS_POSTDISTORTER_H
23 
24 #include <gnuradio/sync_block.h>
25 #include <dpd/api.h>
26 
27 namespace gr {
28 namespace dpd {
29 
30 /*!
31  * \brief LMS based Algorithm implemented to estimate the coefficients of
32  * the behaviorial model (GMP) of the Power Amplifier and thus
33  * predistorter taps.
34  * \ingroup dpd
35  *
36  * \details
37  * It estimates the coefficients based on the PA_output and PA_input.
38  * It uses the LMS (Least Mean Squares) Algorithm with two methods options,
39  * namely, Newton based and EMA based methods.
40  *
41  * It has two input ports, one for the PA_output (gain phase calibrated)
42  * and other for the PA_input (or predistorter output).
43  *
44  * The coefficients estimated are passed as messages through message
45  * output port 'taps'.
46  * Both Input ports are only for Complex Data Type.
47  */
48 class DPD_API LMS_postdistorter : virtual public gr::sync_block
49 {
50 public:
51  typedef boost::shared_ptr<LMS_postdistorter> sptr;
52 
53  /*!
54  * \brief Make LMS_postdistorter
55  *
56  * \param dpd_params The (K_a, L_a, K_b, L_b, M_b) int_vector denoting
57  * the GMP model parameters used for predistorter 'taps' estimation.
58  * Total No. of coefficients = ((K_a * L_a) + (K_b * M_b * L_b))
59  * \param iter_limit Iteration limit or Max. number of iterations of training
60  * to be performed for predistorter DPD coefficients estimation.
61  * \param method Method of LMS algorithm used for coefficients estimation,
62  * i.e., Newton or EMA based method.
63  *
64  */
65  static sptr
66  make(const std::vector<int>& dpd_params, int iter_limit, std::string method);
67 };
68 
69 } // namespace dpd
70 } // namespace gr
71 
72 #endif /* INCLUDED_DPD_LMS_POSTDISTORTER_H */
LMS based Algorithm implemented to estimate the coefficients of the behaviorial model (GMP) of the Po...
Definition: LMS_postdistorter.h:48
Definition: gain_phase_calibrate.h:14
#define DPD_API
Definition: api.h:19
boost::shared_ptr< LMS_postdistorter > sptr
Definition: LMS_postdistorter.h:51