第二章 FPGA简介

FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种半定制的数字集成电路,凭借灵活性高、开发周期短、处理性能强(并行)等特点,广泛应用于通信、图像处理和医疗等领域,近年来在人工智能、5G 和自动驾驶领域也占据一席之地。本章带你建立对FPGA 的初步认识。

本章在讲什么

本章围绕四个问题展开:

  1. FPGA 是什么——从名字的三个关键词拆解它的本质;
  2. FPGA 从哪来——数字集成电路如何一步步发展到FPGA;
  3. FPGA 强在哪——与CPU、DSP 等器件相比的技术优势和不足;
  4. FPGA 用在哪——主流厂商格局和典型应用领域。

核心概念拆解

1. 从名字理解FPGA 的三个特点

FPGA 由Xilinx 创始人之一Ross Freeman 于1985 年发明,属于可编程逻辑器件(PLD)的一种。它的名字就浓缩了三个核心特点:

图2.1.1 FPGA 图片

  • 现场:可以在使用现场对芯片编程,无须拆下返回厂家。早期芯片是一次性编程,后来要靠紫外线灯长时间照射才能擦除重写,再后来才做到随时重复写入。
  • 门阵列:FPGA 由大量"逻辑门"组合而成。与传统门电路不同,FPGA 中的逻辑门以查找表(LUT)的形式实现——把某个逻辑功能的所有可能结果预先写到存储单元中,根据输入直接查出结果输出。
  • 可编程:普通芯片(如CPU、GPU)出厂后逻辑门之间的硬件关系就固定了。而FPGA 中的逻辑门是"自由的",可按开发者意图重新排列组合。注意:在CPU 上写C/Python 本质上只是改变CPU 状态寄存器的值,不能改变CPU 内部逻辑门之间的硬件连接;FPGA 可以,这才是它"可编程"的真正含义。

2. 数字集成电路的发展脉络

门电路(与、或、非、与非、异或等)是数字电路的基本单元:

图2.2.1 基本的门电路符号

数字集成电路的发展经历了几个关键阶段:

  • 1961 年,德州仪器(TI)率先把数字电路元器件集成到同一片硅片上,制成集成电路(IC),取代了分立器件电路;
  • 早期设计师要在面包板上用导线连接多个芯片(如经典的TI 74 系列器件)搭建电路:

图2.2.2 使用74 系列器件搭建的电路

  • 集成度不断提高:小规模(SSI)→ 中规模(MSI)→ 大规模(LSI)→ 超大规模(VLSI)→ 甚大规模(ULSI),最终可以在小硅片上实现"片上系统"(SoC)。

3. FPGA 的由来:通用、专用与可编程

从逻辑功能角度,数字集成电路分两类:

  • 通用型:如74 系列,逻辑功能简单且固定,通用性强;
  • 专用型(ASIC):为特定用途设计,如手机主控芯片(华为麒麟990):

图2.2.3 华为Mate 30 手机中的麒麟990 芯片

ASIC 在用量不大时设计和制造成本高、周期长。可编程逻辑器件(PLD)解决了这个矛盾:它作为通用器件生产,逻辑功能由用户编程设定,可以把一个数字系统"集成"到一片PLD 上。

1985 年,Xilinx 的Ross Freeman 制作了第一枚真正意义上的FPGA 芯片XC2064,采用4 输入1 输出的LUT 和FF 结合的基本逻辑单元;William Carter 发明了更高效的单元间连接方法。这两项发明(Freeman 专利和Carter 专利)是PLD 历史上最著名的两个专利。

PLD 家族的发展关系:

图2.2.4 PLD 的发展历程

  • SPLD(简单PLD):包括PLA、PAL、GAL。以PAL 为例,通过对输入端到与门之间的可编程阵列编程,产生所需的乘积项,再由或逻辑相加,实现不同的组合逻辑函数:

图2.2.5 PAL 器件的基本电路结构

  • CPLD(复杂PLD):相当于把多个PAL 用可编程互连阵列(PIA)连接起来,逻辑资源更丰富、布线更灵活:

图2.2.6 CPLD 结构示意图

  • FPGA:在PAL、GAL、CPLD 基础上进一步发展,但内部结构与CPLD 差异很大:

FPGA 与CPLD 的主要差别

对比项 FPGA CPLD
内部结构 查找表(LUT) 乘积项(PT)
资源类型 触发器资源丰富 组合逻辑资源丰富
特有资源 RAM、PLL、DSP 等 ——
运行速度
集成度
程序存储 内部SRAM,外挂EEPROM/FLASH 内部EEPROM/FLASH
应用场合 复杂算法 控制逻辑
能否加密 一般不能(可用加密核) 可加密

4. FPGA 的内部结构

FPGA 与CPLD 的差异源于内部结构。FPGA 基本结构由六部分组成:可编程输入/输出单元、基本可编程逻辑单元、底层嵌入功能单元、布线资源、嵌入式块RAM、内嵌专用硬核

图2.2.7 FPGA 内部结构

(这六部分的详细概念将在下一章展开。)

5. FPGA 产业现状

全球FPGA 市场长期被国外巨头主导:

图2.2.8 全球FPGA 市场占有率

  • Xilinx(赛灵思):市场份额约49%,业界老大,2022 年被AMD 以近500 亿美元收购;
  • Altera:份额约34%,2015 年被Intel 以167 亿美元收购;
  • Lattice(莱迪思):约7%,以低功耗著称;
  • Microsemi:约6%。

国内厂商主要有8 家:紫光同创、安路科技、高云半导体、上海复旦微电子、成都华微电子、智多晶、易灵思、京微齐力。其中紫光同创、安路科技、高云半导体曾被称为"国内FPGA 三架马车"。国产FPGA 在营收、专利数和技术上与国外巨头仍有差距,但差距正在快速缩小。

6. FPGA 的技术优势与不足

以单片机为参照:单片机能实现的功能,理论上FPGA 都能实现(前提是资源够大);但FPGA 能实现的(如1080P 图像实时处理),单片机未必做得到。单片机用得更广,是因为价格便宜、开发人员多——能用便宜方案时没必要用昂贵的FPGA。

图2.3.1 CPU、GPU、FPGA、ASIC 的吞吐量比较

FPGA 的四大技术优点

  1. 高性能:打破CPU 顺序执行思路,硬件并行处理;行为确定,没有CPU 的时间片、线程或资源冲突问题;
  2. 可重构性:可重新编程实现不同逻辑功能,远比ASIC 灵活,适合标准协议尚不成熟的场景;
  3. 上市时间快:编程后即可作为产品使用,无需ASIC 三个月至一年的流片周期;
  4. 实时性:可实时处理输入数据,适合自动驾驶、工业控制等低延迟应用。

FPGA 的缺点也要清楚:

  1. 开发门槛高:需要Verilog 硬件描述语言编程经验;
  2. 成本高:比单片机昂贵;
  3. 控制类任务实现代价高:如通过SCCB 接口配置OV5640 摄像头上百个寄存器,单片机轻松得多;
  4. 主频较低:布局布线性能不如专用ASIC,最高频率远不及ASIC 的几个GHz。

另外要注意一个常见误解:FPGA 例程的外设看起来和单片机差不多(如串口收发),但实现思路完全不同——FPGA 需要自己实现串口的完整协议,把串行数据转并行、按波特率逐位收发,而单片机只需配置寄存器。

7. FPGA 的应用领域

FPGA 像一张白纸/一堆积木,可以实现任何数字器件的功能,上至高性能CPU,下至简单逻辑门。主要应用领域包括:

  1. 通信领域(传统热点):基带处理(信道编解码、同步算法)、接口和连接(PCIe、以太网MAC、高速AD/DA)、RF 应用(调制解调、上下变频);
  2. 数字信号处理:高速并行处理能力远超DSP 串行架构,例如实现H.264 高清视频编码,TI 1GHz DSP 需要4 颗芯片,Altera 一颗FPGA 就能完成;
  3. 视频图像处理:实时流水线运算达到最高实时性,用于ISP(降噪、宽动态、去雾、3A)、视频处理(缩放、拼接、鱼眼矫正)、视频分析(检测、分类)等;
  4. 高速接口设计:成百上千个IO 加高速处理能力,各种接口逻辑都可在FPGA 内部实现,不必堆砌接口芯片;
  5. IC 验证领域:FPGA 原型验证速度接近真实芯片,帮助硬件和软件开发者在流片前完成验证;
  6. 人工智能领域:主要集中在边缘侧,如ADAS/自动驾驶检测、智能安防、无人机避障、医疗影像分析,甚至ChatGPT 的训练也离不开FPGA 的算力支持。

8. FPGA、CPU 和DSP 对比

三种经典器件各有分工:

  • CPU:基于指令流水线架构(取指→译码→执行),分为复杂指令集(CISC)和精简指令集(RISC)。常见形态包括单片机(8051、STM32)、通用CPU(Intel/AMD)、ARM Cortex-A 系列、RISC-V 等。擅长控制,事务管理能力强,可跑UI 和应用程序;
  • DSP:一种特殊的CPU,内部有专门的硬件乘法器和哈佛总线结构(程序与数据分开存储、可同时访问),擅长计算(加解密、调制解调等);
  • FPGA:用Verilog 编程,并行处理度高、可编程,擅长高带宽处理

图2.4.1 CPU、DSP 和FPGA 的区别

选型没有绝对的好坏,应根据功能需求具体分析,不要对某种器件抱有偏见。

初学者容易踩的坑

  1. 把"FPGA 可编程"和"CPU 上写程序"混为一谈:CPU 编程只是执行软件指令,改变不了硬件电路;FPGA 编程改变的是硬件电路本身的连接。
  2. 以为FPGA 比单片机"全面碾压":FPGA 贵、主频低、做寄存器配置类控制任务反而麻烦。能用单片机低成本实现的就不必上FPGA。
  3. 忽视FPGA 与CPLD 的区别:FPGA 用LUT 结构、触发器丰富、适合复杂算法;CPLD 用乘积项结构、组合逻辑丰富、适合控制逻辑,且可加密。
  4. 认为FPGA 例程"和单片机一样简单":外设相同,但FPGA 是从协议层面自己搭建电路实现,设计思路完全不同。
  5. 只关注FPGA 优点不看缺点:开发门槛、成本、主频上限都是选型时要考虑的现实因素。

小结 & 下一步

本章从FPGA 名字的三个关键词(现场、可编程、门阵列)入手,梳理了从分立器件到SoC 的数字集成电路发展史,介绍了PLD 家族(SPLD→CPLD→FPGA)的演进和FPGA 与CPLD 的结构差异,分析了FPGA 的六大内部组成部分、全球产业格局(Xilinx/AMD、Intel/Altera、Lattice 及国产厂商),总结了FPGA 高性能、可重构、上市快、实时性四大优点和高门槛、高成本、控制任务代价高、主频低四大缺点,最后对比了FPGA、CPU、DSP 三种器件的定位。

下一章将聚焦ZYNQ,看看当FPGA 与ARM 处理器结合成SoC 之后,会碰撞出怎样的火花。