How to work DPD on AD9375 with DPD parameters set by user

I have a question about how to set parameters and work DPD on AD9375 with parameters set .

I confirmed that DPD works on AD9375 with DPD default parameters.

but there is still room for improvement in terms of Adjacent Channel Leakage Radio (ACLR).

So, I tried to change DPD default parameters to custom DPD paramerters by using API function (MYKONOS_configDpd()) and evaluated ACLR. Conseqently, ACLR was unchaned, compared to ACLR with default DPD parameters. 

I'd like to know how to work DPD on AD9375 with custom DPD parameters.

Parents
  • 0
    •  Analog Employees 
    on Jul 16, 2019 12:27 PM over 1 year ago

    What is the ACLR correction you are getting with default DPD parameters?

    What are the custom DPD parameters you are modifying?

    You can download and work with DPD GUI which provides an easy interface for DPD parameters tuning.

    https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html

  • Thank you for your reply.

    Answer 1:

    The ACLR correction is as follows:

    ACLR[dB] DPD OFF/ON
    ACLR1 L : -36.37/-48.35dB
    ACLR1 H : -36.56/-49.17dB
    ACLR2 L : -51.63/-55.78dB
    ACLR2 H : -51.01/-54.00dB

    Answer 2:

    The custom DPD parameters are as follows:

    static mykonosDpdConfig_t dpdConfig = 

        5,              /* 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,//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)*/ 
    }; 

    Answer 3:
     I don't have a AD9375 evaluation board such as ADRV9375-N(W)/PCBZ and work DPD on custom board be composed of FPGA user defined, AD9375, etc.
    So, I can not use DPD GUI and how to tune DPD prameters is only setting those paramters by using MYKONOS API Function.

    Although it is anticipated that custom DPD parametes are set by MYKONOS API function(MYKONOS_configDpd()),
    ACLR correction based on working DPD with custom DPD parameters is nealy equal to ACLR correction based on working DPD with default DPD parameters.
    By using API function(MYKONOS_getDpdConfig()), I comfirmed that custom DPD paramers are set. But it looks like that DPD parameters are not updated in terms of ACLR.

Reply
  • Thank you for your reply.

    Answer 1:

    The ACLR correction is as follows:

    ACLR[dB] DPD OFF/ON
    ACLR1 L : -36.37/-48.35dB
    ACLR1 H : -36.56/-49.17dB
    ACLR2 L : -51.63/-55.78dB
    ACLR2 H : -51.01/-54.00dB

    Answer 2:

    The custom DPD parameters are as follows:

    static mykonosDpdConfig_t dpdConfig = 

        5,              /* 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,//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)*/ 
    }; 

    Answer 3:
     I don't have a AD9375 evaluation board such as ADRV9375-N(W)/PCBZ and work DPD on custom board be composed of FPGA user defined, AD9375, etc.
    So, I can not use DPD GUI and how to tune DPD prameters is only setting those paramters by using MYKONOS API Function.

    Although it is anticipated that custom DPD parametes are set by MYKONOS API function(MYKONOS_configDpd()),
    ACLR correction based on working DPD with custom DPD parameters is nealy equal to ACLR correction based on working DPD with default DPD parameters.
    By using API function(MYKONOS_getDpdConfig()), I comfirmed that custom DPD paramers are set. But it looks like that DPD parameters are not updated in terms of ACLR.

Children
  • 0
    •  Analog Employees 
    on Jul 17, 2019 6:59 AM over 1 year ago in reply to yinaba
    static mykonosDpdConfig_t dpdConfig = 

        5,              /* 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,//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)*/ 
    }; 

    The above shows that you are configuring default values for DPD config.

    You can try tuning the full range for the custom parameters and verify whether that it impacts the ACLR.