Introduction to DPD
This tutorial will cover a brief intro on Digital Pre-Distortion (DPD), why its used and how it works. It will also cover how to go about setting up a DPD measurement, including running calibrations for losses in equipment and give two examples using different Power Amplifiers (PA). The data shown in this tutorial is from real in lab measurements.
This tutorial is for anyone looking to implement or evaluate the performance of the ADRV9002 or ADRV9005 DPD feature.
To follow along with the practical you will need an ADRV9002 evaluation platform, Transceiver Evaluation Software from the latest SDK, PA and accompanying attenuators and splitters based on your requirements (more on how to chose these below).
Digital Pre-Distortion
DPD is a feature that uses a real-time feedback loop to pre-distort data being transmitted through a power amplifier (PA). It's used in transceiver applications to generate a more robust linear signal for transmitting data, to keep within ACPR specifications for RF bands and to utilise the PA in its most efficient state to maximise power useage. The PA is most efficient in its compression region, as shown in Figure 1, where the signal gets non-linearitiese introduced as a result. DPD works by taking in the output of the PA, calculating the non-linearity and applying an opposite distortion to the signal before it is transmitted and reaches the PA. The sum of this pre-distortion and the PA distortion should output a perfectly linear signal. This allows the user to get the best performance out of the chosen PA, however each PA will have different performance even with DPD and will need to be fine-tuned.
For more in-depth understanding and debugging refer to the User Guide for all up-to-date documentation on the DPD and TES functionality.
Figure 1. PA Output
FAQ
- What is the maximum useable bandwidth for the DPD?
The maximum bandwidth for DPD on the ADRV9002 is 20MHz. This is based off 1/5th of the maximum internal Tx observation bandwidth of the DPD block, which is 100MHz. Using this much margin allows the DPD engine to correct some of the odd harmonics that will have the biggest impact on stability.
Setup for DPD
Measurements
The DPD engine requires both Tx and Rx signals to calculate the coefficients. The coefficients will be applied in the Tx signal (pre-distort). Shown in
Figure 2. DPD HW Setup
This setup means that for the user’s implementation, one of the Rx channels will need to be permanently used as the DPD observation path. In the ADRV9002, this means the user can implement one of the following:
1T1R TDD with DPD | |
1T2R TDD with DPD | |
2T1R TDD with DPD | |
2T2R TDD with DPD | |
1T1R FDD with DPD |
Figuring out what your hardware setup will include is the next step. To do this we would recommend starting with the frequency band your application is targeting, from there you will need to understand the link budget and how much power output will be needed from the transmit system. From this point you can start to look for a suitable PA for the system. When you have found a PA that will operate in the freq of interest and provide enough power you can determine the rest of the DPD feedback loop. Using the input power required to push the PA into the compression region you can determine if an addition gain block is needed before the PA as the output from the EVB will be between 5 and 7dBm max. The ouput power of the PA will determin how much attenuation is needed to bring the loopback signal down to the required -18dBm to the input of the ADRV9002. This will also help identify the power rating on the attenuators needed.
At this stage you will have a PA, attenuators, gain block and coupler/splitter chosen for the feedback loop.
Example 1
Equipment List
- ADRV9002 evaluation platforrm
- PC with latest TES
- Spectrum Analyser
- Signal Generator
- Power sensor
- PA / Gain block
- RF cables
- Attenuators
- Splitter/Coupler
Calibration
Calibrating each piece of the feedback loop is very important to get the most accurate picture of what is happening in the loop and will help evaluate and stabalise the DPD. Calibration is pretty simple but time consuming as it involves using a signal generator and a power sensor to input a signal of good quality and know freq and amplitude into a cable or coupler and sensing the power on the other end of the part under test. The difference in power level through the part is the loss and should be noted. Running this calibraion at the freq uency of interest is important as the response of each part can change against frequency.
You can use the losses measured to fine tune the attenuation levels in the loopback.
Hardware setup
Shown in Figure 3 is a block diagram of the setup using the ADRV9001 evaluation board (EVB) Tx1 is the transmit channel. The Tx signal must first go through a filter to get rid of harmonics that may make the DPD unstable. The Tx signal is then passed through a simple Minicircuits gain block to increase the signal power level to be able to push the PA into saturation. The gain block is a fixed 40dB so we have the flexibililty on the ADRV9002 side to use the attneuation to set the initial power level for the loopback. The PA outputs around 40dBm so the attneuators next to the PA must be rated to be able to take the 10W of power. In this loopback there is a 20W 20dB attneuator followed by a 10W 10dB and then 2W 20dB to bring the power level down to -10dBm going into the coupler. The coupler also has its own losses that we have claibrated earlier. The cables also have a loss and the sum of these leaves us with -18dBm going into the Rx port on the EVB. There is a little bit of torrerance here, the power level to the Rx1B input should be -18dBm +-5dB for the DPD to operate correctly. This level is not user configurable.
The user needs to be aware of the kind of data being transmitted, for example if the data has a high PAR then the Tx data will need to be backed off enough so as not to saturate the DACs when the signal goes through the peak expansion (pre distortion). There is no crst factor reduction block in the ADRV9002, the user should be aware of this and make provisions to apply crest factor to all the signals being supplied to the ADRV9002 for transmitting. The importnace of this and other tuning methods will be discussed in the advanced DPD tutorial.
Figure 3. Simple Example DPD Block Diagram
TES setup
With this simple setup the user can then use the TES to enable the DPD. For more details on any of the steps below please see the User Guide section on Digital Pre-Distortion and ADRV9001 Evaluation System.
- After successfully connecting to the FPGA, in the Configure tab select an LTE TDD setup.
Figure 4. Device Configuration
- The external path delay will need to be calibrated. This can be done in the with the Iron Python script window in the View Load the ‘External_Delay_Measurement.py’ script. This will return the value in ps for the ‘Path Delay’ in the next step. This file is located in the install folder for the TES C:\Program Files\Analog Devices\ADRV9001 Transceiver Evaluation Software\IronPython
Figure 5. Iron Python Script Window
- In the Board Configuration tab select the external loopback on the channel that will be performing DPD. Input the peak power and the calibrated path delay.
Figure 6. Board Configuration
- In the Digital Pre-Distortion section of the Advanced Features tab the user can now enable the DPD on the channel of choice. There are options to select the Look Up Table size (larger number of entries provides more granularity)
The Pre-LUT Scale can be used to get better DPD performance if the input signal to the DPD block is too small. The default value is 2 and be changed from 0 to 3.75 in 0.25 steps.
The polynomial terms can be set to Default or when further optimising the user can custom tune the Taps for a better response. For now, we use the default setting.
Figure 7. Advanced Features (DPD)
- In the Digital Pre-Distortion tab, the channel enabled in the Advanced features tab above will also appear enabled here. This tab gives the user the option to increase or decrease the number of samples of real data used to calculate the coefficients. There is an additional power scale that can be used for small input signals.
DPD Activation can be used to prevent the DPD from going unstable if the signal level going to the DPD block drops unexpectedly. For now, these settings can be left as the default values.
Figure 8. Digital Pre-Distortion Tab
- The part can now be Programmed. Enabling the DPD will require a DPD tracking calibration which looks for a feedback signal. If the hardware setup is not set up correctly the device will fail to program.
- Note: In TES version 0.21.0 the DPD updates the coefficients at the start of a frame. If you are using the Automated TDD function the frame length is known and will occur frequently compared to operating in normal mode. In normal mode you will need to Stop and Start the Tx transmitting to trigger a frame and update the DPD coefficients.
- Note: Make sure that the Transmit file being used has no discontinuities between the start and end of the file. The file is being sent in a loop and discontinuities will cause some unwanted spurious that will make destabilise the DPD performance.
Measurement Results
Doing the same measurement with and without DPD is the best way to show the impact. To run without DPD you will need to reset the part, disable DPD and program the part again. The results from this measurement are shown in Figure 9. The yellow trace is the result before the DPD is used and the pink trace is with DPD enabled. This shows a 16dB improvement however all setups with differing PAs will produce different results. Figure 9 is for illustrative purposes only.
Figure 9. Signal Analyser Measurement Example Measurement
The measurements below were taken using the ADRV9002 customer evaluation board controlled by the Transceiver Evaluation Software. The measurements show the results from two different PAs with DPD and without.
Measurement 1 - Tetra1
PA: Sky65160-11
ADRV9002 Profile:
- Tetra1, 144Ksps
- Internal LO
- Tx Continuous On
Transmit Waveform:
- TETRA1_sample_rate_144K_bw_25K
- This can be found in \ADRV9001 Transceiver Evaluation Software\Examples\Tx Data\
- PAR is about 3dB
Figure 10: Measurement 1 - Tetra1
Measurement 2 - LTE10M
PA: Sky66297-11
ADRV9002 Profile:
- TDD LTE10, 15.36Msps
- Internal LO
- Tx Continuous On
Transmit Waveform:
- CFR_sample_rate_15p36M_bw_10M
- This can be found in \ADRV9001 Transceiver Evaluation Software\Examples\Tx Data\
- PAR is about 9dB
Figure 11: Measurement 2 - LTE10M
Measurement 3 - LTE20M
PA: Sky66297-11
ADRV9002 Profile:
- TDD LTE20, 15.36Msps
- Internal LO
- Tx Continuous On
Transmit Waveform:
- CFR_sample_rate_15p36M_bw_10M
- This can be found in \ADRV9001 Transceiver Evaluation Software\Examples\Tx Data\
- PAR is about 9dB
Figure 12: Measurement 3 - LTE20M
MATLAB DPD Analysis Tool
The MATLAB tool is aimed at analyzing the captured data from dpd_capture.py. This is an IronPython script that can be run from the TES to capture Tx and Rx data for analysis. This tool will help check signal integrity, signal alignment, PA compression level and at last the fine tuning of DPD.
Figure 13: MATLAB DPD analysis tool
This DPD analysis tool takes in a .csv file that is gererated in the TES with the dpd_capture.py script. This is run from the Python editor in the View tab.
Figure 14: Python Editor
For more in depth understanding of the DPD features and setup have a look at the whitepaper on The Complete Guide to Troubleshoot and Fine Tune Digital Predistortion
Running this will require a MATLAB runtime engine and this is included in the install package for the DPD Analyser.
The ADRV9002_DPD_Analyser can be downloaded here: ADRV9002_DPD_Analyser.zip
The dpd_capture.py file can be downloaded here: dpd_capture.zip