DPDcontrol Application

The application DPDcontrol is a command-line application dedicated to LimeSDR QPCIe and LimeSDR-PCIe-5G boards.

Once the test waveforms are played, the DPDcontrol application can be started.

Warning

It is not allowed to use the DPDcontrol application and DPDViewer at the same time. Therefore, before starting the DPDcontrol, close the DPDViewer.

Note

It is possible to linearize PAs using DPDcontrol, and then, after closing the DPDcontrol, open LimeSuiteGUI, its DPDViewer window, and check the spectrum of the PA output signals. The relevant signal is signal x which is a measure of PA output.

Note

The LMS3 is used as DPD monitoring path. Clock for the LMS3 analog interfaces should be set to 61.44 MHz. The clock configuration is provided via LimeSuiteGUI CDCM6208 window.

  • Open Modules → CDCM6208

  • Check the Y6 and Y7 CDCM outputs (for LMS#3 ADCs) in the Frequency planning box.

  • Enter frequency of 61.44 in the Frequency requested boxes. Click Calculate.

  • Click Write All to write the new configuration into the CDCM6208 chip.

Note

  • open Modules → LMS#1 CFR controls window

  • please verify that following boxes are checked: ResetN, LMS1 txen, DPD cap.en., LMS3 mon.path, DPD/CFR enable

Note

In LimeSuiteGUI, for selected LMS3 chip, please verify:

  • SXR tab → Enable SXR/SXT module is checked

  • SXT tab → Enable SXR/SXT module is unchecked

The very basic DPDcontrol operations are explained through steps 1-7.

  1. Open the terminal in following folder, which belongs the LimeSuiteGUI installation:

    <LimeSuite install folder>/LimeSuite/src/DPD_CommandMode/
    
  2. Compile the DPDcontrol application:

    make
    
  3. Start the application with sudo:

    sudo ./DPDcontrol
    

Note

If the application DPDcontrol is started without any argument, the DPD nonlinearity order QADPD_M is defined by the value which is last stored in DPDcontrol configuration file. Please, find the description of storeConfigDPD command below.

Note

If the application is started with an argument, the argument represents the DPD nonlinearity order - QADPD_M, which is an integer value in the range from 1 to 3. This parameter should be stored into DPDcontrol configuration file. Use storeConfigDPD command after DPD is being calibrated.

  1. To calibrate DPD parameters (calculate DPD digital gain and ND delay):

    calibrateDPD {1, 2, all}
    

Note

The argument all refers to both transmitting channels; available arguments are 1, 2 or all, particularly for first channel A, second channel named B, or both channels.

Note

Expected values for delay ND are in the range [74 – 85].

If in consecutive DPD calibration procedures, different, random values for ND are obtained, which are out of specified range, there is an RF reflection or interference.

To solve this, check the RF cables. The cable dedicated for DPD monitoring path (from PA’s coupling output to board) must have strong shield. Else, place 10dBm-20dBm RF attenuator at board receive port, dedicated to DPD monitoring input, rather than at PA’s coupling output.

The other option is to press in LimeSuiteGUI, for LMS3 chip, in SXR tab, Calculate, Tune.

Note

The DPD digital gain should be in range [1.0-3.0], otherwise change the LMS3 LMS7002M receiver gain settings. Open LimeSuiteGUI, select the LMS3 chp, in tab RFE modify LNA; in tab RBB modify PGA gain settings.

Note

When running the LTE stack, the DPD calibration procedure requires that the data payload is generated by connecting mobile phones to BTS and executing MagicIperf application on both phones.

  1. When DPD is calibrated, the DPD training operation is started by:

    startDPD {1, 2, all}
    

Note

Again, like in previous commands, the argument all refers to both transmitting channels; available arguments are 1, 2 or all, particularly for first channel A, second channel B or both channels.

Note

DPD training operation is performed periodically for both transmitting channels, the calculation period is equal to four seconds, just in a few iterations PAs get linearized.

Note

The information about calculation errors obtained by training process can be useful. Moreover, the DPDcontrol automatically measures and displays the ACPR results. The ACPR parameters are configured via commands ChannelSpacing and ChannelBandwidth explained below.

The information is displayed or disabled by successive entering the character “l” in command line.

  1. To stop DPD training operation use:

    stopDPD {1, 2, all}
    
  2. To stop the application:

    quit
    

The application DPDcontrol has some additional useful commands which are explained below:

  1. The entire command set provided by:

    help
    
  2. To store the DPD parameters into DPDcontrol configuration file (DPD digital gain and ND delay, which are previously determined by calibrateDPD; and DPD nonlinearity order – QADPD_M, defined by DPDcontrol application argument), use:

    saveConfigDPD {1, 2, all}
    
  3. The DPD parameters (DPD digital gain, ND delay and QADPD_M) are loaded from configuration file using:

    loadConfigDPD {1, 2, all}
    

Note

When the application DPDcontrol is started, the parameters DPD digital gain and ND delay are automatically loaded from DPDcontrol configuration file.

When application is started without arguments, the DPD nonlinearity order QADPD_M is read from configuration file. When DPDcontrol is started with an argument, the argument value is the new value for QADPD_M.

  1. There is an option to store all calculated DPD coefficients (after training process is stopped with stopDPD command) into application’s configuration file.

    saveCoeffDPD {1, 2, all}
    
  2. To read the DPD coefficients from configuration file:

    loadCoeffDPD {1, 2, all}
    
  3. To read current status of DPD parameters (DPD digital gain, ND delay and QADPD_M), or status of the PAs and DCDCs for both transmitting channels, use the following command:

    readConfigDPD {1, 2, all}
    
  4. To reset all DPD coefficients:

    resetDPD {1, 2, all}
    

Note

The result of this command is the same as DPD is bypassed.

  1. DPDcontrol automatically measures the ACPR which parameters ChannelSpacing and ChannelBandwidth are configured via:

    setChannelSpacing {1, 2, all} <[1.0 .. 20.0]>
    
    setChannelBandwidth {1, 2, all} <[1.0 .. 20.0]>