See the README.PDF for an explanation of the contents of this zip file and how to use the models. See DPD.PDF for general background on PA and DPD modeling.
Digital pre-distortion (DPD) is a baseband signal processing technique that corrects for impairments inherent to RF power amplifiers (PAs). These impairments cause out-of-band emissions or spectral regrowth and in-band distortion which correlates with an increased bit-error-rate (BER). Wideband signals with a high peak-to-average ratio, as is characteristic of LTE/4G transmitters, are particulary susceptible to these unwanted effects.
In this paper, we illustrate a workflow for modeling and simulating PAs and DPDs. The models shown in this article are based on two technical papers,  and . We start from PA measurements. From measurements, we derive a static DPD design based on a memory polynomial. Such a polynomial corrects for both the non-linearities and memory effects in the PA. For simulation purposes, we construct a system-level model to evaluate the DPD’s effectiveness. Because any PAs characteristics will vary over time and operating conditions, we extend the static DPD design to an adaptive one. We evaluate two adaptive DPD designs, one based on the (Least-Mean Square) LMS algorithm and a second using the Recurive Predictor Error Method (RPEM) algorithm.
i want to aplay your code for a OFDM signal how i can do it ?
Hi are you sure that the fit_memory_poly_model works correctly?It seems that referring to past values is not there. for example:
if you analyze x_terms in the scripts for M=2 lets say:
x_terms(1,1:2)=X(1:2)abs(X(1:2)).^K-1 . Here X(1) is the current input and X(2) should be the previous input according to the mattrix formation in DPD.pdf. However, looking at DPD_analysis.m X(2) corresponds to up(2) which is the next input to the mattrix. Any explanation on this would be much appreciated
HI Bilal Khan
I'm using this DPD document for real PA,but the ACPR of (before DPD) is better than (After DPD).maybe we could have a talk and fix this problem?
my mail ID: firstname.lastname@example.org
I hope someone still visit here and help me out with a problem. I am using polynomial model for estimating DPD coefficients based on LS solution. The problem is my memoryless model works better than memory polynomial model for DPD (in terms of ACPR reduction not EVM). I dont understnad this. WIth memory polynomial model i get a little extra power in one adjacent channel and the spectrum is unsymmetrical i couldnt understand it why? I have tried the functions provided in this file aswell but the same problem i am getting.
Does anyone ever encounter such problme or if someone can help me out that would be great. Btw i am doing measurement with real PA not simulink model. I am using ARB, PSG UXA in my loop.
very useful for beginners.thks!
can any one help me for creating VHLD code for this model or any one testing this model in any FPGA and please share that code
my mail id - email@example.com
Very helpful for someone trying to learn this predistortion game
the simulated am/am curve lies in the linear range of the Seleh model; and on increasing the slide gain to about 0.8 (for RPEM) the feedback fails...
looks like a function called "fit_memory_poly_model" got missing.
2014.07.31 - Added rpem_dpd_coef.mat which was missing. This impacted dpd_adapt_verify.slx.
2014.07.26 - Added fit_memory_poly_model.m as it was missing from the original submission. Thank you Raymond Wu for pointing this out.
Create scripts with code, output, and formatted text in a single executable document.