Post Go back to editing

How to change sampling rate of Quad-MxFE

Category: Software

Hi expert,

I’m currently using the MATLAB example for Quad-MxFE from the following link:


This example uses a 250MHz sampling rate. However, a 5MHz sampling rate is sufficient for my application. The reason I want to reduce the sampling rate is that I need to capture data for much longer duration with one 'rx()' call.

I have read some posts indicating that it is necessary to rebuild the HDL and Linux image to change the sampling rate. By following the build instructions, I was able to rebuild the HDL and the corresponding Linux image. However, I am unsure about which parameters need to be changed.

I would appreciate it if you could explain how to modify the build parameters, including the parameters in the device tree file to set the sampling rate to 5MHz.

  • Hi,

    Just letting you know I saw your thread and I'll try to respond as soon as possible.

    Best regards,

  • Hello  ,

    Which JESD mode are you using? Is it vcu118_quad_ad9081_204c_txmode_11_rxmode_4 that is presented in the wiki page?



  • Hello Filip,

    I'm using "vcu118_quad_ad9081_204c_txmode_11_rxmode_4_revc_nz1".

    Best regards,


  • Hello  ,

    By sampling rate you mean FADC(Range) that is measured in GSPS? Or you mean the frequency of the device_clk that is used in the JESD?

    If you want to reduce the ADC Sample Rate you can go at the minimum FADC of 50 MSPS by changing the JESD configuration! This will reduce the JESD Lane Rate and overall clocking frequencies and the data rate. This is mainly available on the JESD Configurations with L=1 with higher interpolations/decimations:

    For reducing the actual device_clk frequency you need to build a FIFO that adapts the DMA/DDS Samples to the 5Mhz clock which will require additional RTL!

    Best regards!


  • Hello Filip,


    Thank you for your answer.

    To be honest, I do not fully understand the JESD interface. From the perspective of the sample application in MATLAB, when I referred to the sampling rate, I meant the sample rate of the data stored in Rx_data when executing

    Rx_data = rx()

    Currently, this sample rate is 250MSPS, and because there is a limit to the maximum number of samples that can be obtained with a single rx() call, continuous signal capture is possible only for a very short time. Therefore, by lowering the sampling rate, I would like to obtain continuous data for a longer period by a single rx() call.


    From your response, I understand that it is possible to lower the rate to 50MSPS by changing the JESD parameters, but to go below that, the HDL needs to be modified. So, as the first step, I aim to set it to 50MSPS.


    Is it possible to achieve this by simply changing the following related parameters below in


    and recompiling the Linux image?


    What should JESD_MODE be changed to?

    Which parameters need to be changed to set DCM to 48?

    Your advice would be greatly appreciated.


    #define AD9081_TX_JESD_MODE            11  ->  ???

    #define AD9081_TX_JESD_SUBCLASS        1

    #define AD9081_TX_JESD_VERSION         2

    #define AD9081_TX_JESD_M               16  ->  1

    #define AD9081_TX_JESD_F               8   ->  2

    #define AD9081_TX_JESD_K               32

    #define AD9081_TX_JESD_N               16

    #define AD9081_TX_JESD_NP              16

    #define AD9081_TX_JESD_CS              0

    #define AD9081_TX_JESD_L               4   ->  1

    #define AD9081_TX_JESD_S               1

    #define AD9081_TX_JESD_HD              1   ->  0


    #define AD9081_RX_JESD_MODE            4   ->  ???

    #define AD9081_RX_JESD_SUBCLASS        1

    #define AD9081_RX_JESD_VERSION         2

    #define AD9081_RX_JESD_M               8   ->  1

    #define AD9081_RX_JESD_F               8   ->  2

    #define AD9081_RX_JESD_K               32

    #define AD9081_RX_JESD_N               16

    #define AD9081_RX_JESD_NP              16

    #define AD9081_RX_JESD_CS              0

    #define AD9081_RX_JESD_L               2   ->  1

    #define AD9081_RX_JESD_S               1

    #define AD9081_RX_JESD_HD              1   ->  0


    Best regards,