aboutsummaryrefslogtreecommitdiffstats
path: root/dpd/README.md
diff options
context:
space:
mode:
authorandreas128 <Andreas>2017-08-09 17:50:46 +0100
committerandreas128 <Andreas>2017-08-09 17:50:46 +0100
commitbf6f4d004f1e7cac99c26c8941844fcadab66e09 (patch)
tree921976f7d8266590af0052d8ca778b25ab8af51d /dpd/README.md
parenteaeac9c1296ae9a62b1914903877a0d871c19066 (diff)
parenta00179ccdea118aad571d91f610e66c552d55a19 (diff)
downloaddabmod-bf6f4d004f1e7cac99c26c8941844fcadab66e09.tar.gz
dabmod-bf6f4d004f1e7cac99c26c8941844fcadab66e09.tar.bz2
dabmod-bf6f4d004f1e7cac99c26c8941844fcadab66e09.zip
Merge branch 'next_memless' of github.com:Opendigitalradio/ODR-DabMod into next_memless
Diffstat (limited to 'dpd/README.md')
-rw-r--r--dpd/README.md49
1 files changed, 42 insertions, 7 deletions
diff --git a/dpd/README.md b/dpd/README.md
index 173b4c6..b5a6b81 100644
--- a/dpd/README.md
+++ b/dpd/README.md
@@ -1,21 +1,56 @@
-Digital Predistortion for ODR-DabMod
-====================================
+Digital Predistortion Calculation Engine for ODR-DabMod
+=======================================================
-This folder contains work in progress for digital predistortion. It requires:
+This folder contains work in progress for digital predistortion.
+
+Concept
+-------
+
+ODR-DabMod makes outgoing TX samples and feedback RX samples available for an external tool. This
+external tool can request a buffer of samples for analysis, can calculate coefficients for the
+polynomial predistorter in ODR-DabMod and load the new coefficients using the remote control.
+
+The *dpd/main.py* script is the entry point for the *DPD Calculation Engine* into which these
+features will be implemented. The tool uses modules from the *dpd/src/* folder:
+
+- Sample transfer and time alignment with subsample accuracy is done by *Measure.py*
+- Estimating the effects of the PA using some model and calculation of the updated
+ polynomial coefficients is done in *Model.py*
+- Finally, *Adapt.py* loads them into ODR-DabMod.
+
+These modules themselves use additional helper scripts in the *dpd/src/* folder.
+
+Requirements
+------------
- USRP B200.
- Power amplifier.
- A feedback connection from the power amplifier output, at an appropriate power level for the B200.
- Usually this is done with a directional coupler.
-- ODR-DabMod with enabled dpd_port, and with a samplerate of 8192000 samples per second.
+ Usually this is done with a directional coupler and additional attenuators.
+- ODR-DabMod with enabled *dpd_port*, and with a samplerate of 8192000 samples per second.
- Synchronous=1 so that the USRP has the timestamping set properly, internal refclk and pps
are sufficient for this example.
- A live mux source with TIST enabled.
See dpd/dpd.ini for an example.
+The DPD server port can be tested with the *dpd/show_spectrum.py* helper tool, which can also display
+a constellation diagram.
+
+File format for coefficients
+----------------------------
+The coef file contains the polynomial coefficients used in the predistorter. The file format is
+very similar to the filtertaps file used in the FIR filter. It is a text-based format that can
+easily be inspected and edited in a text editor.
+
+The first line contains the number of coefficients as an integer. The second and third lines contain
+the real, respectively the imaginary parts of the first coefficient. Fourth and fifth lines give the
+second coefficient, and so on. The file therefore contains 2xN + 1 lines if it contains N
+coefficients.
+
TODO
----
-Implement a PA model that updates the predistorter.
-Implement cases for different oversampling for FFT bin choice
+Implement a PA model.
+Implement cases for different oversampling for FFT bin choice.
+Fix loads of missing and buggy aspects of the implementation.