xilinx FPGA 使用JESD204B与JESD204C协议

以下内容与代码均为原创,仅发布于bilibili,禁止转载

工具
vivado 2021.2
vscode及cmake Verilog 等插件
黑金ZU19EG开发板
ADRV9009 demo板

ubuntu虚拟机+petalinux2021.2 (请给虚拟机分配32G以上内存,否则可能会闪退)

相关IP核licience文件可在xilinx官网免费申请得到 https:///xilinx.entitlenow.com/AcrossUser/main.gsp?product=&tab=&req_hash=&


文档
ug576-ultrascale-gth-transceivers.pdf
ug974-vivado-ultrascale-libraries.pdf
pg198-jesd204-phy.pdf
pg242-jesd204c.pdf
JESD204B-Survival-Guide.pdf
JESD204B-01.pdf
adrv9008-1-w-9008-2-w-9009-w-hardware-reference-manual-ug-1295.pdf
黑金ZU19EG开发板原理图
以上文档均为开源,在百度上都能找到

准备相关资料
先在xilinx官网上下载到上述提到个各个文档
修改ADRV9009驱动
本设计的主要目的是调通JESD接口,故关于AD9009的控制部分可使用ADI提供的例程。在ADI的github上可以找到AD9009的linux驱动,但该驱动同时依赖了ADI自己的JESD模块,故我们在此使用ADI的裸机代码进行修改。在github中查找analogdevicesinc选择no-os然后下载该库
在下载到的目录no-Os-master/projects/adrv9009/src下执行README中的指令,之后将adrv9009这个文件夹复制走。
在复制走的adrv9009文件夹下创建CMakeLists.txt和文件夹src/ad9009,将所有代码放入sec/ad9009中,在src下创建main文件,删除原有的headless.c。在main下调用tailse_setup
CMakeLists.txt
main.cpp
修改devices/adi_hal/no-os-hal.c文件,将里面的spi控制函数替换为在linux下使用的spi控制函数,将gpio_adrv_sysref_req函数中的gpio操作也换为在linux下控制ad9528的函数,也删除原有内容,之后再做修改

之后在VScode中尝试编译工程,根据提示修改相应的代码,直到编译通过
修改后的代码已上传
其余部分有时间慢慢更新