Skip to content

kaycelin/ic_RF_PA_DPD

Repository files navigation

DSP of RF PA and DPD

Summary of simulation

  • Summary_PA vs DPD.md
  • Summary_DPD coefs. applied vs Waveform.md
  • Summary_DPD coefs. applied vs PA.md

Main: PA_DPD_main

  • Initialization
flag_orx_ripple = 0   
flag_orx_impair = 1   
flag_pa_awgn = 0    
flag_pa_combine = 0   
flag_pa_product = '20W'   
flag_pa_Nstages = 1   
  • Power assignment
pwrdBm_In_target = 3.5
  • AWGN
pwrNoise_dBmHz = -174
  • Signal settings
condSig.aclr = 1;   
condSig.aclr_fs = fs;   
condSig.aclr_bwInband = bwInband;   
condSig.aclr_foffset = foffset;   
condSig.ccdf = 1;   
condSig.ccdf_Nsamps = numel(x);   
condSig.pwr = 1;    
condSig.pwr_fs = fs;    
condSig.pwr_bwInband = bwInband;    
  • PA Model: Memoryless/am2pm/noise ...
% pa model
pa.model = "Cubic polynomial"; % model of am/am and am/pm   
pa.gain_dB = 32; % Input gain_dB   
pa.am2pm = []; % Input am/pm   
pa.oip3_dBm = []; % Input oip3    
pa.opsat_W = 20;   
pa.opsat_dBm = 10*log10(1000*pa.opsat_W);   
pa.TOISpecification = 'OPsat';   

% pa ampm
pa_ampm_pwr = [10 15 20 25 30 35 38 40]   
pa_ampm_shifter = [0 1 2 4.5 9 15 19.5 19.5]   
pa_ampm_pwrIn = pa_ampm_pwr - pa.gain_dB     

% pa noise
pwrNoisedBmHz = -150

% pa combination and phaseShift
pa.pa_cmb_Mstages = 2;
pa.pa_cmb_Pshifts = [0, 0]
  • PA output
    • generate pa model class

paCls =

powerAmp with properties:

               Method: 'paModel'
             pa_model: "Cubic polynomial"
           pa_gain_dB: 32
         pa_am2pm_deg: 0
  pa_TOISpecification: "OPsat"
          pa_iip3_dBm: Inf
          pa_oip3_dBm: Inf
         pa_ip1dB_dBm: Inf
         pa_op1dB_dBm: Inf
         pa_ipsat_dBm: Inf
         pa_opsat_dBm: 43.0102999566398
pa_PowerLowerLimit_In: -30
pa_PowerUpperLimit_In: Inf
        pa_Table_cell: {[0]}
           pa_opsat_W: 20
            am2pm_deg: {[8×2 double]}
          noise_dBmHz: -150
              flat_dB: 0
                    x: []
                    y: []
               pwrdBm: []
                   fs: 1966080000
              Nstages: 1
             lna_NFdB: NaN
             flag_lna: 'pa'
                  plt: [1×1 struct]
       pa_cmb_Mstages: 0
       pa_cmb_Pshifts: 0
  • plot settings
paCls.plt.fnum = 1;
paCls.plt.flag = 'aclr';
paCls.plt.fs = fs;
paCls.plt.bwInband = bwInband;
paCls.plt.foffset = foffset;
paCls.plt.Nfft = Nfft;
paCls.plt.legend = '20W, power combine = 0'
  • output

  • Plot: AM/AM, AM/PM
plt_ampm.Rohm = 1;
plt_ampm.unit = 'dBm';
plt_ampm.xlim = [0, 40]
plt_ampm.type = 'amgain';

  • CCDF

  • ACLR

  • Learning parameters, input: dpm: dpd parameters

DPM.order_poly = 9;
DPM.depth_memory = 7;
DPM.Niterations = 30;
DPM.flag_even_order_poly = 1;
DPM.flag_conj = 0;   % Conjugate branch. Currently only set up for MP (lag = 0)
DPM.flag_dc_term = 0; % Adds an additional term for DC
DPM.flag_LS_exclude_zero_second = 0;
DPM.modelFit = 'WIN'; % 'GMP'/'HAM'/'WIN'
DPM.evm = bwInband;
DPM.learning_arc = 'DLA'; % better!
DPM.fnum = 0721;
DPM.flag_Multicarrier = '2C';
  • ORX parameters
DPM.ORX_RippledB = 0;
DPM.ORX_SNRdB = 80;
DPM.ORX_SNRdB = [];
  • Plot parameters
plt.fs = fs;
plt.bwInband = bwInband;
plt.offset = foffset;
plt.dispTitle = [];
plt.legend = paCls.plt.legend
plt.title = 'DPD, ACLR'
  • DPD learning

    • generate dpd class

    DPD_g with properties:

                   order_poly: 9
                 depth_memory: 7
               order_poly_lag: 0
             depth_memory_lag: 0
                    depth_lag: 0
                  Niterations: 30
         flag_even_order_poly: 1
                    flag_conj: 0
                 flag_dc_term: 0
                 learning_arc: 'DLA'
                learning_rate: []
              learning_method: []
    flag_LS_exclude_zero_second: 0
                     modelFit: 'WIN'
            flag_Multicarrier: '2C'
                   ORX_FlatdB: 0
                    ORX_SNRdB: []
                      ORX_LPF: []
                          CFR: []
                 paprdB_limit: []
                         fnum: []
                    coeffs_PM: [63×1 double]
                      Ncoeffs: 63
            coeffs_PM_history: []
                       paprdB: []
          sigOut_u_predistort: []
               sigOut_y_paout: []
                          evm: [-249140000 … ]
                    ACLRdBcal: []
                       NMSEdB: []
                 ACLRdBmargin: -1
                 IpwrdBerrCal: []
              flag_Ipwr_check: 1
              flag_aclr_check: {[70]}
          DPDexpansionDBLimit: 5
           DPDexpanIterations: []
    
    • learning

    dpd =

    DPD_g with properties:
    
                   order_poly: 9
                 depth_memory: 7
               order_poly_lag: 0
             depth_memory_lag: 0
                    depth_lag: 0
                  Niterations: 30
         flag_even_order_poly: 1
                    flag_conj: 0
                 flag_dc_term: 0
                 learning_arc: 'DLA'
                learning_rate: []
              learning_method: []
    flag_LS_exclude_zero_second: 0
                     modelFit: 'WIN'
            flag_Multicarrier: '2C'
                   ORX_FlatdB: 0
                    ORX_SNRdB: []
                      ORX_LPF: []
                          CFR: []
                 paprdB_limit: []
                         fnum: []
                    coeffs_PM: [63×1 double]
                      Ncoeffs: 63
            coeffs_PM_history: [63×30 double]
                       paprdB: [7.35 7.89 8.13 … ]
          sigOut_u_predistort: [1966080×1 double]
               sigOut_y_paout: [1966080×1 double]
                          evm: 0.943088130181803
                    ACLRdBcal: 50.28
                       NMSEdB: -40.53
                 ACLRdBmargin: -19.72
                 IpwrdBerrCal: -0.25
              flag_Ipwr_check: 1
              flag_aclr_check: {[70]}
          DPDexpansionDBLimit: 5
           DPDexpanIterations: []
    
  • DPD result: ACLR

  • DPD result: CCDF

  • DPD result: AM/AM, AM/PM

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages