2. 开发环境搭建:Vivado/Quartus安装、ModelSim/QuestaSim仿真器、第一个Hello World工程
说实话,很多初学者一上来就急着写代码,结果装工具装到崩溃。我当年也是这么过来的——下载Vivado花了三个小时,安装又卡在许可证上,折腾了一整天。嗯,今天咱们就把这事一次性捋清楚。
2.1 主流EDA工具的选择
做数字IC设计,你绕不开这几家公司的工具。我个人的建议是:学校或公司用什么,你就用什么。但如果你想自己学,下面这张表可以帮你快速决策。
| 工具 | 适用场景 | 我的评价 |
|---|---|---|
| Vivado | Xilinx FPGA开发 | 功能最全,但安装包巨大(约30GB) |
| Quartus Prime | Intel FPGA开发 | 轻量一些,Lite版免费够用 |
| ModelSim | 仿真验证 | 老牌工具,上手快 |
| QuestaSim | 高级仿真验证 | ModelSim的升级版,支持SystemVerilog |
2.2 Vivado安装要点
Vivado的安装,说白了就是「耐心活」。我记得第一次装的时候,进度条卡在45%不动了,我还以为电脑死机了。其实它是在解压一些大文件,等就完了。
安装步骤:
- 去Xilinx官网下载Vivado HLx安装包(建议选WebPACK版,免费)
- 双击运行安装程序,选择「Vivado HL WebPACK」
- 勾选「Design Tools」和「Devices」——别全选,只勾你需要的器件型号
- 安装路径不要有中文和空格,我习惯用
C:\Xilinx\Vivado - 等待... 大概30分钟到1小时,取决于你的网速和硬盘
2.3 Quartus Prime安装要点
Quartus比Vivado友好不少。Intel的Quartus Prime Lite版完全免费,而且安装包只有Vivado的一半大。我个人觉得,初学者用Quartus入门会更顺畅。
安装步骤:
- 从Intel官网下载Quartus Prime Lite Edition
- 运行安装程序,选择「Quartus Prime (includes Nios II EDS)」
- 器件支持包(Device Support)建议只勾你需要的系列,比如Cyclone V
- 安装路径同样不要有中文
- 装完后需要注册一个Intel账号,免费获取许可证
避坑指南:Quartus的许可证文件(.dat文件)需要放在安装目录的 licenses 文件夹下。我曾经把许可证放桌面上,结果软件一直报错「License not found」,折腾了半天才发现是路径问题。
2.4 ModelSim与QuestaSim仿真器
仿真器才是我们写Verilog时最常用的工具。你想想看,写代码不仿真,就像做饭不尝味道——你敢直接上菜吗?
ModelSim vs QuestaSim:
- ModelSim:轻量、稳定,适合Verilog/VHDL仿真。我入行前三年一直用它。
- QuestaSim:ModelSim的升级版,支持SystemVerilog、UVM等高级特性。现在大公司基本都用这个。
安装其实很简单:下载安装包 -> 一路Next -> 配置环境变量。这里我重点说一个容易忽略的点:仿真库的编译。
如果你用Vivado或Quartus自带的仿真器,库是预编译好的。但如果你单独装ModelSim,需要手动编译器件库。具体操作是:
# 在ModelSim命令窗口执行
vlib work
vmap work work
vlog -work work C:/Xilinx/Vivado/2023.1/data/verilog/src/glbl.v
嗯,这一步很多人会跳过,结果仿真时报错「Module not found」。我当年也犯过这个错,后来老老实实把库编译了一遍。
2.5 第一个Hello World工程
好了,工具装完了,咱们来写第一个Verilog程序。说白了就是让一个LED灯闪烁——这是数字IC界的「Hello World」。
步骤一:创建工程
以Vivado为例:
- 打开Vivado,点击「Create Project」
- 输入工程名:
led_blink - 选择RTL Project,勾选「Do not specify sources at this time」
- 选择器件型号(随便选一个,比如xc7a35ticsg324-1L)
- 点击Finish
步骤二:编写Verilog代码
点击「Add Sources」->「Create File」,新建一个名为 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)
cnt <= 25'd0;
else if (cnt == 25'd24_999_999)
cnt <= 25'd0;
else
cnt <= cnt + 1'b1;
end
// LED输出:每0.5秒翻转一次
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 1'b0;
else if (cnt == 25'd24_999_999)
led <= ~led;
else
led <= led;
end
endmodule
步骤三:编写仿真测试文件
新建一个 tb_led_blink.v 文件:
`timescale 1ns / 1ps
module tb_led_blink;
reg clk;
reg rst_n;
wire led;
// 实例化待测模块
led_blink uut (
.clk (clk),
.rst_n (rst_n),
.led (led)
);
// 生成时钟:周期20ns
initial begin
clk = 0;
forever #10 clk = ~clk;
end
// 复位和仿真过程
initial begin
rst_n = 0;
#100;
rst_n = 1;
#5000; // 仿真5us
$finish;
end
// 打印LED状态变化
always @(posedge led or negedge led) begin
$display("Time = %t, LED = %b", $time, led);
end
endmodule
步骤四:运行仿真
在Vivado的Flow Navigator中点击「Run Simulation」->「Run Behavioral Simulation」。你会看到LED信号每0.5秒翻转一次——恭喜,你的第一个Verilog工程跑起来了!
我的经验:第一次仿真看到波形时,说实话挺激动的。虽然只是一个LED闪烁,但这是你从「看教程」到「真正动手」的跨越。很多同事后来问我怎么学Verilog,我都说:先让一个灯闪起来,其他的慢慢来。
2.6 本章知识体系
下面这张图帮你梳理了开发环境搭建的核心逻辑。说白了就是三件事:选工具、装工具、跑通第一个工程。
嗯,到这里开发环境就搭建好了。你可能会觉得装工具很麻烦,但相信我——这一步跨过去,后面写代码、做仿真就会顺畅很多。工具装好了,咱们下一章就开始正式写Verilog代码了。
公众号:蓝海资料掘金营,微信deep3321