可编程逻辑入门

FPGA 是什么?

它不是在现成处理器上运行程序,而是把一套数字电路直接“搭”进芯片里。

装有 FPGA 芯片和多种接口的蓝色开发板
一块用于多核硬件仿真的 FPGA 开发板。图片来源:MIT News

先抓住一个核心:硬件可以重构

FPGA 的全称是 Field-Programmable Gate Array,中文常译为现场可编程门阵列。它是一种制造完成后仍能配置内部逻辑和连接关系的集成电路。

普通 CPU 已经把取指、译码、执行等电路固定好了。开发者写软件,让固定硬件按顺序执行指令。FPGA 则提供大量可配置的小型逻辑单元、存储块、运算单元和互连网络。开发者描述所需的数字电路,工具把这份描述转换成配置数据,再写入芯片。

一个直观比喻:CPU 像一支训练有素的施工队,按照任务清单逐项工作;FPGA 更像一座可以反复改变生产线布局的工厂。前者改变指令,后者改变“机器如何连接”。

“现场可编程”表示芯片交付到用户手中、甚至安装进产品后,仍可加载新的配置。“门阵列”则来自芯片内部密集排列的可编程逻辑资源。

FPGA 芯片内部有什么

不同厂商和系列的结构并不完全相同,但大多数 FPGA 都围绕以下资源组织。它们被可编程互连网络连接起来,共同组成目标电路。

LUT 与触发器

LUT 实现布尔逻辑,触发器保存状态。两者构成计数器、状态机、流水线等基础电路。

可编程互连

它决定信号从哪里来、到哪里去。布线质量会直接影响时序、功耗和资源利用率。

片上存储器

块 RAM、分布式 RAM 或更大容量的嵌入式存储可用于缓冲、查表和队列。

DSP 与硬核模块

专用乘法器、收发器、PCIe、存储控制器等模块能提高性能并减少逻辑消耗。

FPGA 逻辑块、可编程互连和输入输出区域的结构示意图
FPGA 的逻辑阵列与可编程互连示意。图片来源:Lattice Semiconductor

FPGA 的并行性来自真实存在的多条硬件通路。假设设计了 16 个独立乘法单元,它们可以在同一时钟周期同时处理 16 组数据,而不是由一个算术单元循环执行 16 次。这是 FPGA 适合实时信号处理、低延迟网络和数据流计算的重要原因。

FPGA 是怎样“编程”的

FPGA 开发通常使用 Verilog、SystemVerilog 或 VHDL。它们被称为硬件描述语言,因为代码表达的是电路结构和时序行为,而不是简单的软件执行步骤。

描述用 HDL、原理图或高层综合工具定义电路。
仿真在写入芯片前验证功能、边界条件和时序。
综合把设计转换成目标器件可实现的逻辑网表。
布局布线分配具体资源,并寻找满足时序的连接路径。
配置生成 bitstream,下载到 FPGA 并进行板级调试。

软件程序出现问题时,常关注变量、调用栈和算法。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 更常出现在设备控制、接口桥接、嵌入式视觉、安全和始终在线的低功耗任务中。

Lattice CrossLinkU-NX FPGA 评估板
CrossLinkU-NX 评估板。图片来源:Lattice Semiconductor

为什么小型 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 最有效的方法不是先背完整语法,而是用小项目建立“代码就是电路”的直觉。

  1. 先学数字逻辑:布尔代数、组合逻辑、触发器、状态机和同步时序。
  2. 选择一种 HDL:Verilog 或 SystemVerilog 对多数初学者较直接。
  3. 从仿真开始:先做计数器、流水灯、按键消抖和 UART,再下载到开发板。
  4. 学会读时序报告:理解关键路径、时钟约束和跨时钟域,比堆更多代码重要。
  5. 再进入完整项目:尝试图像流、音频处理、软核处理器或简单硬件加速器。

判断 FPGA 是否合适:如果任务需要可重构、低延迟、并行数据通路或精确 I/O 时序,FPGA 值得考虑。如果只是运行常规业务逻辑,微控制器或 CPU 往往更简单、更经济。

参考资料