第一次拿到ADRV9009射频收发器和ZCU102开发板时,我完全不知道从何下手。这套组合在无线通信领域非常强大,但入门确实需要一些指导。ADRV9009是ADI公司的高性能射频收发器,支持30MHz到6GHz的频率范围,而ZCU102则是Xilinx的Zynq UltraScale+ MPSoC开发平台,两者结合可以用于5G、雷达、卫星通信等各种应用场景。
这套平台最适合两类人:一类是正在评估ADRV9009性能的硬件工程师,另一类是需要在Zynq平台上开发射频算法的软件工程师。如果你属于其中任何一种,或者单纯对射频系统感兴趣,这篇指南都能帮你快速上手。
首先需要准备一个至少16GB的SD卡。我建议使用Class 10以上的高速卡,因为系统启动和运行时会频繁读写。镜像文件可以从ADI官网获取,搜索"ADRV9009 ZynqMP Image"就能找到最新版本。这里有个小技巧:下载时最好用有线网络,因为镜像文件通常有几个GB大小,WiFi下载容易中断。
我遇到过下载到99%突然失败的情况,非常恼火。后来发现用下载工具(如IDM)可以断点续传,节省不少时间。下载完成后你会得到一个zip压缩包,注意不要用Windows自带的解压工具,因为它可能无法正确处理某些Linux文件属性。
推荐使用7-Zip解压,这是经过实测最可靠的工具。解压后会看到几个文件,其中最重要的是boot.bin和image.ub。烧录工具我习惯用BalenaEtcher,它比Win32DiskImager更友好,而且跨平台支持Mac和Linux。
具体步骤:
烧录完成后,你会看到SD卡被分成多个分区,这是正常的Linux系统分区。把SD卡插入ZCU102的卡槽,硬件准备就完成了。
ZCU102的开关设置很关键:SW6需要设置为SD卡启动模式(1-on,2/3/4-off)。我刚开始就栽在这个坑里,开关设错导致系统无法启动。ADRV9009子板要牢固地插在FMC连接器上,听到"咔嗒"声才算到位。
时钟连接要注意:
射频端口连接建议:
串口连接使用USB转UART线,波特率设为115200。推荐使用Tera Term或Putty作为终端软件。网络配置有个小技巧:先把电脑IP设为192.168.1.x网段(如192.168.1.100),这样上电后就能直接ping通开发板。
上电后,串口终端会显示Linux启动日志。看到登录提示符后,输入root登录(默认无密码)。第一次启动建议运行ifconfig命令检查网络接口,确保eth0已经获取到IP地址。
IIO Oscilloscope是ADI提供的开源测试工具,支持Windows和Linux。最新版本可以从GitHub获取。安装完成后,首次运行需要配置连接:
连接成功后,界面会显示所有可用通道。这里有个实用技巧:点击"Save Setup"可以保存当前配置,下次直接加载就能用,省去重复设置的麻烦。
让我们做一个简单的发射测试:
在频谱仪上应该能看到一个干净的2400MHz信号。如果看到谐波(如7200MHz处的三次谐波),这是正常现象,所有直接变频架构的收发器都会这样。要抑制谐波,可以在输出端加装滤波器。
进阶测试可以尝试:
如果系统无法启动,按这个顺序检查:
遇到信号质量不佳时:
有一次我发现EVM指标很差,折腾半天才发现是时钟线松动。这种问题最容易忽视,也最难排查。建议准备一套好的测试线缆,劣质线缆会引入各种奇怪问题。
完成基础测试后,你可能想开发自己的应用。这时需要安装Vivado和ADI的HDL源码。我建议先从No-OS驱动开始,再逐步过渡到Linux驱动开发。ADI提供了大量参考设计,可以大大节省开发时间。
对于算法开发,MathWorks的HDL Coder和ADI的Transceiver Toolbox是绝配。你可以先在Simulink仿真,然后直接生成可在Zynq上运行的代码。这种工作流程比传统手写代码效率高得多。
记得定期备份SD卡镜像。我有次不小心改坏了系统,又没备份,只能从头再来。现在我会在每次重大修改前用dd命令备份整个SD卡,这个习惯救了我好几次。