2、FPGA开发环境搭建:Vivado/Quartus安装、工程创建流程、仿真环境配置、硬件调试工具链
做FPGA开发,第一步就是把家伙事儿备齐了。说白了,开发环境就是你的工作台。工欲善其事,必先利其器嘛。我个人习惯先把环境搭得干干净净,后面写代码、调时序才不闹心。
这一章,我带你走一遍Vivado和Quartus的安装、工程创建、仿真配置,还有硬件调试那点事儿。嗯,都是实打实的干货。
2.1 开发工具选型:Vivado vs Quartus
先说说选哪个。这其实取决于你手头的芯片。
- Vivado:Xilinx家的,现在叫AMD Xilinx。7系列及以上的FPGA,比如Artix-7、Kintex-7、Virtex-7,还有Zynq,都用它。
- Quartus Prime:Intel家的,以前叫Altera。Cyclone、Arria、Stratix系列,都用这个。
我在项目中遇到过不少新手,上来就问哪个好。其实没有好坏之分,只有合不合适。你公司用哪家的片子,你就装哪家的工具。两个都装也行,但硬盘得够大——一个Vivado装下来,轻松吃掉50GB。
2.2 Vivado安装与工程创建
2.2.1 安装流程
去官网下载Vivado WebPACK版,免费的,功能足够你用。安装时选对版本——我建议用最新的稳定版,别追beta。
- 双击安装包,一路Next。
- 选择安装路径。记住,别放C盘。
- 勾选你要安装的器件系列。如果你只做Artix-7,就别把Virtex的库也装上,省点空间。
- 等。大概半小时到一小时,取决于你的电脑。
安装完,桌面上会出现Vivado 20xx.x的图标。双击打开,你会看到启动界面。第一次启动会慢一些,它要生成一些缓存文件。
2.2.2 创建工程
打开Vivado后,点Create Project。我习惯给工程起个有意义的名字,比如uart_loopback,别叫test1、final_final这种,你想想看,过两个月你自己都分不清。
工程名:key_debounce
工程路径:D:/FPGA_Projects/key_debounce
器件型号:xc7a35tcsg324-1(Artix-7)
选器件的时候,如果你不确定型号,可以按封装、速度等级筛选。我一般直接搜型号,快一些。
创建完成后,你会看到Vivado的界面。左边是Flow Navigator,所有操作都从这儿进。右边是工作区。嗯,这个布局很清晰,用几次就熟了。
2.3 Quartus Prime安装与工程创建
2.3.1 安装流程
Quartus的安装跟Vivado差不多,但有一点不同——它需要单独安装器件库。你可以在安装时选择,也可以后面再装。
- 下载Quartus Prime Lite版,免费的。
- 运行安装程序,选好路径。
- 安装过程中会问你要不要装器件库。选你需要的,比如Cyclone IV、Cyclone V。
- 安装完成后,还需要装一个ModelSim Starter版,用来仿真。
我曾经在Quartus安装上栽过跟头——没装器件库,结果打开工程发现器件列表是空的。嗯,从那以后我每次都仔细看安装选项。
2.3.2 创建工程
打开Quartus,点New Project Wizard。流程跟Vivado类似,但有些细节不同。
工程名:key_debounce
工程路径:D:/FPGA_Projects/key_debounce
器件型号:EP4CE6F17C8(Cyclone IV E)
Quartus的界面跟Vivado不太一样。它的Project Navigator在左边,Tasks窗口在下面。刚开始可能觉得乱,但用习惯了也挺顺手。
2.4 仿真环境配置
仿真,说白了就是让你的代码在电脑上先跑一遍。我见过不少同学,写完代码直接上板子,结果灯不亮、串口没反应,然后一脸懵。其实仿真能帮你发现90%的问题。
2.4.1 Vivado仿真配置
Vivado自带仿真器,叫xsim。够用,但功能不如ModelSim强大。我个人习惯用ModelSim,但如果你只是做简单仿真,xsim完全OK。
配置步骤:
- 在Flow Navigator里点Simulation → Simulation Settings。
- 选择仿真器。默认是xsim,你也可以改成ModelSim。
- 设置仿真时间。我一般设成10ms,够看一个按键消抖的过程了。
- 添加仿真源文件。就是你的testbench。
// 一个简单的testbench示例
module tb_key_debounce();
reg clk;
reg key_in;
wire key_out;
key_debounce uut (
.clk(clk),
.key_in(key_in),
.key_out(key_out)
);
initial begin
clk = 0;
forever #10 clk = ~clk; // 50MHz时钟
end
initial begin
key_in = 1;
#100 key_in = 0; // 模拟按键按下
#20 key_in = 1; // 模拟抖动
#15 key_in = 0;
#5000 key_in = 1; // 按键释放
#100 $finish;
end
endmodule
写testbench的时候,我习惯把激励写得细一些。比如按键抖动,我会随机生成几个毛刺,看看消抖模块能不能扛住。
2.4.2 Quartus仿真配置
Quartus不自带仿真器,你得装ModelSim。安装ModelSim的时候,记得选Altera版本,它带了Altera的库。
配置步骤:
- 在Quartus里点Assignments → Settings。
- 找到EDA Tool Settings → Simulation。
- 选择ModelSim-Altera作为仿真工具。
- 设置仿真格式。我一般选Verilog。
然后你就可以在Quartus里直接启动ModelSim了。点Tools → Run Simulation Tool → RTL Simulation。
run -all,不然仿真不会自动跑完。我第一次用的时候愣是等了五分钟,以为死机了。
2.5 硬件调试工具链
仿真过了,就该上板子了。但上板子之后,问题往往更隐蔽。这时候就需要硬件调试工具了。
2.5.1 Vivado的ILA
ILA,全称Integrated Logic Analyzer,就是Vivado里的逻辑分析仪。它可以在FPGA内部抓信号,就像用示波器测引脚一样。
使用步骤:
- 在代码里实例化ILA IP核。
- 设置要抓取的信号和触发条件。
- 综合、实现、生成bitstream。
- 下载到FPGA,打开Hardware Manager。
- 设置触发,然后点Run。
我举个例子。你要抓按键消抖后的输出信号,可以这样配ILA:
// 在顶层模块中实例化ILA
ila_0 your_ila (
.clk(clk),
.probe0(key_in), // 原始按键信号
.probe1(key_out), // 消抖后信号
.probe2(state) // 状态机状态
);
抓到的波形会显示在Vivado的波形窗口里。你可以放大、缩小、测量时间。嗯,这个功能真的很强大。
2.5.2 Quartus的Signal Tap
Quartus对应的工具叫Signal Tap Logic Analyzer。功能跟ILA类似,但用法略有不同。
使用步骤:
- 在Quartus里点Tools → Signal Tap Logic Analyzer。
- 选择要抓取的信号。
- 设置时钟和触发条件。
- 重新综合并下载。
- 在Signal Tap窗口里点Run。
Signal Tap的界面比ILA稍微复杂一些,但核心逻辑是一样的。你选好信号,设好触发,然后看波形。
2.6 本章小结
这一章我们聊了Vivado和Quartus的安装、工程创建、仿真配置,还有硬件调试工具。说白了,就是把你做FPGA开发需要的所有工具都备齐了,并且知道怎么用。
我个人觉得,环境搭建这一步虽然枯燥,但特别重要。你想想看,如果工具没装好,后面写再好的代码也跑不起来。所以,花点时间把环境整利索了,后面会省很多事。
嗯,下一章我们就要开始写代码了。到时候我会带你从零开始写一个按键消抖模块,然后仿真、上板、调试,一条龙走下来。准备好了吗?
可可精品资料库