The gr-dpd module is a GNU Radio implementation of Digital Pre-Distortion, a popular technique used to compensate for distortion caused due to non-linear Power Amplifiers used in wireless communication today. Also, this has been developed as a GSoC 2020 project under GNU Radio.
Major DPD Algorithms considered for this module are:
- Fast RLS based Algorithm
- LMS (Least Mean Squares) Algorithm
- Look-Up Table based Algorithm
So, far RLS based algorithm has been implemented.
The blocks added to the module, so far, are:
- GMP_model_PA
- MP_model_PA
- stream_to_message
- stream_to_gmp_vector
- predistorter_training
- RLS_postdistorter
- gain_phase_calibrate
gr-dpd requires:
GNU Radio
version >= 3.8
Armadillo
version >= 6.7
CMake
version >= 3.11
gcc
version >= 7.4.0
First you need to install the dependencies (above).
Then, you need to download this repository
$ git clone https://github.com/gnuradio/gr-dpd.git
After this, gr-dpd should be installed as any other GNU Radio out-of-tree module.
$ cd gr-dpd
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig
If your GNU Radio is installed in other directory (rather than /usr/local), then replace the cmake line
cmake ..
above with: cmake -DCMAKE_INSTALL_PREFIX=<directory of GNU Radio> ..
All the progress related details of the development of this module and proper documentation and resources related to this module can be found in here.
Various example flowgraphs have been added so far to demonstrate the functioning of gr-dpd blocks.
Below is the flowgraph demonstrating a RLS based predistortion run on a GMP model Power Amplifier:
Kindly report any bugs or issues on Github.
If you want to contribute to the module, feel free to add the pull request. Please read the contribution guidelines of GNU Radio here.
For queries or feedbacks, drop a mail to discuss-gnuradio.
The project is licensed under GPLv3. See LICENSE for terms.