第二章 开发环境搭建:工欲善其事,必先利其器
说实话,每次带新人入门FPGA,我最怕的就是环境搭建这一步。不是技术难,而是坑太多。我自己就曾经在Quartus安装上折腾了一整天,最后发现是路径里有中文。嗯,这种经历一次就够了。
这一章,咱们就把开发环境彻底搞定。从Vivado和Quartus的安装,到仿真工具配置,再到开发板选型,最后跑通第一个LED灯实验。一步到位,不走弯路。
2.1 Vivado与Quartus:两大主流工具的选择
目前FPGA市场基本是两家独大:Xilinx(现在叫AMD)的Vivado,和Intel(原Altera)的Quartus。我个人习惯两个都用,但如果你刚入门,我建议先选一个深耕。
| 对比项 | Vivado (Xilinx/AMD) | Quartus (Intel) |
|---|---|---|
| 适用芯片 | Artix、Kintex、Virtex、Zynq等 | Cyclone、Arria、Stratix、MAX等 |
| 开发语言 | VHDL/Verilog/SystemVerilog | VHDL/Verilog/SystemVerilog |
| 仿真工具 | Vivado Simulator (内置) | ModelSim/Questa (需单独安装) |
| 综合风格 | 对RTL代码要求较严格 | 相对宽松,兼容性好 |
| 安装包大小 | 约30-50GB(完整版) | 约10-20GB(完整版) |
| 学习曲线 | 中等偏陡 | 相对平缓 |
2.2 Vivado安装实战
安装Vivado其实不复杂,但有几个关键点要注意。我曾经帮一个学生远程调试,他装了三次都失败,最后发现是硬盘空间不够。Vivado完整版装完要占50GB左右,你想想看,这可不是个小数目。
安装步骤
- 下载安装包:去AMD官网注册账号,下载Vivado HLx WebPACK或Design Edition。WebPACK是免费的,功能足够我们课程使用。
- 选择版本:我个人建议用最新的稳定版,比如2023.2或2024.1。别追最新版,bug多;也别用太老的,芯片支持不全。
- 安装路径:千万不要有中文路径! 不要有空格!我习惯用
C:\Xilinx\Vivado\2024.1这样的结构。 - 选择组件:勾选Vivado HL Design Edition,还有对应的器件库。如果你用的是Artix-7,就勾选7系列。
- 安装时长:大概30分钟到1小时,取决于你的电脑配置。去泡杯咖啡吧。
2.3 Quartus安装要点
Quartus的安装相对轻量一些,但它的坑在于ModelSim的配置。如果你只用Quartus自带的仿真器,那还好;但要做稍微复杂一点的仿真,ModelSim几乎是必须的。
安装步骤
- 下载Quartus Prime Lite:Intel官网免费版,功能足够。
- 安装ModelSim-Intel Edition:建议勾选这个组件,省得后面再单独装。
- 设置环境变量:安装完后,把ModelSim的bin目录加到系统PATH里。不然Quartus调用仿真器时会报错。
- 破解与License:Quartus Lite版不需要license,直接用。但ModelSim需要申请免费license,去Intel官网注册就能拿到。
2.4 仿真工具配置
仿真,说白了就是让你的代码在电脑上先跑一遍。我见过太多人直接上板子调,结果烧一次芯片要几分钟,效率极低。正确的做法是:先在仿真环境里把逻辑调通,再上板验证。
Vivado自带仿真器配置
Vivado Simulator是集成在Vivado里的,不需要额外安装。你只需要在Project Manager里添加仿真文件,然后点击“Run Simulation”就行。
// 一个简单的仿真激励示例
`timescale 1ns / 1ps
module led_tb();
reg clk;
reg rst_n;
wire led;
// 实例化待测模块
led_top uut (
.clk(clk),
.rst_n(rst_n),
.led(led)
);
// 生成时钟
initial begin
clk = 0;
forever #10 clk = ~clk; // 50MHz时钟
end
// 生成复位
initial begin
rst_n = 0;
#100;
rst_n = 1;
#2000;
$finish;
end
endmodule
ModelSim/Questa配置
如果你用Quartus,我建议单独安装ModelSim。配置步骤:
- 在Quartus中设置仿真工具路径:Assignments -> Settings -> EDA Tool Settings -> Simulation。
- 选择ModelSim-Altera,指定安装路径。
- 编译器件库:Tools -> Launch Simulation Library Compiler。
2.5 FPGA开发板选型建议
选开发板这件事,我踩过不少坑。第一次买板子,贪便宜买了个没资料的,结果连LED都点不亮。后来学乖了,选板子就看三点:芯片型号、外设资源、社区支持。
| 开发板型号 | 芯片 | 适合场景 | 参考价格 |
|---|---|---|---|
| Nexys A7 (Digilent) | Artix-7 XC7A100T | 入门到进阶,图像处理 | 约¥1500 |
| Basys 3 (Digilent) | Artix-7 XC7A35T | 入门,基础实验 | 约¥800 |
| DE10-Lite (Terasic) | MAX 10 10M50DAF | 入门,Altera生态 | 约¥600 |
| Zynq-7020 (黑金/米联) | Zynq-7020 (ARM+FPGA) | 图像加速,嵌入式系统 | 约¥1000 |
2.6 第一个LED灯实验
好了,环境搭好了,板子也选好了。咱们来跑第一个实验——点亮LED。这个实验虽然简单,但能验证你的整个开发流程是否通畅。
实验目标
让开发板上的LED以1秒为周期闪烁。说白了就是:亮1秒,灭1秒,循环。
Verilog代码
module led_top (
input wire clk, // 系统时钟,50MHz
input wire rst_n, // 复位,低电平有效
output reg led // LED输出
);
// 50MHz时钟,1秒需要计数50,000,000次
// 我们用27位计数器就够了(2^27 = 134,217,728)
reg [26:0] cnt;
// 计数器逻辑
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 27'd0;
else if (cnt == 27'd49_999_999)
cnt <= 27'd0;
else
cnt <= cnt + 1'b1;
end
// LED输出:每1秒翻转一次
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 1'b0;
else if (cnt == 27'd49_999_999)
led <= ~led;
else
led <= led;
end
endmodule
引脚约束(XDC文件)
# 以Nexys A7为例
set_property PACKAGE_PIN E3 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN C12 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN H17 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
上板步骤
- 在Vivado中创建新工程,选择对应的芯片型号。
- 添加上述Verilog代码和XDC约束文件。
- 点击“Generate Bitstream”,综合、实现、生成比特流。
- 连接开发板,打开Hardware Manager,下载比特流。
- 按下复位键,观察LED是否闪烁。
2.7 本章知识体系
为了让你更直观地理解本章的内容结构,我画了一张流程图。它展示了从工具选择到第一个实验的完整路径。
这张图把本章的脉络理得很清楚。从工具选择开始,到安装配置,再到板子选型,最后用LED实验收尾。每一步都是环环相扣的。
可可精品资料库