1. 项目概述
TQTT_KU5P开发板是一款基于Xilinx Kintex UltraScale+ XCKU5P FPGA芯片和ADI AD9361射频收发器的硬件平台。这个项目主要演示如何在Windows操作系统环境下搭建完整的开发环境,并对XCKU5P+AD9361硬件组合进行基础功能测试。
作为一名长期从事FPGA开发的工程师,我发现很多初学者在Windows平台下搭建FPGA开发环境时经常遇到各种兼容性问题。本文将详细记录我在Windows 10系统上完成XCKU5P+AD9361硬件测试的全过程,包括环境配置、驱动安装、工具链搭建以及基础测试案例。
2. 开发环境准备
2.1 硬件需求清单
要完成本教程的所有测试,你需要准备以下硬件设备:
- TQTT_KU5P开发板(核心芯片为XCKU5P-2FFVB676E)
- AD9361射频子卡(需正确安装到开发板FMC接口)
- USB Type-C数据线(用于JTAG调试和供电)
- 12V/3A直流电源适配器(大功率测试时使用)
- SMA射频线缆(用于连接信号源和测试设备)
2.2 软件工具链安装
在Windows环境下开发XCKU5P需要以下软件工具:
-
Vivado Design Suite 2020.1或更高版本
- 安装时需选择Kintex UltraScale+器件支持
- 建议勾选"Install Cable Drivers"选项
- 安装后需要手动添加license文件
-
ADI HDL参考设计库
- 从Analog Devices官网下载hdl_2020_r2版本
- 解压到不含中文和空格的路径(如C:\adi\hdl)
-
ADI No-OS驱动框架
- 配套的no-OS驱动可从GitHub获取
- 建议使用与hdl库匹配的版本
-
串口终端工具
- Tera Term或Putty均可
- 配置波特率115200,8N1无流控
注意:Vivado安装路径不要包含空格,否则后续脚本可能报错。建议使用默认路径"C:\Xilinx\Vivado\2020.1"。
3. 工程创建与硬件配置
3.1 新建Vivado项目
- 启动Vivado,选择"Create Project"向导
- 指定项目名称(如ku5p_ad9361_test)和路径
- 选择"RTL Project"类型,勾选"Do not specify sources at this time"
- 在器件选择页面输入"xcku5p"筛选,选择"xcku5p-ffvb676-2-e"
- 完成项目创建后,进入IP Integrator界面
3.2 配置AD9361 IP核
- 在IP Catalog中搜索并添加"ADI AD9361"IP
- 配置IP参数:
- 接口类型:LVDS
- 参考时钟:40MHz
- 数据接口:2R2T模式
- RX/TX数据速率:614.4MHz
- 生成IP核输出产品(Generate Output Products)
3.3 构建硬件系统
- 创建Block Design,添加Zynq UltraScale+ MPSoC IP
- 配置PS端:
- 启用UART0(用于调试输出)
- 配置DDR4内存控制器
- 设置QSPI Flash接口
- 连接AD9361 IP到PL端:
- 数据总线连接到HP0接口
- 控制接口通过AXI互联连接到GP端口
- 生成顶层HDL包装文件(Create HDL Wrapper)
4. 固件开发与编译
4.1 导入ADI参考设计
- 将ADI提供的hdl库中参考设计复制到工程目录:
- 复制projects/daq2/kcu105到本地
- 修改项目文件适配XCKU5P器件
- 更新约束文件:
- 根据开发板原理图修改引脚约束
- 调整时钟约束匹配硬件设计
4.2 构建No-OS应用程序
- 在Vitis IDE中创建新的应用工程
- 选择"Empty Application"模板
- 导入no-OS驱动文件:
- ad9361.c/.h
- axi_adc_core.c/.h
- axi_dac_core.c/.h
- 编写主测试程序:
c复制#include "xparameters.h"
#include "ad9361.h"
int main() {
struct ad9361_rf_phy *phy;
phy = ad9361_init(XPAR_AXI_AD9361_DEVICE_ID);
// 配置AD9361参数
ad9361_set_bb_rate(phy, 61440000); // 61.44MHz基带速率
ad9361_set_rx_rf_bandwidth(phy, 40000000); // 40MHz接收带宽
// 执行环回测试
ad9361_loopback_test(phy);
return 0;
}
5. 硬件测试与验证
5.1 下载比特流文件
- 生成完整的比特流文件:
- 在Vivado中运行"Generate Bitstream"
- 完成后导出硬件(File > Export > Export Hardware)
- 连接开发板:
- 使用USB线连接开发板JTAG端口
- 上电并确保Vivado识别到硬件
- 下载程序:
- 在Vivado Hardware Manager中"Program Device"
- 选择生成的.bit文件
5.2 基础功能测试
- 时钟系统验证:
- 使用示波器测量AD9361参考时钟输出
- 确认40MHz时钟信号质量(幅度、抖动)
- 数据接口测试:
- 运行环回测试程序
- 通过UART查看测试结果
- 射频性能测试:
- 使用信号发生器输入-30dBm测试信号
- 通过频谱仪观察接收信号质量
5.3 常见问题排查
-
JTAG连接失败:
- 检查USB驱动是否正确安装
- 尝试更换USB端口或线缆
- 在设备管理器中确认Xilinx Cable被识别
-
AD9361初始化失败:
- 检查SPI接口连接
- 确认电源电压正常(1.3V, 2.5V, 3.3V)
- 使用逻辑分析仪抓取SPI通信波形
-
数据链路不稳定:
- 检查LVDS差分对走线长度匹配
- 调整IO标准设置(如LVDS_25)
- 降低数据速率测试
6. 进阶开发建议
6.1 性能优化技巧
- 时序收敛优化:
- 对高速接口添加时序约束
- 使用Pipeline寄存器提高时序裕量
- 电源管理:
- 优化电源轨上电容配置
- 使用XPE工具估算功耗
- 射频校准:
- 执行完整的正交误差校准
- 优化DC偏移补偿参数
6.2 扩展应用方向
- 软件无线电系统:
- 集成GNURadio框架
- 实现FM/AM解调演示
- 雷达信号处理:
- 开发FMCW雷达原型
- 实现距离-多普勒算法
- 5G原型验证:
- 实现OFDM基带处理
- 开发MIMO测试平台
7. 开发经验分享
在实际开发过程中,有几个关键点需要特别注意:
-
散热管理:
XCKU5P在高负载运行时功耗较大,建议:- 监控芯片结温(通过SYSMON)
- 必要时增加散热风扇
- 优化电源管理策略
-
信号完整性:
AD9361的高速接口对PCB布局敏感:- 保持差分对长度匹配(±50mil以内)
- 避免穿越电源分割区域
- 使用合适的端接电阻
-
调试技巧:
- 利用Vivado ILA抓取关键信号
- 通过UART打印调试信息
- 分阶段验证(时钟→控制→数据)
通过本教程的完整流程,你应该已经掌握了在Windows环境下开发XCKU5P+AD9361系统的基本方法。这套平台非常适合无线通信、雷达和仪器仪表等领域的原型开发。
