Main Content

PA Memory Polynomial Model Simulation and Verification

This example shows you how to:

  • Define a simple RF Blockset circuit envelope testbench to verify that the extracted PA model is correctly configured for time domain simulation. This step is necessary to make sure that the simulation setup uses the desired port definition and time step.

  • Explore the validity of the model for input signals with a different power level and bandwidth.

Use PA Model for Simulink Circuit Envelope Simulation

This simple Simulink™ testbench shows how to use the PA model for circuit envelope simulation and compare the predicted results with the characterization data.

The top branch uses the PA characterization data, while the bottom branch uses PA data that includes the iterative direct digital predistortion (DPD) linearization. The spectrum analyzer directly compares the measured and predicted waveforms, and additionally shows the spectrum of the difference between the two.

Load the variables from the Preprocess Measured Data for PA Model Identification and Generalize Memory Polynomial Power Amplifier Model Fitting examples.

load('step1variables.mat')
load('step2variables.mat')
model = 'verificationPA';
open_system(model)
sim(model,numDataPts*Tstep/3);

Use PA Model Together With DPD Algorithm

Thie second Simulink testbench shows how to linearize the PA model, including an adaptive digital predistortion algorithm. The output signal is compared with the measured waveforms including iterative direct DPD and the original data. This example uses a time domain scope to verify that the input voltage of the PA does not exceed the dynamic range over which it was characterized. For this example, the maximum input voltage of the data used to identify the PA model was 0.6 V, therefore this limit should not be exceeded when simulating the PA model together with the DPD algorithm. Exceeding the characterization range will lead to incorrect results, as well as potential convergence issues.

model = 'DPD';
open_system(model)
sim(model,numDataPts*Tstep/3);