3、开发环境搭建:Vivado/Quartus安装指南、硬件描述语言选择(Verilog vs VHDL)、第一个工程创建
好,咱们直接进入正题。这一章,我带你把吃饭的家伙事儿先支棱起来。
很多新手朋友一上来就纠结「学哪个软件好」「学Verilog还是VHDL」。我的建议是——先别纠结,先把环境搭好,跑通第一个工程再说。你想想看,光看书不练手,永远学不会游泳。
3.1 Vivado vs Quartus:我该装哪个?
这个问题,说白了取决于你手头有什么板子。
- Xilinx(AMD)的芯片,比如Artix-7、Zynq系列,那就装 Vivado。
- Intel(Altera)的芯片,比如Cyclone IV、MAX 10系列,那就装 Quartus Prime。
我个人习惯是两套都装。为什么?因为项目需求不一样,客户给的芯片也不一样。你不可能指望一个工具吃遍天。
3.2 Vivado安装指南(以2023.1版本为例)
安装过程其实不复杂,但有几个坑我得提前跟你说。
- 去官网下载:AMD Xilinx官网,找到Vivado HLx。建议下载WebPACK版本,免费,功能对于学习完全够用。
- 安装路径:千万别有中文!千万别有空格!我见过有人装在「D:\程序\Vivado」下面,结果编译报错找半天原因。老老实实用英文路径。
- 选择组件:勾选「Vivado HL WebPACK」和「Vivado HL System Edition」相关的。如果你用Zynq,记得勾上「Vitis」。
- 安装时间:嗯,这个得有点心理准备。Vivado安装包大概20-30GB,解压安装下来可能要1-2小时。泡杯咖啡,或者去干点别的。
3.3 Quartus Prime安装指南(以20.1版本为例)
Quartus相对轻量一些,但流程差不多。
- 下载:Intel官网,找到Quartus Prime Lite Edition,免费。
- 安装:同样,路径不要有中文。选择你需要的器件支持包(比如Cyclone IV、MAX 10)。
- License:Quartus Lite版不需要License,直接能用。如果你用标准版或专业版,需要申请免费的License文件。
我个人觉得Quartus的界面比Vivado清爽一些,但Vivado的IP核集成更强大。各有千秋吧。
3.4 硬件描述语言选择:Verilog vs VHDL
这是FPGA圈子里永恒的争论。我直接给你结论:
| 对比项 | Verilog | VHDL |
|---|---|---|
| 语法风格 | 类似C语言,简洁 | 类似Ada,严谨冗长 |
| 学习曲线 | 平缓,上手快 | 陡峭,类型检查严格 |
| 市场占有率 | 约80%(尤其在中国) | 约20%(军工、欧洲多) |
| 适合场景 | 数字逻辑、SoC设计 | 复杂系统、安全关键系统 |
我的建议: 如果你是新手,直接学 Verilog。为什么?因为资源多,教程多,遇到问题随便一搜就有答案。VHDL当然也很好,但你在国内找工作,90%的公司都用Verilog。
我记得刚入行时,带我的老工程师说:「Verilog是写给机器看的,VHDL是写给人看的。」后来我自己体会,其实都差不多。关键是逻辑要清晰,代码要规范。
3.5 第一个工程创建(以Vivado为例)
好,环境装好了,语言选好了。咱们来创建第一个工程。别怕,就三步。
第一步:新建工程
- 打开Vivado,点击「Create Project」。
- 工程名:比如
led_test。路径别带中文。 - 选择「RTL Project」,勾上「Do not specify sources at this time」。
- 选择芯片型号。如果你用的是开发板,一般会告诉你具体型号。比如我常用的黑金AX7010,芯片是
xc7z010clg400-1。
第二步:写代码
点击「Add Sources」,选择「Create File」,输入文件名 led_top。然后双击打开,输入以下代码:
module led_top (
input wire clk, // 50MHz 时钟输入
input wire rst_n, // 复位,低有效
output reg [3:0] led // 4个LED
);
reg [31:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt <= 32'd0;
led <= 4'b0000;
end else begin
cnt <= cnt + 1'b1;
// 每0.5秒翻转一次LED(50MHz时钟,计数25000000次)
if (cnt == 32'd25000000 - 1) begin
cnt <= 32'd0;
led <= ~led;
end
end
end
endmodule
这段代码什么意思?说白了就是一个计数器。每0.5秒,LED状态翻转一次。你下载到板子上,就能看到LED在闪烁。
第三步:综合、实现、生成比特流
- 点击左侧流程栏的「Run Synthesis」——综合。等几分钟。
- 综合完成后,点击「Run Implementation」——实现。
- 最后点击「Generate Bitstream」——生成下载文件。
create_clock -period 20.000 [get_ports clk]。20ns对应50MHz。
第四步:下载到板子
连接好下载器(一般是JTAG),点击「Open Hardware Manager」,然后「Auto Connect」。选择你的比特流文件,点击「Program Device」。搞定!
看到LED闪烁的那一刻,恭喜你,你已经完成了第一个FPGA工程。虽然简单,但这是万里长征的第一步。
下一章,我会带你深入Verilog的语法细节。咱们到时候见。