AD9361 随笔记录 AXI_AD9361模块的分析之对外接口篇
之前对官方的AXI_AD9361这个模块内部的输入输出接口进行了详细的分析,分析的详细视频发布在自己所卖板子的配套的教程视频里面。这里我们从AXI_LITE寄存器层面进行分析,看看控制总线接口对外公布了多少寄存器以及各自的功能。
下图表示了在系统中的位置:
我们先来看接口:分这些部分:
1,接AD9361的引脚,如下图:
具体输入有
rx_clk_n,rx_clk_p,
rx_frame_in_p,rx_frame_in_n,
rx_data_in_p[5:0],rx_data_in_n[5:0]
输出有:
tx_clk_out_p,tx_clk_out_n,
tx_frame_out_p,tx_frame_out_n,
tx_data_out_p[5:0],tx_data_out_n[5:0]
enable,txnrx,rst
2,axi_lite接口
s_axi,s_axi_aclk,s_axi_aresetn
3,dac_数据通路和dac控制通路。
其中dac数据通路包含如下接口:
输入部分:
dac_data_i0[15:0],dac_data_q0[15:0],
dac_data_i1[15:0],dac_data_q1[15:0],
dac_dunf(图中忘记加颜色了)
输出部分:
dac_enable_i0,dac_enable_q0,dac_enable_i0,dac_enable_q0,
dac_enable_i1,dac_enable_q1,dac_enable_i1,dac_enable_q1,
dac_r1_mode (此引脚控制时钟选择)。
分析一下走线看到这些脚主要接在了一个util_rfifo(实例名为axi_ad9361_dac_fifo)上。
我们看到这个fifo是没有接口(比如AXI_LITE)进行编程的,所以应该是axi_ad9361模块的这些enable和valid脚对他进行控制。
从axi_ad9361输出的enable和valid信号控制对FIFO的读,当数据已经被读完时候dout_unf输出1,指出已经under flow了。
其实接着对axi_ad9361_dac_fifo进行分析就可以看到这些enable和valid脚又输入给了dac_upack模块,显然就是从ddr里面读书,解包成这些i0,q0,i1,q1。这些不深入分析。
4, adc数据以及控制通路。
输入引脚就一个: adc_dovf 外部输入告知此模块数据已经over flow了,不要再输入了。
输出引脚也很简单:
adc_data_i0[15:0],adc_data_q0[15:0],adc_data_i1[15:0],adc_data_q1[15:0],
adc_enalei0,adc_enaleq0,adc_enalei1,adc_enaleq1,
adc_validi0,adc_validq0,adc_validi1,adc_validq1,
这里enable从字面意思猜测此位使能了。valid则从字面意思推测是对应的数据已经到来了。实际也是这样的。