FPGA 是什么?与单片机/CPU 的本质区别
FPGA(现场可编程门阵列)是一种可通过编程配置成任意数字电路的芯片。与 CPU、MCU 等串行执行指令不同,FPGA 基于硬件并行架构,适合高实时性、大规模并行计算场景。文章介绍了 FPGA 内部核心资源(LUT、FF、BRAM、DSP、PLL),对比了 Xilinx 与 Intel 两大厂商,列举了通信、图像处理、工业控制等应用场景,并客观分析了其开发周期长、成本高等劣势。适合零基础读者了解 FPGA 本质及入门方向。

FPGA(现场可编程门阵列)是一种可通过编程配置成任意数字电路的芯片。与 CPU、MCU 等串行执行指令不同,FPGA 基于硬件并行架构,适合高实时性、大规模并行计算场景。文章介绍了 FPGA 内部核心资源(LUT、FF、BRAM、DSP、PLL),对比了 Xilinx 与 Intel 两大厂商,列举了通信、图像处理、工业控制等应用场景,并客观分析了其开发周期长、成本高等劣势。适合零基础读者了解 FPGA 本质及入门方向。

你有没有想过,手机里的图像信号处理、5G 基站里的实时通信、雷达系统里的高速数据采集,这些对实时性要求极高、并行计算量极大的场景,用普通的 CPU 或单片机能做到吗?
答案是:做不到,或者做不好。
这时候,FPGA 就登场了。
FPGA,全称 Field-Programmable Gate Array,中文翻译为现场可编程门阵列。
拆开来理解:
一句话概括:FPGA 是一块可以通过编程,反复配置成任意数字电路的芯片。
你写的不是"程序",而是"电路描述"。你告诉芯片:我要在你内部搭一个什么样的电路。芯片就真的把那个电路搭出来,然后运行它。
很多人一开始分不清这几个概念,下面一次性说清楚。
CPU 执行的是软件指令,一条一条地取指、解码、执行。
MCU 是 CPU + 片上外设(UART、SPI、ADC 等)的集成体。
ASIC 是针对特定功能定制的芯片,一旦流片就不能更改。
FPGA 是介于 MCU 和 ASIC 之间的存在。
| 维度 | CPU | MCU | FPGA | ASIC |
|---|---|---|---|---|
| 执行方式 | 串行指令 | 串行指令 | 并行硬件电路 | 固定硬件电路 |
| 灵活性 | 高(软件层) | 中 | 高(硬件层) | 无 |
| 并行能力 | 低 | 低 | 极高 | 极高 |
| 开发成本 | 低 | 低 | 中 | 极高 |
| 单价 | 中 - 高 | 低 | 中 - 高 | 低(量产后) |
| 典型功耗 | 中 - 高 | 低 | 中 | 极低 |
| 上市周期 | 快 | 快 | 快 | 慢(1-2 年) |
核心区别只有一句话:CPU/MCU 是用软件控制固定硬件,FPGA 是用代码定义硬件本身。
要理解 FPGA,必须知道它内部到底有什么。下面这几个概念贯穿整个 FPGA 学习过程。
LUT 是 FPGA 实现逻辑功能的基本单元。
一个 N 输入 LUT 本质上是一个 2^N 位的存储器,通过查表的方式实现任意 N 输入的逻辑函数。
以 4 输入 LUT(LUT4)为例:
举例:实现 Y = A & B & C & D(四输入与门),只需将真值表对应的那一位配置为 1。
Xilinx 7 系列器件使用 LUT6(6 输入查找表),一个 LUT6 可以拆分成两个 LUT5 使用,资源利用率更高。
FF 是存储 1 bit 数据的基本时序单元,就是我们常说的 D 触发器。
BRAM 是 FPGA 内部专用的存储器资源,相比用 LUT 拼出的分布式 RAM,BRAM 更高效。
DSP 块是 FPGA 内部的硬件乘加器,专门用于高速数学运算。
P = A * B + C 运算,单周期完成PLL 是 FPGA 内部的时钟管理电路。
除了上面这些功能单元,FPGA 内部还有大量可编程布线资源,负责把 LUT、FF、BRAM、DSP 等连接起来。这些布线资源的质量直接影响时序性能。
目前 FPGA 市场主要被两家公司垄断:
对于初学者,两家工具都可以,但建议选一家学透:
| 推荐 Xilinx-Vivado | 推荐 Intel-Quartus |
|---|---|
| 目标找 Xilinx 相关岗位 | 目标找 Intel/Altera 相关岗位 |
| 学习 Zynq SoC | 学习 Nios II / Qsys |
| 多数高校实验室用 Xilinx | 通信领域部分公司用 Altera |
本文使用 Vivado + Xilinx 7 系列开发板。
FPGA 不是万能的,以下场景不适合用 FPGA:
建议按顺序学习:
第一阶段:基础入门(第 1-6 篇) ├── 第 1 篇:什么是 FPGA(本篇) ├── 第 2 篇:Vivado 安装与工程创建 ├── 第 3 篇:Verilog 语法(一)模块结构 ├── 第 4 篇:Verilog 语法(二)运算符与赋值 ├── 第 5 篇:Verilog 语法(三)时序逻辑 └── 第 6 篇:Testbench 与仿真 第二阶段:项目起步(第 7-12 篇) ├── 第 7 篇:LED 闪烁(第一个完整项目) ├── 第 8 篇:FPGA 内部资源详解 ├── ...按键消抖、时序分析、ILA 调试 第三阶段:通信协议实战(第 13-17 篇) ├── UART / SPI / I2C └── 有限状态机 FSM 第四阶段:工程能力提升(第 18-25 篇) ├── 代码规范、复位设计、流水线 └── 综合实战项目 第五阶段:总结与进阶(第 26-30 篇) ├── 报错大全、避坑指南 └── 进阶方向:Zynq / HLS / 图像处理
每篇预计学习时间:1-2 小时(含代码实操)
建议配备:
| 知识点 | 要点 |
|---|---|
| FPGA 是什么 | 现场可编程门阵列,通过代码定义硬件电路 |
| 与 CPU 区别 | CPU 执行指令,FPGA 实现并行硬件电路 |
| 内部资源 | LUT(逻辑)、FF(寄存器)、BRAM(存储)、DSP(运算)、PLL(时钟) |
| 主流厂商 | AMD-Xilinx(Vivado)、Intel-Altera(Quartus) |
| 核心优势 | 硬件并行、可重配置、实时性强 |
| 适用场景 | 通信、图像处理、工业控制、AI 加速 |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online