第二章:开发环境搭建——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 也不错 |
2.2 Vivado安装实战
安装Vivado其实不复杂,但有几个坑你得避开。我记得第一次装Vivado 2018.3,因为没关杀毒软件,结果安装到一半卡死了,白白浪费了2个小时。
2.2.1 下载与安装步骤
- 去官网下载:Xilinx官网注册账号,下载Vivado HLx WebPACK版本。别下那个“All OS”的,选Windows或Linux对应的就行。
- 关闭杀毒软件:这个很重要!Windows Defender、360、火绒,统统关掉。不然安装过程中会误删关键文件。
- 选择安装组件:勾选“Vivado HL WebPACK”和“Vivado HLS”。如果你有开发板,把对应器件的库也勾上。
- 安装路径:不要有中文!不要有空格!我习惯装在
D:\Xilinx\Vivado\2023.1这种路径下。 - 等待:大概需要30-60分钟,取决于你的硬盘速度。去喝杯咖啡吧。
2.3 License配置——最容易出问题的一步
License配置,说白了就是让工具认你。Xilinx提供了免费的WebPack License,但很多人不知道怎么生成。我刚开始也在这上面折腾了半天。
2.3.1 获取免费License
- 打开Xilinx官网,登录你的账号。
- 进入“License Management”页面。
- 点击“Generate Node-Locked License”。
- 输入你的网卡MAC地址(在命令行输入
ipconfig /all就能看到)。 - 选择“Vivado WebPACK Edition”,生成License文件。
2.3.2 配置License
拿到 .lic 文件后,打开Vivado,点击 Help → Manage License。在弹窗里选择“Load License”,找到你的文件,搞定。
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 文件夹。
2.5 第一个LED灯工程——点亮你的FPGA
好了,环境搭好了,咱们来点实际的。写一个LED闪烁程序,让板子上的灯亮起来。这是FPGA界的“Hello World”。
2.5.1 创建工程
- 打开Vivado,点击 Create Project。
- 输入工程名,比如
led_test。 - 选择RTL Project,勾选“Do not specify sources at this time”。
- 选择你的开发板型号。比如我用的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 综合、实现、下载
- 点击 Run Synthesis,等待综合完成。
- 点击 Run Implementation,等待布局布线。
- 点击 Generate Bitstream,生成比特流文件。
- 连接开发板,点击 Open Hardware Manager,选择 Auto Connect。
- 点击 Program Device,选择生成的
.bit文件,下载。
如果一切顺利,你会看到板子上的LED开始闪烁。嗯,那一刻还是挺有成就感的。
2.6 本章知识体系
下面这张图,帮你理清本章的核心逻辑:从工具选择到环境搭建,再到第一个工程跑起来,每一步都是环环相扣的。
说白了,环境搭建就是“选工具→装软件→配License→装驱动→跑工程”这五步。每一步都有坑,但只要你按部就班来,基本不会出大问题。我当年第一次点亮LED时,兴奋得差点把板子烧了——因为忘了加限流电阻。嗯,那是另一个故事了。
- Vivado和Quartus各有优劣,新手建议从Vivado开始。
- 安装时关闭杀毒软件,路径不要有中文。
- License绑定MAC地址,虚拟机用户注意区分。
- 驱动装好后,设备管理器里不能有黄色感叹号。
- 第一个LED工程,关键是约束文件里的引脚定义要正确。