使用LVDS数据接口,AD9361与BBP数据主要接口如下图
DATA_CLK:DATA_CLK是一个差分LVDS信号,AD9361产生,并作为接收数据路径的主时钟提供给BBP。BBP使用该主时钟作为接口数据传输和采样数据基带处理的时序参考。在接收数据期间,DATA_CLK为Rx_D[5:0]信号提供DDR操作的源同步时序。 SDR在LVDS模式下不可用。DATA_CLK的频率取决于系统架构(射频通道数量、过采样程度和带宽模式),通过对AD9361的SPI写来设置。在接口空闲期间,AD9361可以停止DATA_CLK来降低功耗。
FB_CLK:(BBP驱动 LVDS信号)FB_CLK在发射时为Tx_D[5:0]信号提供DDR操作的源同步时序。BBP可以在接口空闲期间停止FB_CLK来降低功耗。
Rx_FRAME : (AD9361驱动 LVDS信号) Rx_FRAME高转换时表示帧的开始,可以设置为突发开始时的单个高电平转换,并在整个突发期间保持高电平,也可以设置为在每个帧开始时具有上升沿的脉冲序列(50%占空比)。
Tx_FRAME: (BBP驱动 LVDS信号)Tx_FRAME高转换表示帧的开始,可以在突发开始时进行单个高电平转换,并在整个突发期间保持高电平,也可以设置在每个帧开始时具有上升沿的脉冲序列(50%占空比)。AD9361一直传输空数据(全零),直到Tx_FRAME开始指示有效数据。
Rx_D[5:0]: Rx_D[5:0]是一条差分LVDS数据总线,由六个差分对组成。数据以成对数据字的形式在12位数据总线上传输。
Tx_D[5:0] :Tx_D[5:0]是一条差分LVDS数据总线,由六个差分对组成。数据以成对数据字的形式在12位数据总线上传输。
根据这个时序图,在第一个数据时钟输出IQ数据的高6位,第二个时钟输出IQ数据的低6位,所以一个RX_FRAME信号周期拼接输出一个I和Q数据。
刚开始接触AD9361时候,在网上看到多种配置方案,有STM32+AD9361+FPGA,通过stm32来配置ad9361,然后数据处理部分通过FPGA来实现,这个方案我试过,奈何本人C语言功底太差,移植后的程序,一编译都是错,记得当时有个内存分配,不释放程序跑跑就死了,还有就是当时啥也不懂,不知道什么样才是配置成功,也不知道怎么来验证;还有就是用FPGA+AD9361或者ZYNQ+AD9361,后面那个ZYNQ来配置ad9361资料很多,是使用zynq的ps端来进行配置,adi官网就有,里面有详细介绍每个函数的功能
这边我把下载的一些文件放在这里ad9361相关开发手册
因为我们选择的是FPGA+ad9361的方案,所以芯片配置和数据处理都在FPGA上实现。