2、FPGA开发环境搭建:Vivado/Quartus安装与配置、仿真工具(ModelSim/VCS)使用、版本管理(Git)与工程组织、第一个LED灯实验
说实话,很多初学者一上来就急着写代码,结果光装工具就卡了两三天。我当年也是这么过来的——装Vivado装到半夜,最后发现是硬盘空间不够。嗯,这一章咱们就把这些坑提前填上。
2.1 开发工具选型:Vivado vs Quartus
做千兆以太网MAC层,你大概率会用到Xilinx或Intel(Altera)的FPGA。我个人习惯用Vivado,因为它的IP核生态更成熟,尤其是Gigabit Ethernet MAC的IP用起来很顺手。但如果你手头是Cyclone V或者Arria系列,那Quartus就是唯一选择了。
| 对比项 | Vivado (Xilinx) | Quartus (Intel) |
|---|---|---|
| 安装包大小 | 约40-60GB(全功能) | 约20-30GB(全功能) |
| 仿真器集成 | 自带XSim,可外接ModelSim/VCS | 自带QuestaSim,可外接ModelSim |
| IP核成熟度 | 千兆以太网IP非常成熟 | 需要额外购买部分IP |
| 学习曲线 | 稍陡,但资料丰富 | 相对平缓 |
2.2 Vivado安装与配置——那些年我踩过的坑
安装Vivado其实不复杂,但有几个细节你得注意。我曾经因为路径里有中文,折腾了一下午才发现是这个问题。
- 下载安装包:去Xilinx官网下载Vivado HLx,选WebPACK或Design Edition。记得注册账号,不然下不了。
- 安装路径:千万不要有中文和空格。我习惯用
C:\Xilinx\Vivado\2024.1这种结构。 - 选择组件:勾选"Vivado HL WebPACK"和"Vivado HL System Edition"(如果你需要仿真)。
- License配置:WebPACK版不需要额外license,直接生成即可。如果你用企业版,记得把license文件放到
C:\Xilinx\Vivado\2024.1\licenses下。
2.3 仿真工具:ModelSim与VCS的选择
做MAC层设计,仿真比综合更重要。你想想看,一个数据包从MAC层发出去,中间经过多少状态机?不仿真根本不敢上板。
我个人偏好ModelSim,原因很简单:上手快,调试方便。VCS虽然快,但配置起来太麻烦,适合大团队用。
ModelSim安装要点
- 下载ModelSim SE或DE版,推荐SE版,功能最全。
- 安装路径同样不要有中文。
- 配置环境变量:把
modelsim.exe所在目录加到PATH里。 - 在Vivado中设置:Tools → Settings → Tool Settings → 3rd Party Simulators,指定ModelSim路径。
一个小技巧:我在做千兆以太网仿真时,习惯写一个 .do 文件来自动化仿真流程。这样每次改完代码,双击一下就能跑仿真,不用每次都手动点来点去。
2.4 版本管理:Git与工程组织
说实话,我见过太多FPGA工程师不用版本管理。结果改了一版代码,发现回不去了,只能重写。嗯,这滋味我尝过。
对于FPGA工程,Git管理有几个特殊之处:
- 不要提交生成文件:像
.bit、.runs、.cache这些目录,加进.gitignore。 - 只提交源码和约束:
.v、.vhd、.xdc、.tcl这些才是核心。 - 用Tcl脚本管理工程:Vivado支持用Tcl脚本重建整个工程。我习惯写一个
create_project.tcl,这样别人拉下来代码后,跑一下脚本就能生成工程。
# 一个简单的create_project.tcl示例
create_project -force mac_project ./mac_project -part xc7a35tcsg324-1
add_files -norecurse {./src/mac_top.v ./src/rx_engine.v ./src/tx_engine.v}
add_files -fileset constrs_1 -norecurse {./constrs/mac_pins.xdc}
set_property SOURCE_SET sources_1 [get_filesets sim_1]
update_compile_order -fileset sources_1
src/rx、src/tx、src/phy。仿真文件单独放 sim 目录。这样找东西一目了然。
2.5 第一个LED灯实验——从零到一
好了,工具装好了,Git也配好了。咱们来点实际的——让FPGA板子上的LED灯亮起来。别小看这个实验,它能验证你的整个开发链路是否通畅。
硬件连接
以Xilinx Artix-7开发板为例,LED通常连接到FPGA的GPIO引脚。我用的板子上,LED0连接的是 J15 引脚。
Verilog代码
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
cnt <= cnt + 1'b1;
if (cnt == 25'd24_999_999) begin // 0.5秒翻转一次
cnt <= 25'd0;
led <= ~led;
end
end
end
endmodule
约束文件 (XDC)
set_property PACKAGE_PIN J15 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property PACKAGE_PIN E3 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN C5 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
上板验证步骤
- 打开Vivado,创建新工程,选择对应器件型号。
- 添加上述Verilog文件和XDC约束文件。
- 点击"Run Synthesis"进行综合。
- 综合通过后,点击"Run Implementation"进行布局布线。
- 生成比特流文件(Generate Bitstream)。
- 连接开发板,点击"Open Hardware Manager" → "Program Device"。
如果LED没亮怎么办? 别慌,先检查三件事:
- 开发板供电了吗?
- JTAG线插好了吗?
- 约束文件里的引脚号对不对?
我曾经有一次折腾了半小时,最后发现是板子上的跳线帽没插对位置。嗯,这种低级错误谁都犯过。
2.6 本章知识体系
下面这张图是我画的本章知识结构,你可以把它当作一个检查清单——每完成一项,就在心里打个勾。
好了,环境搭好了,LED也亮了。接下来你就可以开始真正折腾千兆以太网MAC层了。记住,开发环境就像你的工具箱——工具顺手了,活才能干得快。
公众号:蓝海资料掘金营,微信deep3321