GNU Radio's DPD Package
predistorter_training.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_PREDISTORTER_TRAINING_H
9 #define INCLUDED_DPD_PREDISTORTER_TRAINING_H
10 
11 #include <gnuradio/sync_block.h>
12 #include <dpd/api.h>
13 
14 namespace gr {
15 namespace dpd {
16 
17 /*!
18  * \brief Performs predistortion of the input stream to be fed to
19  * the Power Amplifier (PA).
20  * \ingroup dpd
21  *
22  * \details
23  * It has to be necessarily supplied with the parameters
24  * (as complex vector) of the behavioral model (GMP) used for
25  * estimation of the PA model coefficients or predistortion
26  * coefficients (inverse of PA model estimated).
27  *
28  * It can operate in both Static and Training modes of predistortion.
29  *
30  * * In static mode, predistortion coefficients are given by user
31  * as complex_vector parameter.
32  * * In training mode, it is necessary to connect 'taps' input
33  * message-port to a postdistorter block passing message 'taps'
34  * after adaptive-estimation.
35  *
36  * It multiplies GMP row vector for each input complex value with
37  * predistorter coefficients column vector (of same order) to give a
38  * predistorted input to PA.
39  *
40  * Mathematically, Output[m] = Input[m] * taps
41  * (where Input[m] is input GMP vector(row) and 'taps' is weight vector(col)).
42  */
43 class DPD_API predistorter_training : virtual public gr::sync_block
44 {
45 public:
46  typedef boost::shared_ptr<predistorter_training> sptr;
47 
48  /*!
49  * \brief Make a predistorter_training block
50  *
51  * \param dpd_params The (K_a, L_a, K_b, L_b, M_b) int_vector denoting the GMP model
52  * parameters or DPD parameters. Used to determine the order of GMP vector generated
53  * for each input for its predistortion. \param mode Modes of Operation, i.e.,
54  * Training or Static. \param taps Predistortion coefficients or taps as
55  * complex_vector (Optional ,i.e., Parameter only in static mode).
56  *
57  */
58  static sptr make(const std::vector<int>& dpd_params,
59  std::string mode,
60  const std::vector<gr_complex>& taps);
61 };
62 
63 } // namespace dpd
64 } // namespace gr
65 
66 #endif /* INCLUDED_DPD_PREDISTORTER_TRAINING_H */
Definition: gain_phase_calibrate.h:14
boost::shared_ptr< predistorter_training > sptr
Definition: predistorter_training.h:46
#define DPD_API
Definition: api.h:19
Performs predistortion of the input stream to be fed to the Power Amplifier (PA). ...
Definition: predistorter_training.h:43