脱离ADI官方SDK!纯FPGA硬件SPI驱动AD9361(完整工程+源码解析)
因最近公司需要,借此机会和大家一起学习AD9361
制作不易,记得三连哦,给我动力,持续更新!
工程文件下载: 提取码:g9jy
----------------------------------------------------------------------------------------
一、新建一个vivado工程
新建vivado硬件工程,然后分别把图中这几个文件代码导入工程中,

二、AD9361配置脚本文件
此文件就是上一节,通过AD936X Evaluation Software软件配置好的,脚本文件转化成Verilog的脚本文件,里面包含了所有的ad9361的寄存器配置信息。

三、顶层设计
顶层主要连接各个模块例化

部分代码:
四、数据处理模块
ad9361数据处理模块,此模块设计了采用LVDS传输模式的接口,接口设计清晰,可以嫁接到任何ad9361和其他FPGA开发板的接口连接,并且接口均为ad9361的接口,并没有其余无用的端口,移植起来非常方便。其中包含了9361数据发射和数据接收。

部分代码:
五、ad9361初始化模块
根据上一节的ad9361_lut.v脚本文件,可以将读取脚本用状态机实现,分为三个状态为写状态、读状态和延时状态,并通过循环来反复执行这些状态,直到所有寄存器都被配置完毕。最后,可以将状态机设置为一个固定状态,并发出配置结束的标志信号。
为了确保正常操作,我建议将时钟频率设置为25MHz,并与SPI读写时钟保持一致。这样可以确保数据传输的稳定性和可靠性。
通过这种方式,您可以有效地配置AD9361芯片的寄存器,并在配置完成后获得一个明确的结束标志,以确保配置的正确性和完整性。

通过ad9361_config_writedata传输到SPI读写模块进行读写操作,实现对9361配置脚本的读写,从而配置9361

部分代码:
六、SPI驱动模块


部分代码:
七、下板测试


并且通过ila查看了每个读寄存器的值,均符合要求。
本次纯逻辑配置ad9361设计完成,更多设计后续继续更新使用纯verilog实现AD9361的各种调制解调

浙公网安备 33010602011771号