3、FPGA开发环境搭建:Vivado/Vitis安装,开发板选型(Zynq/Artix),第一个LED工程
好,咱们正式开始动手了。这一章,说白了就是「把枪擦亮,子弹上膛」。环境搭不好,后面全是白搭。我见过太多新手卡在安装这一步,一卡就是一整天,心态直接崩了。别急,跟着我的节奏来,稳得很。
3.1 开发板选型:Zynq 还是 Artix?
先聊板子。很多朋友一上来就问:「老师,我该买哪块板子?」我的回答永远是——看你的目标。
核心判断标准:你要做纯逻辑加速,还是需要嵌入式处理器协同?
我简单给你拆解一下:
- Artix-7 系列:纯 FPGA,没有硬核 CPU。适合做纯粹的硬件加速,比如图像预处理、数据包过滤、自定义协议解析。价格亲民,入门首选。我个人习惯用 Artix-7 做原型验证,成本低,跑得快。
- Zynq-7000 系列:FPGA + 双核 ARM Cortex-A9 硬核处理器。适合需要软硬件协同的场景,比如 AI 推理的前处理(ARM 上跑 OpenCV) + 后处理(FPGA 上跑卷积)。我在项目中遇到过,用 Zynq 做端侧推理,ARM 负责调度,FPGA 负责矩阵运算,配合得天衣无缝。
| 对比项 | Artix-7 | Zynq-7000 |
|---|---|---|
| 核心架构 | 纯 FPGA | FPGA + ARM Cortex-A9 |
| 适合场景 | 纯硬件加速、接口桥接 | 软硬件协同、嵌入式 AI |
| 开发难度 | 较低(只需 FPGA 工具链) | 较高(需同时掌握 FPGA 和 ARM 开发) |
| 典型板卡 | Nexys Video、Arty A7 | ZedBoard、PYNQ-Z2 |
| 价格区间 | 500-2000 元 | 1000-4000 元 |
我的建议:如果你是纯新手,先买一块 Artix-7 的板子(比如 Arty A7),把 FPGA 基本功练扎实了。别一上来就搞 Zynq,ARM 那套东西会把你绕晕。等你把 LED 点亮、把计数器跑通,再考虑升级到 Zynq 做 AI 推理。
3.2 Vivado 与 Vitis:到底装哪个?
这个问题,我几乎每次培训都会被问到。嗯,这里要注意区分:
- Vivado:FPGA 的「设计+综合+实现+下载」一体化工具。你写 Verilog、做仿真、烧录 bit 文件,全靠它。
- Vitis:Xilinx 的统一软件平台。主要用于 Zynq 的 ARM 端软件开发,以及 AI 推理的部署(Vitis AI)。
说白了,如果你只用 Artix-7,装 Vivado 就够了。如果你用 Zynq,那 Vivado 和 Vitis 都得装。我个人的习惯是:先装 Vivado,把硬件部分调通,再装 Vitis 搞软件。一步到位容易出幺蛾子。
3.3 安装 Vivado:手把手避坑指南
好,咱们开始装 Vivado。我以 2023.1 版本为例,步骤大同小异。
- 下载安装包:去 Xilinx 官网下载 Vivado HLx 版本。注意选「WebPACK」或「Enterprise」——WebPACK 免费,够用了。
- 安装过程:一路 Next,但要注意这一步——勾选「Vivado HL WebPACK」和「Artix-7 / Zynq-7000 器件支持」。别全选,全选的话硬盘会哭(我吃过这个亏,装了 80GB,结果一半用不上)。
- License 配置:WebPACK 版本不需要额外 license,安装完就能用。如果你用 Enterprise 版,记得去官网申请免费 license。
- 安装路径:不要有中文!不要有空格!我见过有人装在「D:\FPGA 工具\Vivado 2023」下面,结果编译报错,查了半天是路径问题。
我曾经踩过的坑:安装时选了「全部器件支持」,结果安装包 40GB,解压后 100GB。我的 C 盘直接红了。后来重装系统才解决。所以,只勾选你板子对应的器件系列,别贪心。
3.4 第一个 LED 工程:点亮它!
环境装好了,板子也到手了。咱们来干第一件有成就感的事——点亮一个 LED。别小看这一步,它验证了你的整个工具链是否通畅。
3.4.1 创建工程
- 打开 Vivado,点击 Create Project。
- 输入工程名,比如
led_test,路径不要有中文。 - 选择 RTL Project,勾选 Do not specify sources at this time(后面再加)。
- 选择器件:如果你用 Arty A7,选 xc7a35ticsg324-1L;如果用 ZedBoard,选 xc7z020clg484-1。
- Finish。
3.4.2 写 Verilog 代码
在工程里新建一个设计源文件,命名为 led_top.v。代码如下:
module led_top (
input wire clk, // 板载时钟,通常 100MHz
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)
cnt <= 32'd0;
else
cnt <= cnt + 1'b1;
end
// 取计数器的最高位作为 LED 闪烁控制
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 4'b0000;
else
led <= cnt[31:28]; // 每约 2.5 秒翻转一次
end
endmodule
这段代码的逻辑很简单:计数器不断累加,取高 4 位驱动 LED。这样 LED 就会以肉眼可见的频率闪烁。你想想看,如果直接用 100MHz 时钟驱动 LED,它亮得跟没亮一样,肉眼根本看不出来。
3.4.3 添加约束文件
新建一个约束文件 led_top.xdc,写入以下内容(以 Arty A7 为例):
set_property PACKAGE_PIN E3 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN D9 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN H5 [get_ports {led[0]}]
set_property PACKAGE_PIN J5 [get_ports {led[1]}]
set_property PACKAGE_PIN T9 [get_ports {led[2]}]
set_property PACKAGE_PIN T10 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]
注意:不同板子的引脚定义不同。去官网下载板子的 Master XDC 文件,直接复制粘贴最保险。我刚开始做的时候自己对着原理图一个个查引脚,结果查错了一个,LED 死活不亮,折腾了两小时。
3.4.4 综合、实现、生成比特流
- 点击 Run Synthesis,等待综合完成。
- 综合完成后,点击 Run Implementation。
- 实现完成后,点击 Generate Bitstream。
这个过程大概需要 5-10 分钟。你可以去泡杯咖啡。如果报错,多半是约束文件写错了,或者器件选错了。检查一下。
3.4.5 下载到板子
- 用 JTAG 线连接板子和电脑。
- 点击 Open Hardware Manager。
- 点击 Auto Connect,Vivado 会自动识别板子。
- 右键点击器件,选择 Program Device,选择刚才生成的
.bit文件。 - 点击 Program。
如果一切顺利,你会看到板子上的 LED 开始闪烁。那一刻,相信我,你会很有成就感。
第一个 LED 工程,验证了以下关键环节:
- Vivado 安装正确,工具链完整
- 板子驱动正常,JTAG 通信无误
- Verilog 语法正确,综合实现无错误
- 约束文件与板子匹配
3.5 本章知识体系
下面这张图,帮你把本章的核心逻辑串起来:
3.6 写在最后
环境搭建这一步,看起来琐碎,但它是你整个 FPGA 学习之路的基石。我见过太多人,工具链没配好就急着跑 AI 模型,结果报错一堆,连是代码问题还是环境问题都分不清。
所以,老老实实把 LED 点亮。这一步走稳了,后面的路就好走了。
一个小建议:把第一个 LED 工程保存好,以后每次换新板子,都先用这个工程验证一下环境。我自己的电脑上,有一个文件夹叫 hello_fpga,里面存着各种板子的 LED 工程。换板子时直接改约束文件,5 分钟搞定环境验证。