How to config DPD on AD9375?


I use default DPDconfig to configure DPD on my custom board:

static mykonosDpdConfig_t dpdConfig =
    10,              /* 1/2^(damping + 8) fraction of power `forgotten' per sample (default: `1/8192' = 5, valid 0 to 15), 0 = infinite damping*/
    1,              /* number of weights to use for int8_cpx weights weights member of this structure (default = 1)*/
    2,              /* DPD model version: one of four different generalized polynomial models: 0 = same as R0 silicon, 1-3 are new and the best one depends on the PA (default: 2)*/
    1,              /* 1 = Update saved model whenever peak Tx digital RMS is within 1dB of historical peak Tx RMS*/
    20,             /* Determines how much weight the loaded prior model has on DPD modeling (Valid 0 - 32, default 20)*/
    0,              /* Default off = 0, 1=enables automatic outlier removal during DPD modeling */
    512,            /* Number of samples to capture (default: 512, valid 64-32768)*/
    4096,           /* threshold for sample in AM-AM plot outside of 1:1 line to be thrown out. (default: 50% = 8192/2, valid 8192 to 1)*/
    0,              /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
    255,            /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range  1 to 8191)*/
    {{64,0},{0,0},{0,0}}/* DPD model error weighting (real/imag valid from -128 to 127)*/

My system have multi mode BPSK, QPSK, QUAM16,QUAM64 with bandwidth 5MHz, 10MHz, 20Mhz. 

I have feedback Tx2 signal into ORX2 with power -24dbm and configure dpd follow ug992. But i don't see any different between have setup DPD and no have DPD.

Here is status that I read using MYKONOS_getDpdStatus:

 dpdStatus.dpdErrorStatus = 0,

dpdStatus.dpdExtPathDelay = 0x73B ,

dpdStatus.dpdIterCount = 0,

dpdStatus.dpdMaxAdaptation = 0,

dpdStatus.dpdModelErrorPercent = 1000,

dpdStatus.dpdTrackCount = 0

Can you suggest for me how to solve? Thanks. This is my output from tx:

dpdStatus.dpdErrorStatus = 0, dpdStatus.dpdExtPathDelay = 0x73B , dpdStatus.dpdIterCount = 0, dpdStatus.dpdMaxAdaptation = 0, dpdStatus.dpdModelErrorPercent = 1000, dpdStatus.dpdTrackCount = 0
[edited by: sonminh at 2:00 AM (GMT 0) on 24 Apr 2020]

Top Replies

    •  Analog Employees 
    Jun 17, 2020 in reply to sonminh +1 verified
    BUT I don't understand why system no have dpd run better than system have DPD.

    What do you mean by run better here ? 

Parents Reply Children
  • Yes, although spectrum of dpd better than, but may be DPD deteriorate EVM or increase packet loss

    I have tried transmit tone sine with dpd and no dpd on board 1 and then log IQ receiver on board 2. Then plot spectrum in matlab.

    here is with dpd:

    here is no dpd

  • 0
    •  Analog Employees 
    on Jun 17, 2020 12:28 PM 4 months ago in reply to sonminh

    Can you measure TX output on spectrum analyzer and measure EVM on both cases .? 

    What is the Tx power going into Rx ? The specturm looks like the Rx is saturating or the digital input power to tX is too high .

    \You can try using -6 dBFS for tone. For modulated waveforms back off digital as per PAR+ some margin.

  • Above plot  is 2 tone sine 3Mhz and 10Mhz is logged from RX receiver in case no DPD. (Tx output on board 1 is 2 tone sine signal  and log IQ on board 2 ). It could have harmonic but no have noises as case have dpd. I couldn't measure EVM. But why dpd make output tx be deteriorated ?

  • 0
    •  Analog Employees 
    on Jun 18, 2020 4:19 AM 4 months ago in reply to sonminh

    Not sure why you are measuring DPD performance with 2 tone signal. What is DPD status mykonosDpdStatus_t. 

    You need to first find out Tx EVM after applying CFR No DPD . If CFR is based on hard clipping EVM & through put will deteriorate.

    From the ACLR plot with DPD that you shared previously , ACLR is improving means , EVM should improve and this should not impact through put.

  • After applying CFR with no dpd, system run at mode custom waveform QAM64 work well with 100Mbps, So, I guess Tx EVM good.

    With applying CFR with DPD, I veryfied DPDStatus every 1s. It return in order
    dpdStatus.dpdErrorStatus: ,dpdStatus.dpdExtPathDelay, dpdStatus.dpdIterCount, dpdStatus.dpdMaxAdaptation, dpdStatus.dpdModelErrorPercent, dpdStatus.dpdTrackCount

    DPDStatus: 0 0x740 0xC6 0x11D3 0x25 0xC6
    DPDStatus: 0 0x740 0xCA 0x11D3 0x26 0xCA
    DPDStatus: 0 0x740 0xCE 0x11D3 0x25 0xCE
    DPDStatus: 0 0x740 0xD2 0x11D3 0x27 0xD2
    DPDStatus: 0 0x740 0xD6 0x11D3 0x28 0xD6
    DPDStatus: 0 0x740 0xDA 0x11D3 0x27 0xDA
    DPDStatus: 0 0x740 0xDE 0x11D3 0x28 0xDE
    DPDStatus: 0 0x740 0xE2 0x11D3 0x25 0xE2
    DPDStatus: 0 0x740 0xE6 0x11D3 0x27 0xE6
    DPDStatus: 0 0x740 0xF2 0x12CE 0x24 0xF2

    Because after applying DPD, my system seems run not good as no have dpd. So i don't know how to do next. Although my system run at 20Mhz bandwidth, I still  measuring DPD performance with 2 tone signal  to can see spectrum clearly.

    Can you give solution?