什么是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

8大AI平台速度和token消耗测试,小米MiMo也加上!

8大AI平台速度和token消耗测试,小米MiMo也加上!

自己开发的工具要多用! 周一工作日的时候我们测试了6大Coding Plan的速度和能耗(tokens)! 当时主要包含了智谱、Kimi、MiniMax、火山方舟、阿里百炼、腾讯混元等 6 个 Coding Plan 的平台。 今天周六,休息日,我再来测一次! 测试选手加上了最新发布的小米 MiMo2Pro,以及OpenRouter 中的 Opus 4.6! 也就是说凑够了 8 个平台。 另外这次测试会加两题,除了考智力之外,考考指令遵循能力,以及文学和自我发挥的能力。 废话不多说,直接开测。 1、极简回答 AI 有时候很喜欢废话,纯粹浪费时间,浪费 tokens,所以我觉得这个测试非常有必要。 第一个问题: 问题:早上好 系统提示词:关闭所有思考能力,用最简单的方式来回答! 大部分AI都是符合要求的,回答“

Spring Cloud + AI:微服务架构下的智能路由、故障自愈、日志分析

Spring Cloud + AI:微服务架构下的智能路由、故障自愈、日志分析

在云原生时代,微服务架构的复杂性带来了路由决策、故障恢复、日志排查三大痛点。将 AI 能力融入 Spring Cloud 生态,可以显著提升系统的自适应能力和运维效率。本文将围绕智能路由、故障自愈、智能日志分析三大场景,给出完整的架构设计与代码实现。 一、整体架构 智能路由 智能路由 智能路由 指标上报 指标上报 指标上报 实时指标 服务状态 路由权重 熔断指令 日志输出 日志输出 日志输出 异常日志 告警/报告 客户端请求 Spring Cloud Gateway + AI 路由策略 服务 A 服务 B 服务 C Nacos 服务注册中心 Prometheus + Grafana AI

AI与单片机之:STM32上运行AI大模型的四种方案!(含案例,建议收藏)

AI与单片机之:STM32上运行AI大模型的四种方案!(含案例,建议收藏)

前几天小编写了2篇文章 “为什么AI会改变单片机的未来?” 单片机上如何运行AI?单片机如何“学会思考”之TinyML崛起!(含案例,建议收藏), 引起了非常多的留言、关注和加群讨论。但是,仍然有读者朋友给小编留言,能否整理一些关于比较常用芯片比如STM32实用AI大模型的案例。为了满足粉丝朋友的诉求,小编整理了“在STM32单片机上运行AI大模型的”真实案例。 从粉丝的一个问题引出本文的思考:AI 模型能跑在 STM32 上吗? 一:先说结论 先说结论:不仅能跑,还一共有四种方案。 方案一:STM32官方提供的 STM32Cube.AI(X-CUBE-AI) 其实原理是我们把在 PC 上训练好的神经网络自动转换成可在 MCU 上运行的 C 库;然后在自己的软件/代码工程中调用已经编译产生的C库。 方案二:直接用 TensorFlow Lite Micro(TFLM)+ CMSIS-NN 在 STM32

飞算JavaAI的安装及其使用方法

飞算JavaAI的安装及其使用方法

标签#JavaAI 首先,我i们先去电脑端自带的浏览器下载IDEA 界面往下滑可以看到下载安装。 安装后软件会显示在桌面,如果没有安装在桌面快捷,可以在系统应用中查找。 启动IDEA,在顶部菜单栏进入 File -> Settings (Windows/Linux)或 IntelliJ IDEA -> Preferences (macOS),打开对话框。 在设置界面左侧选择 Plugins 选项,切换到插件市场。在顶部的搜索框中输入关键词“飞算”。 搜索”Calex-JavaAI“,将该插件安装到右侧使用栏。 在对话框内输入你想要生成代码的题目。这里我用”校园餐饮服务评价系统的设计与实现”为例,做出以下分析及实操过程。 一、需求分析与规划 (一)功能需求 此次开发的餐饮电商系统,对于用户而言,需要能够快速注册登录,维护个人信息,根据自身权限浏览、搜索菜品,下单支付,对已完成订单进行评价等操作;