ADALM PLUTO clk custom IP

Hello.

I'm Alex. I'm using the Adalm Pluto board for a SDR application and I wanted to substitute the Interpolator IP in the Vivado design for a custom VHDL IP. This new IP will also get the data from the DMA and send it to the AXI_AD9631 core. My questions are related with the use of the sampling frequency configuration using libiio. 

As I think, when you configure the DAC sampling frequency in the transceiver (using the ad9361_phy libiio device), you are also configuring this value in the AXI_AD9631 core and its generate a l_clk signal with the desirable sample rate to manage the interpolator and dma controller clk. Is it that correct? How the DMA controller knows that the interpolation factor is 8 and change its read frequency?. Also I think that the interpolator block knows about this configuration reading from up_dac_gpio_out port. I found in your wiki these registers are used to know the changes in the driver configuration. Is there any information about what does every bit mean?

Moreover, is there any information about the hardware changes when you configure the drivers from Linux? is there also information about how to modify those drivers with custom parameters? 

Thanks in advance. 

Alex

  • Hey,

    Sorry for the late reply.

    Your question has 2 parts, one for HDL and one for Linux.

    For HDL, you can take a look at this example of how to add filters/processing:

    https://wiki.analog.com/resources/fpga/docs/hdl/fmcomms2_fir_filt

    Regarding the Linux part:

    Moreover, is there any information about the hardware changes when you configure the drivers from Linux? is there also information about how to modify those drivers with custom parameters? 

    This question is a bit generic.

    In short, if you change something in HDL, some changes need to be reflected in the Linux driver.

    But this depends on the change.

    For example, a few of the IP cores provided by us, have regmaps:

    https://wiki.analog.com/resources/fpga/docs/hdl/regmap

    The addresses and HW description (for Linux) are provided in device-trees, and then the drivers handles bit in the registers to control the IP cores.

    If you look into the dma-axi driver in Linux, or the axi-clk-gen driver (in Linux), you will see some of the reg values (from the regmap link) used to control the IP cores.

    Thanks

    Alex