FPGA 简介
1. FPGA 中文名:现场可编程门阵列
其中'现场'指其可重复写入,'门阵列'指其根据查找表输出,'可编程'则是 FPGA 与 CPU 之间最主要的区别,能够改变逻辑门单元之间的硬件逻辑。
2. FPGA 内部结构
FPGA 由许多'可配置逻辑模块'(Configurable Logic Block, CLB)、输入/输出单元(I/O Block, IOB)和分布式的可编程互联矩阵(Programmable Interconnection Matrix, PIM)组成。

3. CPU、DSP 和 FPGA 的区别
- CPU: 具有比较强的事务管理功能,擅长控制,可用于跑 UI 及应用程序。
- DSP: 主要是来做计算,例如加解密算法、调制解调等,优势是强大的数据处理能力和较高的运行速度。
- FPGA: 主要使用 Verilog 进行编程,灵活性强,并行处理度高,可编程,可以做到很高的带宽处理。
FPGA 开发流程
本文将以点亮 LED 灯为例,梳理 FPGA 的开发流程。
标准的 FPGA 开发流程如下图所示:

1. FPGA 工程管理
工程目录结构通常如下:
doc: 用来存放辅助文档,如波形图、系统框图等。prj: 用来新建工程及产生的文件。rtl: 开发过程中使用的.v格式的 RTL 文件。sim: 仿真工程与仿真文件,内部通常还有一个tb文件夹。

2. 需求分析
以点亮 LED 灯为例,使用开发板上的按键 key0 来控制 led0 灯的亮灭。
- 当按键按下,LED 灯被点亮;按键松开,LED 灯熄灭。
- 通过查询开发板原理图,得到 LED 灯的亮灭逻辑,即 led0 高电平点亮,反之熄灭。



































