4. 开发环境搭建:Vivado/Quartus安装、许可证配置、第一个LED闪烁工程的完整流程
好,咱们正式开始动手了。这一章我带你走一遍开发环境的搭建流程。说实话,很多初学者卡在这一步——不是装不上,就是许可证搞不定,折腾半天连个灯都没点亮。我当年也踩过这些坑,所以这一章我会把关键点都给你点出来。
4.1 开发工具选型:Vivado vs Quartus
做FPGA开发,两大主流工具就是Xilinx的Vivado和Intel的Quartus。选哪个?说白了,看你用什么芯片。
| 对比项 | Vivado (Xilinx) | Quartus (Intel) |
|---|---|---|
| 支持的芯片 | Xilinx全系列(7系列起) | Intel/Altera全系列 |
| 综合引擎 | Synplify-based | Quartus内置综合 |
| 仿真工具 | Vivado Simulator | ModelSim/Questa |
| 免费版本 | Vivado HL WebPACK | Quartus Prime Lite |
| 安装包大小 | 约30-50GB | 约15-25GB |
我个人习惯用Vivado多一些,因为Xilinx的生态更成熟,文档也全。但如果你用的是Intel的Cyclone系列,那Quartus就是唯一选择。嗯,这里要注意:两个工具不要混着装在同一台机器上,环境变量会打架,我吃过这个亏。
4.2 Vivado安装与许可证配置
4.2.1 下载与安装
去Xilinx官网下载Vivado HL WebPACK版本,这是免费的。安装步骤其实很简单,但有几个坑你得避开:
- 路径不要有中文——这个老生常谈了,但总有人犯
- 安装目录不要用C盘——装完几十个G,C盘直接爆红
- 选择安装组件时——如果你只是做数字逻辑,勾选"Vivado"和"Vivado Simulator"就够了,不用全选
4.2.2 许可证配置
许可证这块,很多人搞不明白。Vivado WebPACK是免费的,但需要申请一个许可证文件。流程如下:
- 注册Xilinx账号(用公司邮箱或个人邮箱都行)
- 登录后进入"Licensing"页面
- 选择"Generate Node-Locked License"
- 输入你的网卡MAC地址(这个别填错了)
- 下载.lic文件,放到安装目录下的
licenses文件夹
配置好之后,打开Vivado,在Help -> Manage License里能看到状态。如果显示"Valid",那就OK了。
4.3 Quartus安装与许可证配置
Quartus Prime Lite版本也是免费的,安装过程比Vivado简单不少。下载地址在Intel官网,选择对应操作系统的版本就行。
安装时注意:Quartus对Windows 11的兼容性不太好,我遇到过安装后打不开的情况。解决办法是右键图标 -> 属性 -> 兼容性 -> 勾选"以Windows 8模式运行"。
许可证方面,Quartus Lite不需要单独的许可证文件,安装完就能用。但如果你要用ModelSim仿真,需要额外配置一下:
# 在Quartus安装目录下找到modelsim.ini
# 添加以下内容(具体路径根据你的安装位置调整)
[Library]
work = $MODEL_TECH/../modelsim_lib/work
4.4 第一个LED闪烁工程
好了,环境搭好了,咱们来点个灯。这是FPGA界的"Hello World",虽然简单,但能验证你的整个开发流程是否通畅。
4.4.1 创建工程(以Vivado为例)
- 打开Vivado,点击"Create Project"
- 工程名:
led_blink,路径不要有中文 - 选择RTL Project,勾选"Do not specify sources at this time"
- 选择芯片型号:比如我用的Xilinx Artix-7 XC7A35T
- 点击Finish,工程创建完成
4.4.2 编写Verilog代码
在工程中添加一个设计源文件,命名为led_blink.v。代码如下:
module led_blink (
input wire clk, // 50MHz时钟
input wire rst_n, // 复位信号,低有效
output reg led // LED输出
);
// 计数器,用于分频
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt <= 25'd0;
led <= 1'b0;
end else begin
if (cnt == 25'd24_999_999) begin
cnt <= 25'd0;
led <= ~led; // 翻转LED
end else begin
cnt <= cnt + 1'b1;
end
end
end
endmodule
这段代码的逻辑很简单:用计数器对50MHz时钟进行分频,每计数到2500万次(也就是0.5秒),翻转一次LED。这样LED就会以1Hz的频率闪烁。
4.4.3 添加约束文件
约束文件告诉工具,你的时钟和LED对应芯片的哪个引脚。创建一个.xdc文件:
# 时钟引脚
set_property PACKAGE_PIN R4 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
# 复位引脚
set_property PACKAGE_PIN U7 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
# LED引脚
set_property PACKAGE_PIN T8 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
注意:引脚编号取决于你的开发板。我用的是Nexys 4 DDR,如果你用其他板子,记得查原理图。
4.4.4 综合、实现、生成比特流
在Vivado的Flow Navigator中,按顺序点击:
- Synthesis -> Run Synthesis(综合,检查语法和逻辑)
- Implementation -> Run Implementation(布局布线)
- Generate Bitstream(生成下载文件)
每一步完成后,记得看有没有错误或警告。我见过有人综合通过了,但实现时报错,原因是约束文件写错了引脚。
4.4.5 下载到FPGA
连接好下载器(一般是JTAG),点击"Open Hardware Manager" -> "Auto Connect"。识别到芯片后,右键点击芯片,选择"Program Device",选择刚才生成的.bit文件,点击Program。
如果一切顺利,你就能看到LED开始闪烁了。嗯,第一次点亮LED的感觉,说实话挺有成就感的。
4.5 常见问题与避坑指南
- 下载器识别不到:检查驱动是否安装。Vivado自带驱动,但有时需要手动安装。去设备管理器里看看有没有黄色感叹号。
- 综合报错"cannot find module":检查文件名和模块名是否一致。Verilog要求文件名和模块名相同。
- LED不亮:先检查约束文件里的引脚号对不对。我遇到过把LED引脚写成了按键引脚,结果按了按键灯才亮。
- 许可证过期:WebPACK许可证每年更新一次,记得去官网重新申请。
好了,这一章的内容就到这。环境搭好了,灯也亮了,接下来就可以开始真正的内容了。记住,开发环境是基础,基础打牢了,后面才能走得稳。