Quick Start:30 分钟跑通第一个 FPGA 工程
本指南假设你已具备数字电路基础(与门、触发器、状态机等基本概念)。以下步骤将引导你在 30 分钟内完成 FPGA 开发全流程——从新建工程到在板卡上看到 LED 闪烁。
前置条件
- 一台运行 Windows 10/11 或 Ubuntu 20.04+ 的计算机,至少 8 GB 内存、50 GB 空闲磁盘空间。
- 已安装 Vivado 2024.1 或更高版本(安装步骤见下文)。
- 一块入门级 FPGA 板卡(推荐 Digilent Basys 3 或国产正点原子新起点,均基于 Artix-7 系列)。
- USB 下载线(JTag)驱动已正确安装,板卡通过 USB 连接至电脑。
目标 / 验收标准
- 完成 Vivado 开发环境搭建。
- 创建一个 RTL 工程,编写并综合一个 LED 闪烁模块。
- 生成比特流并下载至板卡,观察板载 LED 以约 1 Hz 频率闪烁。
实施步骤
步骤 1:安装 Vivado 2024.1
从 AMD(原 Xilinx)官网下载 Vivado 2024.1 安装包(Windows 或 Linux 版本)。运行安装程序,在组件选择界面勾选“Vivado HL WebPACK”即可——该版本免费且无需购买许可,已覆盖 Artix-7 系列器件的完整开发需求。安装完成后,建议重启计算机以确保环境变量生效。
步骤 2:准备 FPGA 板卡与驱动
将板卡通过 USB 线连接至电脑。首次连接时,系统会自动安装 JTag 驱动;若驱动安装失败,可手动从 AMD 官网下载“Vivado Lab Solutions”驱动包,或使用板卡厂商提供的驱动工具(如 Digilent Adept)。确认设备管理器中识别到“Xilinx USB Cable”或类似设备。
步骤 3:创建 Vivado 项目
打开 Vivado,依次执行:
Quick Start → Create Project → 指定项目名称和路径 → 选择“RTL Project” → 在“Add Sources”页面暂时不添加文件(后续添加) → 在“Add Constraints”页面暂时不添加约束文件 → 在“Default Part”页面搜索并选择你的板卡器件,例如 xc7a35tcpg236-1(Basys 3 所用 Artix-7 型号)。点击 Finish 完成项目创建。
步骤 4:编写顶层模块(LED 闪烁)
在 Vivado 左侧 Flow Navigator 中点击“Add Sources” → “Add or create design sources” → “Create File”,文件类型选择 Verilog,命名为 led_blink。创建后双击打开该文件,输入以下代码:
module led_blink (
input clk, // 板载 50 MHz 时钟
input rst_n, // 低电平复位
output reg led // 板载 LED
);
reg [24:0] cnt; // 分频计数器
// 50 MHz 时钟分频至约 1 Hz:2^25 = 33,554,432 > 50,000,000/2
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 输出:每 25,000,000 个时钟周期翻转一次
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 1'b0;
else if (cnt == 25'd24_999_999)
led <= ~led;
end
endmodule代码说明:
该模块利用 25 位计数器对 50 MHz 时钟进行分频。当计数器计满 24,999,999(即 50,000,000 / 2 - 1)时,LED 输出翻转一次,从而实现约 1 Hz 的闪烁频率。复位信号 rst_n 为低电平时,计数器与 LED 均复位。
步骤 5:添加管脚约束
在 Flow Navigator 中点击“Add Sources” → “Add or create constraints” → “Create File”,命名为 basys3_pins(或根据板卡命名)。打开约束文件,输入以下内容(以 Basys 3 为例):
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN U18 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN V17 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]若使用其他板卡,请查阅其原理图或官方约束文件,替换对应的管脚编号与电平标准。
步骤 6:综合、实现并生成比特流
在 Flow Navigator 中依次点击:
“Run Synthesis” → 等待综合完成,无报错 → “Run Implementation” → 等待布局布线完成 → “Generate Bitstream”。生成成功后,Vivado 会弹出“Open Hardware Manager”提示。
步骤 7:下载至板卡并验证
点击“Open Hardware Manager” → “Auto Connect”(Vivado 会自动识别连接的板卡) → 在 Hardware 窗口中右键点击器件(如 xc7a35t_0) → “Program Device” → 选择刚刚生成的比特流文件(.bit) → 点击“Program”。下载完成后,板载 LED(通常标注为 LD0 或 LED0)应以约 1 Hz 的频率闪烁。
验证结果
若 LED 正常闪烁,说明整个开发流程已跑通。你可以尝试修改 cnt 的计数上限(例如改为 25'd4_999_999 使闪烁频率加快至约 5 Hz),重新综合、实现并下载,观察变化。
排障指南
- Vivado 安装失败:确保磁盘空间充足,关闭杀毒软件,以管理员身份运行安装程序。
- 板卡未被识别:检查 USB 驱动是否安装;尝试更换 USB 端口或线缆;在 Vivado Hardware Manager 中手动点击“Open target” → “Open New Target”进行连接。
- 综合报错:检查代码语法(如缺少分号、模块端口不匹配);确认约束文件中管脚名称与代码中端口名称一致。
- LED 不亮或不闪烁:检查板卡电源指示灯是否亮起;确认复位引脚连接正确(Basys 3 的 U18 为按钮,按下为低电平);尝试重新下载比特流。
扩展学习
跑通 LED 闪烁后,建议按以下顺序深入:
- 按键消抖与输入检测:学习如何用状态机处理机械按键抖动。
- UART 串口通信:实现 FPGA 与 PC 之间的数据收发。
- 七段数码管驱动:掌握动态扫描显示原理。
- IP 核集成:学习使用 Vivado 内置的 Block Memory、FIFO 等 IP 核。
推荐阅读 AMD 官方文档《Vivado Design Suite User Guide》系列,以及《FPGA Prototyping by Verilog Examples》等经典教材。
参考资源
- AMD Vivado 下载页面:https://www.xilinx.com/support/download.html
- Digilent Basys 3 参考手册与约束文件:https://digilent.com/reference/programmable-logic/basys-3/start
- 正点原子新起点开发板资料:http://www.openedv.com/
附录:2026 年 FPGA 学习路线图(推荐顺序)
以下路线图基于“由浅入深、项目驱动”原则,适合零基础至中级水平的自学路径:
- 数字电路基础复习(1 周):与或非门、触发器、计数器、状态机、时序图阅读。
- Verilog 语法入门(2 周):模块结构、连续赋值、过程块、阻塞/非阻塞赋值、测试文件编写。
- Vivado 工具链上手(1 周):完成本指南中的 LED 闪烁实验,熟悉综合、实现、下载流程。
- 基础外设驱动(3 周):按键消抖、数码管扫描、UART 收发、PWM 输出。
- IP 核与 Block Design(2 周):使用 Vivado IP Integrator 搭建微处理器系统(如 MicroBlaze)。
- 进阶项目实战(4 周+):数字时钟、简易计算器、VGA 图像显示、SPI/I2C 传感器读取。
建议每周投入 10~15 小时,配合仿真与板卡验证,逐步建立硬件思维。遇到问题优先查阅官方文档或社区论坛(如 AMD 社区、EEVblog、Stack Overflow)。




