3、开发环境搭建:Vivado/Vitis工具链安装、板卡驱动配置、首次上电验证
说实话,做FPGA加速卡开发,最让人头疼的往往不是逻辑设计本身,而是环境搭建。我见过太多新手卡在安装这一步,一卡就是两三天。今天咱们就把这事捋清楚。
3.1 工具链选择:Vivado vs Vitis,到底装哪个?
很多刚入行的朋友会问:Vivado和Vitis到底有什么区别?我是不是两个都得装?
简单说,Vivado是FPGA的“编译器”,负责把Verilog/VHDL代码变成比特流,烧进芯片里。Vitis是“运行时环境”,负责让CPU和FPGA协同工作,说白了就是写驱动、做数据搬运用的。
我个人习惯的做法是:
- 只做纯逻辑开发(比如只写RTL代码)→ 装Vivado就够了
- 要做加速卡方案(比如用Xilinx的DMA/Bridge IP)→ Vivado + Vitis都得装
- 用Zynq系列(ARM+FPGA)→ 必须装Vitis,因为要编译ARM端的代码
版本选择建议:
| 芯片系列 | 推荐Vivado版本 | 推荐Vitis版本 |
|---|---|---|
| 7系列(Artix/Kintex/Virtex) | 2018.3 ~ 2020.2 | 2019.2 ~ 2020.2 |
| UltraScale/UltraScale+ | 2020.1 ~ 2022.2 | 2020.1 ~ 2022.2 |
| Versal | 2022.1+ | 2022.1+ |
嗯,这里要注意:Vivado和Vitis的版本必须匹配。我曾经遇到过有人装了Vivado 2020.2却配了Vitis 2021.1,结果编译出来的xclbin死活加载不上,折腾了两天才发现是版本不匹配。
3.2 安装流程:三步走,别跳步
安装这事,说白了就是下载→解压→点下一步。但有几个坑我得提前告诉你。
3.2.1 下载安装包
去Xilinx官网下载,需要注册账号。如果你在公司,建议直接找IT要内部镜像,几十个G的文件下载起来真的很痛苦。
我个人习惯下载“All OS installer Single-File”版本,虽然文件大(Vivado大概30G,Vitis大概50G),但安装时不用联网,省心。
3.2.2 安装Vivado
运行安装程序,选“Vivado HL WebPACK”还是“Vivado HL Design Edition”?
- WebPACK:免费,但支持的芯片有限(主要是小规模器件)
- Design Edition:付费,支持所有芯片,还带System Generator等工具
做加速卡的话,我建议直接上Design Edition。别问我为什么,问就是WebPACK不支持DMA和PCIe的一些高级IP,你做到一半发现要换版本,那才叫崩溃。
安装路径建议:
不要用默认路径!不要用默认路径!不要用默认路径!
默认路径在C盘,Vivado装完大概占用80G空间。我建议装到D:\Xilinx或E:\Xilinx,路径中不要有中文和空格。
3.2.3 安装Vitis
Vitis的安装其实是在Vivado安装程序里勾选的。安装Vivado时,在“Select Products to Install”界面,勾上“Vitis”就行。
这里有个细节:Vitis会自带GCC交叉编译工具链,用于编译ARM端的代码。如果你用的是Zynq或MPSoC,这个必须装。
3.3 板卡驱动配置:让电脑认识你的FPGA卡
装完工具链,插上板卡,电脑没反应?别慌,这是正常的。FPGA板卡不像鼠标键盘,即插即用。你得手动装驱动。
3.3.1 安装JTAG驱动
JTAG是用来下载比特流和调试的。Xilinx的JTAG调试器主要有两种:
- Platform Cable USB II:老款,现在用得少了
- Digilent JTAG-HS3:新款,很多开发板自带
驱动安装方法:
# 进入Vivado安装目录
cd C:\Xilinx\Vivado\2020.2\data\xicom\cable_drivers\nt64\install_drivers
# 以管理员身份运行
install_drivers.exe
装完后插上板卡,打开设备管理器,应该能看到“Xilinx USB Cable”或“Digilent USB Device”。如果显示黄色感叹号,说明驱动没装好,重新运行一次安装程序。
我曾经踩过的坑:
Windows 10/11默认开启了“驱动程序强制签名”,会导致Xilinx驱动装不上。解决办法:重启电脑,按F8进入“禁用驱动程序强制签名”模式,再装驱动。或者直接在系统设置里关掉这个功能。
3.3.2 安装PCIe驱动(如果是PCIe加速卡)
如果你用的是PCIe接口的加速卡(比如Alveo系列),还需要装PCIe驱动。Xilinx官方提供了XDMA驱动,在Vitis安装目录下可以找到:
C:\Xilinx\Vitis\2020.2\data\platforms\xilinx_pcie_linux_4_19_0_64bit\drivers\xdma
Windows下安装方法:
- 打开设备管理器,找到“未知设备”或“PCI设备”
- 右键→更新驱动程序→浏览我的电脑以查找驱动程序
- 选择XDMA驱动文件夹,安装
装完后,你应该能看到“Xilinx XDMA Device”和几个“Xilinx XDMA User”设备。如果看到“Xilinx XDMA Bypass”,说明驱动装对了。
3.4 首次上电验证:跑个灯,证明环境没问题
环境搭好了,驱动装上了,怎么知道一切正常?最简单的办法:跑个LED闪烁程序。
3.4.1 创建工程
打开Vivado,点击“Create Project”,选“RTL Project”,然后选你的板卡型号。如果你用的是官方开发板,可以直接在“Boards”标签页里选,Vivado会自动配置管脚约束。
3.4.2 写个简单的Verilog代码
module led_blink(
input wire clk, // 板载时钟,通常是50MHz或100MHz
input wire rst_n, // 复位,低有效
output reg [3:0] led // 4个LED
);
reg [31:0] counter;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
counter <= 32'd0;
led <= 4'b0001;
end else begin
counter <= counter + 1;
// 每0.5秒翻转一次(假设时钟50MHz)
if (counter == 32'd24_999_999) begin
counter <= 32'd0;
led <= {led[2:0], led[3]}; // 循环移位
end
end
end
endmodule
这段代码很简单:每0.5秒让LED循环点亮一次。你想想看,如果LED能正常闪烁,说明:
- Vivado安装正确,能正常综合和实现
- JTAG驱动正常,能下载比特流
- 板卡供电和时钟正常
3.4.3 综合、实现、下载
在Vivado里点“Generate Bitstream”,等几分钟。完成后点“Open Hardware Manager”,连接板卡,点“Program Device”。
如果一切顺利,你会看到板卡上的LED开始循环闪烁。那一刻,说实话,挺有成就感的。
如果LED不亮怎么办?
别急,按这个顺序排查:
- 检查板卡供电:电源指示灯亮了吗?
- 检查JTAG连接:Vivado的Hardware Manager里能看到设备吗?
- 检查管脚约束:LED对应的FPGA管脚对不对?
- 检查时钟:用示波器或逻辑分析仪看看时钟有没有输入
我遇到过最奇葩的一次,是板卡上的拨码开关没拨到“JTAG模式”,导致下载不了。所以,先看板卡手册,再看代码。
3.5 验证加速卡的基本功能
LED闪烁只是证明环境能用。对于加速卡方案,我们还需要验证PCIe通信是否正常。
这里我推荐用Xilinx自带的“xdma_test”工具。在Vitis安装目录下可以找到源码和编译好的可执行文件。
测试步骤:
- 下载一个包含XDMA IP的比特流到板卡
- 运行xdma_test,进行读写测试
- 检查读写数据是否一致
# Windows下运行
xdma_test.exe -r 0x1000 -l 1024 # 从地址0x1000读取1024字节
xdma_test.exe -w 0x1000 -l 1024 # 向地址0x1000写入1024字节
如果读写都返回成功,说明PCIe链路正常,DMA通道通畅。这时候,你的加速卡开发环境才算真正搭建完成。
3.6 本章小结
环境搭建这事,说白了就是:装对版本、装好驱动、跑通例程。别贪多,别求快,一步一步来。我见过太多人一上来就想跑复杂的加速案例,结果环境没搭好,浪费了大量时间在排查工具问题上。
嗯,最后说一句:保存好你的Vivado安装包和license文件。重装系统时你就知道这有多重要了。