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.22019.2 ~ 2020.2
UltraScale/UltraScale+2020.1 ~ 2022.22020.1 ~ 2022.2
Versal2022.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下安装方法:

  1. 打开设备管理器,找到“未知设备”或“PCI设备”
  2. 右键→更新驱动程序→浏览我的电脑以查找驱动程序
  3. 选择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不亮怎么办?

别急,按这个顺序排查:

  1. 检查板卡供电:电源指示灯亮了吗?
  2. 检查JTAG连接:Vivado的Hardware Manager里能看到设备吗?
  3. 检查管脚约束:LED对应的FPGA管脚对不对?
  4. 检查时钟:用示波器或逻辑分析仪看看时钟有没有输入

我遇到过最奇葩的一次,是板卡上的拨码开关没拨到“JTAG模式”,导致下载不了。所以,先看板卡手册,再看代码

3.5 验证加速卡的基本功能

LED闪烁只是证明环境能用。对于加速卡方案,我们还需要验证PCIe通信是否正常。

这里我推荐用Xilinx自带的“xdma_test”工具。在Vitis安装目录下可以找到源码和编译好的可执行文件。

测试步骤:

  1. 下载一个包含XDMA IP的比特流到板卡
  2. 运行xdma_test,进行读写测试
  3. 检查读写数据是否一致
# 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文件。重装系统时你就知道这有多重要了。


公众号:蓝海资料掘金营,微信deep3321