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
学习曲线 稍陡,但资料丰富 相对平缓
我的建议:如果你刚开始学,用Vivado WebPACK版就够了,免费且支持大部分中低端器件。别一上来就装全功能版,那玩意儿能把你的C盘撑爆。

2.2 Vivado安装与配置——那些年我踩过的坑

安装Vivado其实不复杂,但有几个细节你得注意。我曾经因为路径里有中文,折腾了一下午才发现是这个问题。

  1. 下载安装包:去Xilinx官网下载Vivado HLx,选WebPACK或Design Edition。记得注册账号,不然下不了。
  2. 安装路径千万不要有中文和空格。我习惯用 C:\Xilinx\Vivado\2024.1 这种结构。
  3. 选择组件:勾选"Vivado HL WebPACK"和"Vivado HL System Edition"(如果你需要仿真)。
  4. License配置:WebPACK版不需要额外license,直接生成即可。如果你用企业版,记得把license文件放到 C:\Xilinx\Vivado\2024.1\licenses 下。
注意:安装过程中会提示安装Digilent驱动,一定要勾上。不然你后面连开发板的时候会发现电脑识别不到设备。我有个同事就是没勾这个,折腾了两天才发现。

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/rxsrc/txsrc/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]

上板验证步骤

  1. 打开Vivado,创建新工程,选择对应器件型号。
  2. 添加上述Verilog文件和XDC约束文件。
  3. 点击"Run Synthesis"进行综合。
  4. 综合通过后,点击"Run Implementation"进行布局布线。
  5. 生成比特流文件(Generate Bitstream)。
  6. 连接开发板,点击"Open Hardware Manager" → "Program Device"。

如果LED没亮怎么办? 别慌,先检查三件事:

  • 开发板供电了吗?
  • JTAG线插好了吗?
  • 约束文件里的引脚号对不对?

我曾经有一次折腾了半小时,最后发现是板子上的跳线帽没插对位置。嗯,这种低级错误谁都犯过。

2.6 本章知识体系

下面这张图是我画的本章知识结构,你可以把它当作一个检查清单——每完成一项,就在心里打个勾。

FPGA开发环境搭建知识体系 工具安装与配置 • Vivado安装(路径无中文) • Quartus安装与License配置 • 驱动安装(Digilent) • 环境变量配置 • 第三方工具关联设置 仿真工具使用 • ModelSim安装与配置 • VCS环境搭建 • .do脚本自动化仿真 • 波形查看与调试 • 覆盖率分析 版本管理与工程组织 • Git仓库初始化 • .gitignore配置(过滤生成文件) • Tcl脚本管理工程 • 模块化目录结构 • 分支管理策略 第一个LED灯实验 • Verilog代码编写 • XDC约束文件配置 • 综合→实现→生成比特流 • 硬件连接与下载 • 常见问题排查 目标:打通从代码到硬件的完整开发链路

好了,环境搭好了,LED也亮了。接下来你就可以开始真正折腾千兆以太网MAC层了。记住,开发环境就像你的工具箱——工具顺手了,活才能干得快。


公众号:蓝海资料掘金营,微信deep3321