I recently start to use Analog Devices' VIVADO 2014.4.1 FMCOMMS1 reference design to implement my OFDM transceiver. In the recent past I successfully used the ISE-based reference design for the same purpose. I'm using the No-OS drivers and KC705.
I need to connect the output of my baseband TX core to the DAC. I would like to add an additional DAC data input. Going through the MicroBlaze code and the HDL, I have some doubts that I hope you can help me with.
In the axi_ad9122_channel.v file, lines 138 to 153, you have a mux to select the DAC data source: dma_data, dac_pat_data or dac_dds_data. The selection is controlled by dac_data_sel_s. If I'm not mistaken, the value of dac_data_sel_s is defined in up_dac_channel.v, lines 250-251. To select a DAC source we have to write to DAC core up_waddr=0x1106/0x1116 (channel 0/1). Taking in consideration line 191 of up_axi.v, I would expect to see a DAC core write to register addresses 0x4418/4458 in the MicroBlaze code. Instead, I could only find DAC_core writes to ADI_REG_CNTRL_2, using dac_core.h ADI_DATA_SEL define, like in cf_axi_dds.c, lines 337 and 362, to define the DAC data source.
I didn't understand this. This is using the least significant digit of register address 0x4048 to define the DAC source. Looking back at the HDL code, this DAC core write is decoded in up_dac_common.v, lines 244 - 249. Here, the least significant data digit is not used!
What is wrong with my analysis?
What should I do in the HDL and MicroBlaze code to add a new DAC data source?