第二章:开发环境搭建——Vivado/Quartus安装、开发板选型与License配置

好,咱们正式开始动手了。

这一章我带你搞定两件事:装好工具、选对板子。别小看这一步,我见过太多人卡在环境上,折腾一星期还没跑通第一个LED。说白了,开发环境没搭好,后面全是白搭。

2.1 开发工具选哪个?Vivado还是Quartus

这问题其实很简单——看你用什么芯片

  • Xilinx(AMD)的芯片,用Vivado。现在主流是Vivado 2023.1或2024.1。
  • Intel(Altera)的芯片,用Quartus Prime。建议用Pro版,支持Arria 10和Stratix 10。

我个人习惯是:做交易加速,首选Xilinx Alveo系列。为什么?生态成熟,HLS支持好,而且有开源的加速框架。Intel的Arria 10也不错,但社区资源少一些。

小提示:如果你刚开始学,建议用Vivado + Alveo U200/U250。我当年就是拿U200入的门,踩坑少,资料多。

2.2 Vivado安装——别踩这些坑

安装Vivado其实不复杂,但有几个地方容易翻车。

2.2.1 下载与版本选择

  • 去Xilinx官网下载Vivado HLx版本,别下Vitis(那是给嵌入式用的)。
  • WebPACK还是Enterprise?做交易加速,必须Enterprise。WebPACK不支持Alveo系列。
  • 安装包大概40-60GB,记得留够磁盘空间。

2.2.2 安装步骤(精简版)

  1. 解压安装包,运行xsetup.exe(Windows)或xsetup(Linux)。
  2. 选择Vivado HL Enterprise Edition
  3. 勾选VivadoVitis HLSDocNav。其他可以不要。
  4. 安装路径不要有中文,不要有空格。我习惯放C:\Xilinx\Vivado\2024.1
  5. 等……大概1-2小时。去喝杯咖啡。
注意:Windows用户记得关闭杀毒软件。我遇到过好几次,安装到一半被拦截,然后报错。Linux用户注意,Vivado不支持Ubuntu 24.04(截至2024年),建议用22.04 LTS。

2.3 Quartus Prime安装——Intel阵营的选择

如果你选了Intel Arria 10,那就装Quartus Prime Pro。

2.3.1 下载与版本

  • 去Intel FPGA官网下载Quartus Prime Pro Edition
  • 版本建议用23.424.1
  • 同样,安装包很大,约30-50GB。

2.3.2 安装要点

  1. 运行安装程序,选择Quartus Prime Pro
  2. 勾选Arria 10设备支持。其他设备可以不要。
  3. 安装路径同样不要有中文。
  4. 安装完成后,记得装ModelSimQuestaSim用于仿真。
个人经验:Quartus的安装比Vivado快一些,但License配置更麻烦。我当年第一次装Quartus,折腾了整整一天才搞定License。后面我会详细说。

2.4 开发板选型——Alveo还是Arria?

这是个大问题。我直接给结论:

需求场景 推荐板卡 理由
入门学习 Xilinx Alveo U200 便宜(二手约3000元),资料多
低延迟交易 Xilinx Alveo U250 逻辑资源多,支持100G网络
高频交易 Intel Arria 10 GX 硬核DSP强,适合复杂算法
超低延迟 Xilinx Alveo U55C HBM内存,延迟极低

我个人建议:初学者先买一块Alveo U200。为什么?因为Vivado的生态好,而且有Xilinx官方的Vitis Acceleration Framework,能帮你快速上手。我当年就是拿U200起步的,虽然性能不如U250,但学东西足够了。

避坑指南:别一上来就买U55C。那玩意儿贵(好几万),而且需要PCIe Gen4 x16,普通主板根本跑不起来。我曾经帮一个客户调试U55C,结果他的主板只支持PCIe Gen3,带宽直接砍半,性能还不如U250。

2.5 License配置——最让人头疼的一步

嗯,说到License,我估计很多人要骂娘了。确实,这步最烦人。

2.5.1 Vivado License

  • 免费版:Vivado WebPACK是免费的,但只支持小芯片。做交易加速用不了。
  • 付费版:Enterprise License,大概几千美元一年。个人用户买不起?别急,有办法。
  • 学生版:如果你是在校学生,可以申请Xilinx University Program,免费拿一年License。
  • 试用版:Xilinx官网提供30天试用,够你学完这门课了。

2.5.2 配置步骤(Vivado)

  1. 打开Vivado,点击Help → Obtain License
  2. 登录Xilinx账号,申请License文件(.lic)。
  3. 把License文件放到C:\Xilinx\Licenses(或Linux下的/opt/Xilinx/Licenses)。
  4. 设置环境变量:XILINXD_LICENSE_FILE指向License文件路径。
  5. 重启Vivado,检查Help → License Status是否显示Valid。
注意:License文件绑定网卡MAC地址。如果你换了网卡或重装了系统,License会失效。我当年就吃过这个亏,重装系统后忘了备份License,结果又花了一天重新申请。

2.5.3 Quartus License

  • Quartus Prime Pro的License更贵,约1-2万美元/年。
  • 个人用户建议用Quartus Prime Lite(免费),但只支持低端芯片。
  • 或者用Intel FPGA Academic Program申请学术License。

2.5.4 配置步骤(Quartus)

  1. 打开Quartus,点击Tools → License Setup
  2. License File框中,选择你的.lic文件。
  3. 或者设置环境变量LM_LICENSE_FILE
  4. 点击OK,重启Quartus。
小技巧:如果你用的是浮动License(Floating License),记得配置License Server。我习惯把License Server装在一台Linux服务器上,然后所有开发机都连它。这样换电脑也不用重新申请License。

2.6 验证环境——跑个LED先

装完工具、配好License,别急着写复杂代码。先跑个最简单的LED闪烁,验证环境是否正常。

2.6.1 Vivado下的LED测试

// led_blink.v
module led_blink (
    input  wire clk,
    input  wire rst_n,
    output reg  led
);
    reg [31:0] counter;
    
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            counter <= 32'd0;
            led     <= 1'b0;
        end else begin
            counter <= counter + 1'b1;
            if (counter == 32'd50_000_000) begin
                counter <= 32'd0;
                led     <= ~led;
            end
        end
    end
endmodule

这段代码很简单:每5000万个时钟周期(假设50MHz时钟,就是1秒),翻转一次LED。编译、下载到板子上,如果LED每秒闪一次,说明环境没问题。

2.6.2 Quartus下的LED测试

流程类似,只是工具菜单不同。在Quartus里,用Assignments → Device选芯片,然后Processing → Start Compilation。下载用Tools → Programmer

核心要点:环境搭建成功与否,就看这个LED能不能闪。如果闪了,恭喜你,后面的事都好办。如果不闪,别慌,检查三件事:时钟、复位、引脚约束。我遇到过80%的“不闪”问题,都是引脚约束没配对。

2.7 本章小结

好,这一章的内容就这些。总结一下:

  • 工具选型:Xilinx用Vivado,Intel用Quartus。做交易加速,优先Vivado + Alveo。
  • 安装要点:路径不要中文,关杀毒软件,Linux用Ubuntu 22.04。
  • 板卡选择:入门用U200,进阶用U250,追求极致用U55C。
  • License配置:学生申请免费License,个人用30天试用,公司直接买。
  • 验证方法:跑个LED闪烁,确认环境正常。

下一章,咱们开始写真正的交易算法——从最简单的行情解析开始。到时候我会带你手写一个UDP解析器,把网络数据包变成FPGA能处理的数据流。嗯,那才是真正有意思的部分。

课后作业:装好Vivado或Quartus,配好License,跑通LED闪烁。然后把截图发到课程群里,我会帮你检查。别偷懒,这一步跳过了,后面全是坑。