先抓住一个核心:硬件可以重构
FPGA 的全称是 Field-Programmable Gate Array,中文常译为现场可编程门阵列。它是一种制造完成后仍能配置内部逻辑和连接关系的集成电路。
普通 CPU 已经把取指、译码、执行等电路固定好了。开发者写软件,让固定硬件按顺序执行指令。FPGA 则提供大量可配置的小型逻辑单元、存储块、运算单元和互连网络。开发者描述所需的数字电路,工具把这份描述转换成配置数据,再写入芯片。
一个直观比喻:CPU 像一支训练有素的施工队,按照任务清单逐项工作;FPGA 更像一座可以反复改变生产线布局的工厂。前者改变指令,后者改变“机器如何连接”。
“现场可编程”表示芯片交付到用户手中、甚至安装进产品后,仍可加载新的配置。“门阵列”则来自芯片内部密集排列的可编程逻辑资源。
FPGA 芯片内部有什么
不同厂商和系列的结构并不完全相同,但大多数 FPGA 都围绕以下资源组织。它们被可编程互连网络连接起来,共同组成目标电路。
LUT 实现布尔逻辑,触发器保存状态。两者构成计数器、状态机、流水线等基础电路。
它决定信号从哪里来、到哪里去。布线质量会直接影响时序、功耗和资源利用率。
块 RAM、分布式 RAM 或更大容量的嵌入式存储可用于缓冲、查表和队列。
专用乘法器、收发器、PCIe、存储控制器等模块能提高性能并减少逻辑消耗。
FPGA 的并行性来自真实存在的多条硬件通路。假设设计了 16 个独立乘法单元,它们可以在同一时钟周期同时处理 16 组数据,而不是由一个算术单元循环执行 16 次。这是 FPGA 适合实时信号处理、低延迟网络和数据流计算的重要原因。
FPGA 是怎样“编程”的
FPGA 开发通常使用 Verilog、SystemVerilog 或 VHDL。它们被称为硬件描述语言,因为代码表达的是电路结构和时序行为,而不是简单的软件执行步骤。
软件程序出现问题时,常关注变量、调用栈和算法。FPGA 设计还必须关心时钟频率、建立时间、保持时间、跨时钟域、亚稳态以及物理引脚约束。代码能通过语法检查,不代表电路就能稳定运行。
最容易产生的误解:HDL 看起来像编程语言,但每一个并行块都可能对应同时工作的真实硬件。对时序和资源没有概念,往往会写出“仿真正确、上板失败”的设计。
FPGA、CPU、GPU 与 ASIC 怎么选
这几类芯片没有绝对高下。选择取决于算法是否稳定、并行模式、延迟目标、功耗、开发周期和产品数量。
| 类型 | 核心特点 | 适合场景 | 主要代价 |
|---|---|---|---|
| CPU | 通用、灵活,软件生态成熟 | 操作系统、业务逻辑、复杂控制 | 数据流任务的并行度和确定性有限 |
| GPU | 大量并行计算核心,吞吐量高 | 图形、矩阵运算、AI 训练与推理 | 功耗较高,细粒度实时控制不占优势 |
| FPGA | 数据通路可定制,延迟可预测 | 协议桥接、实时处理、硬件加速、原型验证 | 开发门槛高,需处理时序和资源约束 |
| ASIC | 为单一功能定制,量产效率高 | 算法稳定、出货量大的成熟产品 | 前期成本高,流片后难以修改 |
很多系统并不是四选一,而是组合使用。例如 CPU 负责系统管理,GPU 处理大规模矩阵,FPGA 接收高速数据、完成预处理并提供确定性控制,成熟后某些固定模块再转成 ASIC。
FPGA 通常用在哪里
高速接口与实时数据流
FPGA 可以在摄像头、传感器、网络接口与处理器之间完成协议桥接、格式转换、过滤和时间戳处理。数据进入后直接沿硬件流水线前进,延迟低且较为稳定。
工业与汽车
机器视觉、电机控制、功能安全、车载显示和多路传感器融合。
通信与计算
数据包处理、基站、存储加速、服务器管理和安全启动。
边缘 AI
在功耗受限设备中执行可定制的神经网络推理与传感器预处理。
芯片原型
在 ASIC 流片前验证架构,也可模拟尚未制造出来的处理器。
Lattice Semiconductor 是谁
Lattice Semiconductor 中文通常称莱迪思半导体,是一家专注可编程逻辑器件的美国芯片设计公司,股票代码为 NASDAQ: LSCC。
在 FPGA 市场中,Lattice 的鲜明定位是低功耗、小尺寸和中低容量器件。与强调超大规模逻辑、高端数据中心加速的产品线相比,Lattice 更常出现在设备控制、接口桥接、嵌入式视觉、安全和始终在线的低功耗任务中。
为什么小型 FPGA 很重要
许多产品不需要庞大的计算阵列,只需要一颗功耗低、启动快、封装小的可编程芯片,处理几十个控制信号、连接不同接口,或在主处理器启动前建立可信根。
根据 Lattice 官方资料,其产品覆盖通用 FPGA、超低功耗 FPGA、视频连接、系统控制与安全等类别。常见家族包括 iCE40、MachXO、ECP5、Certus-NX、CrossLink-NX,以及面向更高逻辑容量的 Avant 平台。
- iCE40:低功耗、小封装,适合始终在线和轻量逻辑。
- MachXO:常用于上电时序、板级管理、控制和安全。
- CrossLink:聚焦摄像头、显示与视频接口桥接。
- ECP5 / Certus:适合更复杂的通用逻辑、连接和处理任务。
Lattice 同时提供 Radiant、Diamond、Propel 等设计工具,以及面向边缘 AI、嵌入式视觉和平台安全的解决方案栈。选择 Lattice 并不只是选择一颗芯片,也是在选择对应的软件、IP、参考设计和供应生态。
初学者怎样开始
学习 FPGA 最有效的方法不是先背完整语法,而是用小项目建立“代码就是电路”的直觉。
- 先学数字逻辑:布尔代数、组合逻辑、触发器、状态机和同步时序。
- 选择一种 HDL:Verilog 或 SystemVerilog 对多数初学者较直接。
- 从仿真开始:先做计数器、流水灯、按键消抖和 UART,再下载到开发板。
- 学会读时序报告:理解关键路径、时钟约束和跨时钟域,比堆更多代码重要。
- 再进入完整项目:尝试图像流、音频处理、软核处理器或简单硬件加速器。
判断 FPGA 是否合适:如果任务需要可重构、低延迟、并行数据通路或精确 I/O 时序,FPGA 值得考虑。如果只是运行常规业务逻辑,微控制器或 CPU 往往更简单、更经济。