Quick Start:最短路径跑通第一个FPGA设计
本路线面向零基础或刚入门的FPGA学习者,目标是在30分钟内完成环境搭建、代码编写、仿真验证与上板测试。请严格按以下步骤操作,确保每一步无误。
前置条件
- 硬件需求:一台运行Windows 10/11或Ubuntu 20.04/22.04的计算机,至少8 GB RAM(推荐16 GB),50 GB可用磁盘空间。
- 软件需求:Xilinx Vivado 2022.2或更新版本(WebPACK版即可),安装时勾选“Vivado”和“Vitis”组件。
- 硬件可选:一块入门级FPGA开发板,如Xilinx Artix-7系列(Basys 3、Nexys A7)或Altera Cyclone IV系列(DE0-Nano)。无板卡可先使用仿真验证,但上板测试能强化理解。
- 知识预备:无需Verilog或FPGA经验,但需了解基本数字逻辑概念(如与门、触发器)。
目标与验收标准
- 主要目标:在30分钟内完成一个LED闪烁电路的设计、仿真、综合与上板验证。
- 验收标准:
实施步骤
步骤一:安装Vivado并配置环境
- 从Xilinx官网下载Vivado HL WebPACK安装包(约40 GB),运行安装程序。
- 在“Product to Install”页面勾选“Vivado”和“Vitis”组件,其余默认即可。
- 安装完成后,重启计算机并确保Vivado可正常启动。
步骤二:创建Vivado工程
- 打开Vivado,点击“Create New Project”。
- 输入项目名称(如“led_blink”),选择项目路径(避免中文或空格)。
- 选择“RTL Project”,勾选“Do not specify sources at this time”。
- 在“Default Part”页面搜索并选择器件:如Artix-7的xc7a35tcsg324-1(对应Basys 3)。
- 点击“Finish”完成工程创建。
步骤三:编写顶层Verilog模块
- 在“Sources”面板右键点击“Design Sources” → “Add Sources” → “Create File”。
- 选择文件类型为“Verilog”,文件名“top.v”,点击“OK”。
- 在弹出的“Define Module”窗口中,定义端口:
- 点击“OK”后,在编辑器中输入以下代码:
module top ( input clk, input rst_n, output reg led ); reg [23:0] counter; always @(posedge clk or negedge rst_n) begin if (!rst_n) counter <= 24'd0; else counter <= counter + 1'b1; end always @(posedge clk or negedge rst_n) begin if (!rst_n) led <= 1'b0; else if (counter == 24'd0) led <= ~led; else led <= led; end endmodule
步骤四:编写仿真测试文件
- 在“Sources”面板右键点击“Simulation Sources” → “Add Sources” → “Create File”。
- 创建Verilog文件“tb_top.v”,输入以下测试代码:
module tb_top; reg clk; reg rst_n; wire led; top uut ( .clk(clk), .rst_n(rst_n), .led(led) ); initial begin clk = 0; forever #10 clk = ~clk; // 50 MHz时钟 end initial begin rst_n = 0; #100 rst_n = 1; #5000 $finish; end endmodule
步骤五:运行仿真并验证波形
- 在“Flow Navigator”中点击“Run Simulation” → “Run Behavioral Simulation”。
- Vivado会启动仿真器并显示波形窗口。添加“led”和“counter”信号到波形视图。
- 运行仿真至少5 μs,观察led信号是否在counter溢出时翻转(约每83 ms翻转一次,因24位计数器在50 MHz下周期为2^24/50e6 ≈ 0.335秒,led每周期翻转一次,故闪烁频率约1.5 Hz)。
步骤六:综合、实现并生成比特流
- 在“Flow Navigator”中依次点击“Synthesis” → “Run Synthesis”。等待完成。
- 综合完成后,点击“Implementation” → “Run Implementation”。
- 实现完成后,点击“Generate Bitstream”。
- 若过程中出现时序或资源错误,检查约束文件(XDC)是否正确(见排障章节)。
步骤七:下载比特流到开发板
- 连接开发板到计算机(通常通过USB-JTAG线缆)。
- 在Vivado中点击“Open Hardware Manager” → “Auto Connect”。
- 选中设备后,右键点击“Program Device”,选择生成的比特流文件(.bit),点击“Program”。
- 观察开发板LED是否开始闪烁。若未闪烁,检查复位按钮是否按下(低电平复位)或LED引脚映射是否正确。
验证结果
- 仿真验证:波形显示led信号在counter归零时翻转,频率约为1.5 Hz(取决于时钟频率与计数器位宽)。
- 上板验证:开发板LED以肉眼可见频率闪烁,表明设计正确。
- 常见问题:若LED常亮或常灭,检查复位信号极性或约束文件中的引脚分配。
排障指南
- Vivado安装失败:确保磁盘空间充足,关闭杀毒软件,以管理员身份运行安装程序。
- 仿真无波形:检查测试文件中模块实例化是否正确,时钟是否生成,仿真时间是否足够长。
- 综合报错:检查Verilog语法,特别是端口声明与模块名是否一致。确认器件型号选择正确。
- 上板后LED不亮:
扩展实践
- 修改闪烁频率:调整计数器位宽(如改为26位)或比较值(如counter == 24'd5000000),可改变LED闪烁速度。
- 多LED控制:扩展模块输出多个LED,使用不同计数器或分频逻辑实现流水灯效果。
- 按键输入:添加按键输入信号,控制LED亮灭模式,学习同步器与去抖设计。
- PWM生成:使用计数器产生PWM波形,驱动LED亮度变化,为后续电机控制等应用打基础。
参考资源
- Xilinx Vivado官方文档:UG892(Vivado Design Suite User Guide)
- Basys 3原理图与约束文件:Digilent官网资源中心
- Verilog语法参考:IEEE Std 1364-2005
附录:常见器件引脚约束示例(Basys 3)
# 时钟引脚(100 MHz)
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]
# LED0
set_property PACKAGE_PIN V17 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]将上述约束保存为“top.xdc”文件,并添加到Vivado工程的约束文件中,即可正确映射引脚。



