第二章:开发环境搭建——Vivado/Quartus安装、License配置、开发板驱动安装、第一个LED灯工程

说实话,很多初学者一上来就急着写代码,结果卡在环境搭建这一步好几天。我见过太多人,代码写得挺溜,结果因为License没配好,编译都跑不起来。这一章,咱们就把这些“脏活累活”一次性搞定。

2.1 开发工具的选择:Vivado vs Quartus

做FPGA开发,两大主流工具链你得心里有数:Xilinx的Vivado和Intel(原Altera)的Quartus。我个人习惯是,项目用什么芯片,就用什么工具。但如果你刚入门,我建议从Vivado开始,因为它的生态更完善,社区资源也多。

对比项 Vivado (Xilinx) Quartus (Intel)
安装包大小 约40-60GB(完整版) 约20-30GB(完整版)
License获取 免费WebPack版够用 免费版功能受限
HLS支持 Vivado HLS(原生) 需要第三方工具
调试工具 ILA/VIO 集成度高 SignalTap 也不错
我的建议: 如果你用的是国产开发板(比如正点原子、黑金),通常配套的都是Vivado。Quartus在工业界存量很大,但新项目用Vivado的更多。

2.2 Vivado安装实战

安装Vivado其实不复杂,但有几个坑你得避开。我记得第一次装Vivado 2018.3,因为没关杀毒软件,结果安装到一半卡死了,白白浪费了2个小时。

2.2.1 下载与安装步骤

  1. 去官网下载:Xilinx官网注册账号,下载Vivado HLx WebPACK版本。别下那个“All OS”的,选Windows或Linux对应的就行。
  2. 关闭杀毒软件:这个很重要!Windows Defender、360、火绒,统统关掉。不然安装过程中会误删关键文件。
  3. 选择安装组件:勾选“Vivado HL WebPACK”和“Vivado HLS”。如果你有开发板,把对应器件的库也勾上。
  4. 安装路径:不要有中文!不要有空格!我习惯装在 D:\Xilinx\Vivado\2023.1 这种路径下。
  5. 等待:大概需要30-60分钟,取决于你的硬盘速度。去喝杯咖啡吧。
避坑指南: 我曾经因为C盘空间不够,安装到一半报错。Vivado完整版需要至少60GB空闲空间,WebPACK版也需要30GB。建议装在D盘或E盘。

2.3 License配置——最容易出问题的一步

License配置,说白了就是让工具认你。Xilinx提供了免费的WebPack License,但很多人不知道怎么生成。我刚开始也在这上面折腾了半天。

2.3.1 获取免费License

  1. 打开Xilinx官网,登录你的账号。
  2. 进入“License Management”页面。
  3. 点击“Generate Node-Locked License”。
  4. 输入你的网卡MAC地址(在命令行输入 ipconfig /all 就能看到)。
  5. 选择“Vivado WebPACK Edition”,生成License文件。

2.3.2 配置License

拿到 .lic 文件后,打开Vivado,点击 Help → Manage License。在弹窗里选择“Load License”,找到你的文件,搞定。

小技巧: 如果你用的是虚拟机,记得License绑定的是虚拟机的MAC地址,不是宿主机的。我有个同事就因为这个折腾了一下午。

2.4 开发板驱动安装

驱动装不好,板子连不上电脑,你写再多代码也没用。我见过最惨的情况是,有人把JTAG驱动装错了,导致电脑蓝屏。

2.4.1 安装驱动

  • Vivado用户:安装Vivado时,勾选“Cable Drivers”组件。装完后,插上开发板,Windows会自动识别。
  • Quartus用户:需要单独安装“Quartus Programmer”和“USB-Blaster驱动”。

2.4.2 验证驱动是否成功

打开设备管理器,找到“Jtag cable”或“Digilent USB Device”。如果显示黄色感叹号,说明驱动没装好。右键更新驱动,手动选择Vivado安装目录下的 data\xicom\cable_drivers 文件夹。

注意: 有些国产开发板(比如某些Zynq板)需要安装额外的USB转串口驱动(CH340或CP2102)。我曾经因为没装这个,折腾了半小时才发现是串口没识别。

2.5 第一个LED灯工程——点亮你的FPGA

好了,环境搭好了,咱们来点实际的。写一个LED闪烁程序,让板子上的灯亮起来。这是FPGA界的“Hello World”。

2.5.1 创建工程

  1. 打开Vivado,点击 Create Project。
  2. 输入工程名,比如 led_test。
  3. 选择RTL Project,勾选“Do not specify sources at this time”。
  4. 选择你的开发板型号。比如我用的Xilinx Artix-7,就选 xc7a35tcsg324-1。

2.5.2 编写Verilog代码

在工程里新建一个设计文件,输入以下代码:

module led_blink (
    input  wire clk,      // 50MHz 时钟
    input  wire rst_n,    // 复位信号,低有效
    output reg  led       // LED输出
);

reg [24:0] counter;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        counter <= 25'd0;
    else if (counter == 25'd24_999_999)  // 0.5秒计数
        counter <= 25'd0;
    else
        counter <= counter + 1'b1;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        led <= 1'b0;
    else if (counter == 25'd24_999_999)
        led <= ~led;  // 翻转LED
end

endmodule

2.5.3 添加约束文件

你需要告诉工具,代码里的 clk 和 led 对应板子上的哪个引脚。新建一个 .xdc 文件:

set_property PACKAGE_PIN E3 [get_ports clk]    // 时钟引脚
set_property IOSTANDARD LVCMOS33 [get_ports clk]

set_property PACKAGE_PIN H5 [get_ports led]     // LED引脚
set_property IOSTANDARD LVCMOS33 [get_ports led]

set_property PACKAGE_PIN C2 [get_ports rst_n]   // 复位引脚
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
注意: 不同开发板的引脚定义不一样。一定要查你的板子原理图!我刚开始就随便写了个引脚,结果灯死活不亮,后来发现是引脚号写错了。

2.5.4 综合、实现、下载

  1. 点击 Run Synthesis,等待综合完成。
  2. 点击 Run Implementation,等待布局布线。
  3. 点击 Generate Bitstream,生成比特流文件。
  4. 连接开发板,点击 Open Hardware Manager,选择 Auto Connect。
  5. 点击 Program Device,选择生成的 .bit 文件,下载。

如果一切顺利,你会看到板子上的LED开始闪烁。嗯,那一刻还是挺有成就感的。

2.6 本章知识体系

下面这张图,帮你理清本章的核心逻辑:从工具选择到环境搭建,再到第一个工程跑起来,每一步都是环环相扣的。

开发环境搭建核心流程 工具选择 Vivado / Quartus 安装与License 下载 → 安装 → 配置License 驱动安装 JTAG / USB驱动 第一个LED灯工程 创建工程 → 编写代码 → 约束文件 综合 → 实现 → 生成比特流 → 下载 验证:LED闪烁

说白了,环境搭建就是“选工具→装软件→配License→装驱动→跑工程”这五步。每一步都有坑,但只要你按部就班来,基本不会出大问题。我当年第一次点亮LED时,兴奋得差点把板子烧了——因为忘了加限流电阻。嗯,那是另一个故事了。

本章核心要点:
  • Vivado和Quartus各有优劣,新手建议从Vivado开始。
  • 安装时关闭杀毒软件,路径不要有中文。
  • License绑定MAC地址,虚拟机用户注意区分。
  • 驱动装好后,设备管理器里不能有黄色感叹号。
  • 第一个LED工程,关键是约束文件里的引脚定义要正确。
可可精品资料库