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.
This has been developed as a GSoC 2020 project under GNU Radio by Alekh Gupta under guidance of mentors: Derek Kozel, Andrej Rode and Zack Costello.
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 and LMS based algorithm has been implemented.
The blocks added to the module, so far, are:
- GMP_model_PA
- MP_model_PA
- predistorter_training
- RLS_postdistorter
- gain_phase_calibrate
- LMS_postdistorter
- stream_to_message
- stream_to_gmp_vector
gr-dpd requires:
GNU Radio
version = 3.8 (GR 3.8 installation guide)
Armadillo
version >= 6.7
CMake
version >= 3.8
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 its proper record and resources related to this module can be found here.
- Description of Example Flowgraphs can be seen here.
- Documentation of the gr-dpd, containing each block's description is given here.
Various example flowgraphs have been added so far to demonstrate the functioning of gr-dpd blocks.
Below is the flowgraph demonstrating an RLS based pre-distortion 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 feedback, drop a mail to discuss-gnuradio.
The project is licensed under GPLv3. See LICENSE for terms.