赞
踩
因最近公司需要,借此机会和大家一起学习AD9361
制作不易,记得三连哦,给我动力,持续更新!
工程文件下载:纯硬件SPI配置AD9361 提取码:g9jy
目录:
本文将对ADI官方提供的测试程序,zedboard+ad9361中PL部分进行解读:
vivado2015.4.2
zedboard+ad9361
从ad9361接收数据:
全部都是从片外直接接到ad9361上面,然后接到ad9361输出引脚,
输出位四个16位的数据,i0,q0,i1,q1,以及他们各自的enable和valid(enable是控制信号,valid表示当前位有没有效)
小tips:在bd图中,左边对应输入,右边对应输出
ad9361中输出的数据,下一步传输到fifo输入端口
显然这个fifo不是一个标准的fifo,而是一个定制对的fifo:
输入时钟din_clk:是由ad9361模块输出,具体来说是由ad9361外部的差分时钟产生
输出时钟dout_clk:是由zynq产生的时钟,是一个贯穿整个模块的时钟
由此可以看出来,这个异步fifo是用来解决数据跨时钟域问题的
数据经过fifo,把数据时钟同步到本地时钟后,然后下一步到达ila:
ila(Integrated logic analyzer):在线逻辑分析仪
可以用vivado在线逻辑分析仪进行数据分析
数据经过fifo,把数据时钟同步到本地时钟后,同时下一步到达pack:
此模块功能为:将4路16位数据进行打包,打包成一路64位数据(因为要存到存储器中,所以要进行打包)
一般存储器存储位宽为:32位,64位,128位........
数据经过打包之后,以fifo形式,64位数据进入dma:
此模块功能为:将fifo形式的数据转化成AXI总线控制的形式,此时输出的master(谁发起控制谁是master)
数据经过AXI总线到达interconnect:
axi总线经过interconnect转化一下协议,然后传送到PS里面。
此过程实际上就上一个接收数据的逆向传输过程,具体不做介绍。
从AD9361接收数据:
axi_ad9361 -> ad9361的处理接口
util_adc9361_adc_fifo -> 时钟源转化
util_cpack_v1_0[4路16BIT转成64BIT的FIFO接口] ->
axi_ad9361_dac_dma -> [FIFO接口转成AXI总线]
axi_hp2_interconnect -> [必备的]
S_AXI_HP2 : high speed port2 in PS .通过此通道可以直接(读)写DDR存储器。
发送数据给AD9361:
S_AXI_HP1 : high speed port1 in PS . -> 通过此通道可以直接读(写)DDR存储器。
axi_hp1_interconnect -> AXI总线协议转换[必备的]
axi_ad9361_dac_dma -> AXI总线转成FIFO接口,有axi_lite接口控制。
util_ad9361_dac_upack -> 64位数据总线转成4个16位数据。
axi_da9361 -> ad9361的处理接口
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。