什么是FPGA?和单片机/CPU的本质区别

什么是FPGA?和单片机/CPU的本质区别
本文是《FPGA入门到实战》专栏第1篇,适合完全零基础的同学。读完本篇,你将彻底搞清楚 FPGA 是什么、和 CPU/MCU/ASIC 的本质区别,以及为什么值得学。

什么是FPGA?和单片机/CPU的本质区别


1、先从一个问题开始

你有没有想过,手机里的图像信号处理、5G基站里的实时通信、雷达系统里的高速数据采集,这些对实时性要求极高并行计算量极大的场景,用普通的 CPU 或单片机能做到吗?

答案是:做不到,或者做不好。

这时候,FPGA 就登场了。


2、什么是 FPGA?

FPGA,全称 Field-Programmable Gate Array,中文翻译为现场可编程门阵列

拆开来理解:

  • Field-Programmable(现场可编程):不是在工厂固化,而是可以在实验室、工厂现场随时重新编程
  • Gate Array(门阵列):内部由大量逻辑门构成的阵列

一句话概括:FPGA 是一块可以通过编程,反复配置成任意数字电路的芯片。

你写的不是"程序",而是"电路描述"。你告诉芯片:我要在你内部搭一个什么样的电路。芯片就真的把那个电路搭出来,然后运行它。


3、FPGA vs CPU vs MCU vs ASIC:本质区别

很多人一开始分不清这几个概念,下面一次性说清楚。

3.1 CPU(通用处理器)

CPU 执行的是软件指令,一条一条地取指、解码、执行。

  • 流水线设计,通常一次执行一个操作(现代 CPU 有乱序执行、超标量,但本质还是串行指令流)
  • 灵活,但受限于指令集
  • 不擅长超大规模并行计算
  • 典型代表:Intel i7、ARM Cortex-A 系列

3.2 MCU(微控制器/单片机)

MCU 是 CPU + 片上外设(UART、SPI、ADC等)的集成体。

  • 面向嵌入式控制场景
  • 实时性较好,但计算能力有限
  • 外设固定,无法自定义硬件逻辑
  • 典型代表:STM32、Arduino、ESP32

3.3 ASIC(专用集成电路)

ASIC 是针对特定功能定制的芯片,一旦流片就不能更改。

  • 性能极高、功耗极低
  • 一次性研发成本极高(动辄数百万到数千万)
  • 适合大批量量产
  • 典型代表:苹果 A 系列芯片、比特币矿机芯片

3.4 FPGA

FPGA 是介于 MCU 和 ASIC 之间的存在。

  • 硬件可编程,可以重新配置成任意数字电路
  • 真正的硬件并行,多个模块同时运行不互相干扰
  • 开发成本远低于 ASIC,但性能低于 ASIC、成本高于 MCU
  • 适合算法验证、中小批量产品、高性能实时处理

3.5 四者对比表

维度CPUMCUFPGAASIC
执行方式串行指令串行指令并行硬件电路固定硬件电路
灵活性高(软件层)高(硬件层)
并行能力极高极高
开发成本极高
单价中-高中-高低(量产后)
典型功耗中-高极低
上市周期慢(1-2年)

核心区别只有一句话:CPU/MCU 是用软件控制固定硬件,FPGA 是用代码定义硬件本身


4、FPGA 内部架构:LUT、FF、BRAM、DSP、PLL 是什么

要理解 FPGA,必须知道它内部到底有什么。下面这几个概念贯穿整个 FPGA 学习过程。

4.1 LUT(Look-Up Table,查找表)

LUT 是 FPGA 实现逻辑功能的基本单元。

一个 N 输入 LUT 本质上是一个 2^N 位的存储器,通过查表的方式实现任意 N 输入的逻辑函数。

以 4 输入 LUT(LUT4)为例:

  • 有 4 个输入,输出 1 bit
  • 内部存储 2^4 = 16 个配置位
  • 通过配置这 16 位,可以实现任意 4 变量布尔函数

举例:实现 Y = A & B & C & D(四输入与门),只需将真值表对应的那一位配置为 1。

Xilinx 7 系列器件使用 LUT6(6输入查找表),一个 LUT6 可以拆分成两个 LUT5 使用,资源利用率更高。

4.2 FF(Flip-Flop,触发器)

FF 是存储 1 bit 数据的基本时序单元,就是我们常说的 D 触发器。

  • 在时钟上升沿(或下降沿)采样输入,并保持输出
  • 所有时序逻辑(寄存器、计数器、状态机)都由 FF 构成
  • 通常每个 LUT 旁边都配有若干个 FF(Xilinx 7系列中每个 Slice 含 8 个 LUT 和 8 个 FF)

4.3 BRAM(Block RAM,块 RAM)

BRAM 是 FPGA 内部专用的存储器资源,相比用 LUT 拼出的分布式 RAM,BRAM 更高效。

  • 容量固定(Xilinx 7系列中每个 BRAM 块为 36Kb)
  • 支持真正的双端口读写
  • 典型用途:缓存、FIFO、ROM(存储常量/系数)

4.4 DSP(Digital Signal Processing Block)

DSP 块是 FPGA 内部的硬件乘加器,专门用于高速数学运算。

  • Xilinx 7系列的 DSP48E1 可以实现 P = A * B + C 运算,单周期完成
  • 如果用 LUT 实现乘法,既慢又耗资源;使用 DSP 块则高效得多
  • 典型用途:FIR滤波器、FFT、矩阵乘法、PID控制

4.5 PLL(Phase-Locked Loop,锁相环)

PLL 是 FPGA 内部的时钟管理电路。

  • 可以对输入时钟进行倍频、分频、相位调整
  • 输出低抖动、高质量的时钟信号
  • 几乎每个 FPGA 设计都需要用到(开发板晶振通常是 50MHz 或 100MHz,实际设计可能需要其他频率)

4.6 可编程互连

除了上面这些功能单元,FPGA 内部还有大量可编程布线资源,负责把 LUT、FF、BRAM、DSP 等连接起来。这些布线资源的质量直接影响时序性能。


5、主流厂商对比:买 Xilinx 还是 Intel?

目前 FPGA 市场主要被两家公司垄断:

5.1 AMD-Xilinx

  • 2022 年被 AMD 收购,原 Xilinx 品牌延续
  • 市场份额第一
  • 主力开发工具:Vivado(本专栏主要使用)
  • 主流入门系列:Artix-7、Spartan-7、Zynq-7000(含 ARM)
  • 中高端系列:Kintex、Virtex、Zynq UltraScale+

5.2 Intel-Altera

  • 2015 年被 Intel 收购
  • 市场份额第二
  • 主力开发工具:Quartus Prime
  • 主流入门系列:Cyclone IV/V、MAX 10
  • 中高端系列:Arria、Stratix

5.3 学哪个?

对于初学者,两家工具都可以,但建议选一家学透:

推荐 Xilinx-Vivado推荐 Intel-Quartus
目标找 Xilinx 相关岗位目标找 Intel/Altera 相关岗位
学习 Zynq SoC学习 Nios II / Qsys
多数高校实验室用 Xilinx通信领域部分公司用 Altera

本专栏使用 Vivado + Xilinx 7系列开发板。


6、FPGA 的典型应用场景

6.1 通信领域

  • 5G 基站:实时基带信号处理(LDPC/极化码编解码)
  • 光纤通信:高速串行接口(SerDes)、前向纠错(FEC)
  • 软件无线电(SDR):波形重配置

6.2 图像与视频处理

  • 工业视觉:实时图像采集、预处理、目标检测
  • 医疗影像:CT/MRI 图像重建加速
  • 视频编解码:H.264/H.265 实时处理

6.3 工业控制

  • 电机驱动:高精度 PWM 生成,实时电流环控制
  • 数控机床:多轴插补运算
  • 工业以太网:EtherCAT 等实时协议

6.4 国防与航天

  • 雷达信号处理
  • 卫星载荷控制
  • 电子对抗系统

6.5 数据中心与 AI 加速

  • 微软 Project Catapult:用 FPGA 加速 Bing 搜索
  • 网络加速:智能网卡(SmartNIC)
  • AI 推理:FPGA 部署轻量级神经网络(低延迟场景)

7、FPGA 的劣势(客观说)

FPGA 不是万能的,以下场景不适合用 FPGA:

  1. 复杂操作系统应用:运行 Linux/Windows 上的应用,CPU 更合适
  2. 算法频繁变更:FPGA 开发周期比软件长,算法不稳定时成本高
  3. 低成本大批量消费品:MCU 成本远低于 FPGA
  4. 纯标量顺序计算:CPU 流水线已经足够高效

8、本专栏学习路线图

本专栏共 30 篇,分 5 个阶段,建议按顺序学习:

第一阶段:基础入门(第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 小时(含代码实操)

建议配备

  • 一台安装了 Vivado 的电脑(第2篇有安装教程)
  • 一块 Xilinx 7系列开发板(正点原子/达芬奇/Nexys A7 均可)

9、总结

知识点要点
FPGA 是什么现场可编程门阵列,通过代码定义硬件电路
与 CPU 区别CPU 执行指令,FPGA 实现并行硬件电路
内部资源LUT(逻辑)、FF(寄存器)、BRAM(存储)、DSP(运算)、PLL(时钟)
主流厂商AMD-Xilinx(Vivado)、Intel-Altera(Quartus)
核心优势硬件并行、可重配置、实时性强
适用场景通信、图像处理、工业控制、AI加速

下一篇:第2篇:Vivado 安装与工程创建(详细步骤+常见报错解决)

如果这篇文章对你有帮助,欢迎点赞收藏!学习过程中有任何问题,欢迎在评论区留言。

Read more

【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !

【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!! 引言 Spring MVC 犹如一座桥梁,连接着前端的精彩与后端的强大,它赋予开发者以灵动之笔,在数字化的画布上描绘出绚丽多彩的 Web 世界。在 Spring MVC 的引领下,我们能够驾驭复杂的业务逻辑,实现流畅的用户体验,让技术与创意完美融合,开启无限可能的 Web 开发之旅。 目录 1. 返回响应内容 2. lombok 3. 加法器 一. 返回响应内容 在上篇中,我们学习了如何使用控制层的处理请求相关, 现在我们学习如何处理返回响应内容。 1. 设置状态码 importjakarta.servlet.http.HttpServletResponse;importorg.springframework.stereotype.Controller;importorg.

基于深度学习的纺织品缺陷检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Django+web+训练代码+数据集)

基于深度学习的纺织品缺陷检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Django+web+训练代码+数据集)

视频演示 基于深度学习的纺织品缺陷检测系统 目录 视频演示 1. 前言 2. 项目演示 2.1 用户登录界面 2.2 主界面布局 2.3 个人信息管理 2.4 多模态检测展示 2.5 检测结果保存 2.6 多模型切换 2.7 识别历史浏览 2.8 管理员管理用户信息 2.9 管理员管理识别历史 3.模型训练核心代码 4. 技术栈 5. YOLO模型对比与识别效果解析 5.1 YOLOv5/YOLOv8/YOLOv11/YOLOv12模型对比 5.2 数据集分析

Windows 下 OpenClaw (小龙虾) 极速部署指南:从零基础到 Web 界面成功运行

🚀 [保姆级教程] Windows 下 OpenClaw (小龙虾) 极速部署指南:从零基础到 Web 界面成功运行 摘要:OpenClaw(开源 AI 代理框架)功能强大但配置项繁多,新手极易在插件配置阶段劝退。本文记录了一次在 Windows 环境下“极简启动”的完整实战过程。我们将采用**“核心优先,插件后置”**的策略,跳过所有非必要的第三方依赖(如 Notion/GitHub),仅配置核心大模型 API(以 Moonshot/Kimi 为例),快速跑通本地服务并验证 Web 控制面板。适合希望快速搭建本地 AI 助手的开发者。 关键词:OpenClaw, AI Agent, Windows 安装, Kimi API, Moonshot,

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦 * 前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦 * 瞎扯淡的开场白:为什么你的简历还缺个"桌面端"项目 * 扒一扒Electron这货的底裤 * 套壳浏览器?这么说对也不对 * 除了Electron,这几个备胎也得认识 * 为啥大厂都爱用Electron? * 手把手教你把网页"塞"进桌面图标里 * 脚手架一把梭,别傻傻敲命令 * main.js里的那些破事儿 * preload脚本:别把它当摆设 * 这框架虽好,但这几个坑踩进去就拔不出来 * 打包体积:塞了整个Chrome进去? * 内存占用:低配电脑杀手 * 自动更新:配置起来想砸键盘 * 安全性:别让应用变成筛子 * 实战环节:做个能摸鱼的本地记事本 * 程序崩了别只会重启,这几招能让你少掉几根头发 * 主进程挂了怎么查? * 渲染进程白屏了? * 内存泄漏排查