ADRV9009 与 zcu102搭建ADI的no os项目

本文分享了作者搭建ZCU102+ADRV909软件无线电平台的过程。从HDL部分的搭建到软件部分的编译,详细记录了每一步操作步骤及所需文件。最终展示了串口打印信息和频谱仪上的频谱观察结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期忙完手头的活,难得有时间继续研究一下自己感兴趣的事情。一直想着把上半年项目采购的一套软件无线电的平台搭建起来(ZCU102+ADRV909),近期做了几个实验,就把自己做的一点进展与大家分享。希望能给感兴趣的朋友带来一点帮助,也请有经验的大神们指点指点。废话不多说,直接进入正题。。。。。。

万里长征第一步,先把系统搭建起来吧!我是参考我之前搭建 的AD9361+zedboard的no os 项目搭建起来,链接:windows 下AD9361的 no-os master 工程搭建_Bronceyang的博客-CSDN博客 其实ADI公司提供的这些no os 开源项目的搭建套路是一样的。举一反三就行了。

一、搭建工程需要的文件

需要下载的东西:

HDL:https ://github.com/analogdevicesinc/hdl/releases

No OS:https://github.com/analogdevicesinc/no-OS

注意:下载的hdl版本要和自己的vivado版本配套,我这次用的是vivado2019.2.

下载网速比较慢的话。可以从我的资源里面下载。

Windows编译环境需要安装Cygwin ,注意安装过程中要一定选make 库。

参考博客:https://blog.csdn.net/u010356768/article/details/90756742

二、HDL部分搭建

我使用的vivado版本为2019.2,大家根据自己的实际情况选择自己的版本。

三条命令:

1.   export PATH=$PATH:/cygdrive/e/install_tool/xilinx/Vivado/2019.2/bin
2.  cd /cygdrive/e/ADRV9009_pro/hdl-master/projects/adrv9009/zcu102
3. make

1.配置环境,新增环境变量,并检查

2.切换到文件目录,make一下就ok了,需要等待一段时间,十多分钟。

make成功之后,ls查看可以看到多了很多文件。

切换带Windows文件目录下可以看到如下,用vivado2019.2 打开adrv9009_zcu102.xpr

 打开block design 可以看到搭建了起来的框图,在软件界面右上可以看到bit文件也已经生成了。

对部分放大可以看到如下

 

 

 三、软件部分的搭建

在Vivado编译环境下,导出.xas文件,并在vitis 中根据.xas为平台搭建应用程序工程。

回到no-os-master文件,进入一下目录,打开READE文件,文件让我们根据自己的硬件平台是xilinx还是altera选择复制需要用到的文件。


# Additional required source files:

#ifdef ALTERA_PLATFORM
	cp ../../../include/axi_io.h devices/adi_hal/
	cp ../../../include/error.h devices/adi_hal/
	cp ../../../include/spi.h devices/adi_hal/
	cp ../../../include/gpio.h devices/adi_hal/
	cp ../../../include/delay.h devices/adi_hal/
	cp ../../../drivers/spi/spi.c devices/adi_hal/
	cp ../../../drivers/platform/altera/axi_io.c devices/adi_hal/
	cp ../../../drivers/platform/altera/altera_spi.c devices/adi_hal/
	cp ../../../drivers/platform/altera/spi_extra.h devices/adi_hal/
	cp ../../../drivers/platform/altera/gpio.c devices/adi_hal/
	cp ../../../drivers/platform/altera/gpio_extra.h devices/adi_hal/
	cp ../../../drivers/platform/altera/delay.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_adc_core/axi_adc_core.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_adc_core/axi_adc_core.h devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dac_core/axi_dac_core.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dac_core/axi_dac_core.h devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dmac/axi_dmac.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dmac/axi_dmac.h devices/adi_hal/
	cp ../../../drivers/axi_core/clk_altera_a10_fpll/clk_altera_a10_fpll.c devices/adi_hal/
	cp ../../../drivers/axi_core/clk_altera_a10_fpll/clk_altera_a10_fpll.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_a10_atx_pll.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_a10_atx_pll.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_a10_cdr_pll.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_a10_cdr_pll.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_adxcvr.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/altera_adxcvr.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_rx.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_rx.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_tx.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_tx.h devices/adi_hal/
	cp ../../../drivers/frequency/ad9528/ad9528.h devices/adi_hal/
	cp ../../../drivers/frequency/ad9528/ad9528.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_hal.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_user.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm_macros.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_hal.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_reg_addr_macros.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_user.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_version.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/firmware/talise_arm_binary.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/firmware/talise_stream_binary.h devices/adi_hal/
	cp ../../../util/util.c devices/adi_hal/
	cp ../../../include/util.h devices/adi_hal/
#else
	cp ../../../include/axi_io.h devices/adi_hal/
	cp ../../../include/error.h devices/adi_hal/
	cp ../../../include/spi.h devices/adi_hal/
	cp ../../../include/gpio.h devices/adi_hal/
	cp ../../../include/delay.h devices/adi_hal/	
	cp ../../../drivers/spi/spi.c devices/adi_hal/
	cp ../../../drivers/platform/xilinx/axi_io.c devices/adi_hal/
	cp ../../../drivers/platform/xilinx/xilinx_spi.c devices/adi_hal/
	cp ../../../drivers/platform/xilinx/spi_extra.h devices/adi_hal/
	cp ../../../drivers/platform/xilinx/gpio.c devices/adi_hal/
	cp ../../../drivers/platform/xilinx/gpio_extra.h devices/adi_hal/
	cp ../../../drivers/platform/xilinx/delay.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_adc_core/axi_adc_core.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_adc_core/axi_adc_core.h devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dac_core/axi_dac_core.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dac_core/axi_dac_core.h devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dmac/axi_dmac.c devices/adi_hal/
	cp ../../../drivers/axi_core/axi_dmac/axi_dmac.h devices/adi_hal/
	cp ../../../drivers/axi_core/clk_axi_clkgen/clk_axi_clkgen.c devices/adi_hal/
	cp ../../../drivers/axi_core/clk_axi_clkgen/clk_axi_clkgen.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_adxcvr.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_adxcvr.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_rx.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_rx.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_tx.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/axi_jesd204_tx.h devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/xilinx_transceiver.c devices/adi_hal/
	cp ../../../drivers/axi_core/jesd204/xilinx_transceiver.h devices/adi_hal/
	cp ../../../drivers/frequency/ad9528/ad9528.h devices/adi_hal/
	cp ../../../drivers/frequency/ad9528/ad9528.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_hal.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_user.c devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_agc_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm_macros.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_arm_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_cals_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_error_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_gpio_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_hal.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_jesd204_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_radioctrl_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_reg_addr_macros.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_rx_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_tx_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_types.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_user.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/api/talise_version.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/firmware/talise_arm_binary.h devices/adi_hal/
	cp ../../../drivers/rf-transceiver/talise/firmware/talise_stream_binary.h devices/adi_hal/
	cp ../../../util/util.c devices/adi_hal/
	cp ../../../include/util.h devices/adi_hal/
#endif

READE是一个脚本文件,大家可以直接source 一下就把所有需要用到的文件都复制过去了。可以ls查看一下:

最后把adi_hal目录下的文件都复制到之前在vitis里面建立的应用程序的/src目录,进行编译一下检查错误就可以了,main()函数在headless.c文件中。

 编译、上板子,运行结果如下:

串口打印信息:

Hello
rx_clkgen: MMCM-PLL locked (245760000 Hz)
tx_clkgen: MMCM-PLL locked (122880000 Hz)
rx_os_clkgen: MMCM-PLL locked (122880000 Hz)
rx_adxcvr: OK (9830400 kHz)
tx_adxcvr: OK (4915200 kHz)
rx_os_adxcvr: OK (4915200 kHz)
talise: Device Revision 192, Firmware 6.0.2, API 3.6.0.527765581332480005
talise: Calibrations completed successfully
rx_jesd status:
	Link is enabled
	Measured Link Clock: 245.786 MHz
	Reported Link Clock: 245.760 MHz
	Lane rate: 9830.400 MHz
	Lane rate / 40: 245.760 MHz
	LMFC rate: 7.680 MHz
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
tx_jesd status:
	Link is enabled
	Measured Link Clock: 122.893 MHz
	Reported Link Clock: 122.880 MHz
	Lane rate: 4915.200 MHz
	Lane rate / 40: 122.880 MHz
	LMFC rate: 7.680 MHz
	SYNC~: deasserted
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
rx_os_jesd status:
	Link is enabled
	Measured Link Clock: 122.893 MHz
	Reported Link Clock: 122.880 MHz
	Lane rate: 4915.200 MHz
	Lane rate / 40: 122.880 MHz
	LMFC rate: 7.680 MHz
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
tx_dac: Successfully initialized (245785522 Hz)
rx_adc: Successfully initialized (245785522 Hz)

频谱仪上观察到的频谱如下:

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA&SDR探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值