初识 FPGA 


电路板 和 FPGA 芯片

现代电子设备,由一块或多块电路板构成,电路板则由焊接在带有金属导线的塑料基板上的集成电路芯片 和接口连接器构成。 下图是一块以FPGA芯片为核心器件的网络处理卡, 这种插卡通常安装在服务器主板上,用来加速服务器的数据处理能力。网卡电路板通过 PCIe接口和网络接口与外界交换数据,在核心FPGA芯片的外围,还有用于缓冲 数据的存储器电路模组和用于进行接口信号转换的网络接口芯片。(图片来源:Terasic)



FPGA 网络处理卡(Terasic DE4)

仔细观察图片中的FPGA芯片,会发现看不到芯片的管脚,这是因为高密度芯片 通常使用BGA(球状栅格阵列)封装,芯片的管脚分布于其底部,被热风回流焊熔接在电路板的焊盘上,下图是一个BGA封装的芯片。(图片来源:RS Components )



BGA封装芯片

FPGA 和下载电缆

FPGA是一种现场可编程的数字电路门阵列,即用户可以使用下载电缆连接计算机端口(通常是USB)和FPGA电路板的JTAG调试端口, 从而将新编译好的烧录文件下载到FPGA的启动代码固化存储器中,进而更新FPGA的应用功能。 下图是一个 Altera FPGA 及其配套的USB-Blaster 下载器(图片来源:微雪电子)


Altera FPGA 开发板 和 USB Blaster 下载电缆

有些 FPGA开发板 会把 USB下载电路做在开发板上,如下图所示的 Altera Terasic DE0 开发板, 该开发板自带USB Blaster 下载电路, 用户只需把USB电缆连接在其上,便可以使用PC机上的开发软件 对其下载用户电路代码。(图片来源:Terasic)


Altera Terasic 开发板 自带 USB Blaster 下载电缆

FPGA 能做什么

相对于支持C语言编程的嵌入式处理器而言, FPGA这种可编程的数字电路 其优势是 能够实现更高的并行处理速度, 但是 这种优势是以更底层(RTL 寄存器传输层) 的开发方式作为代价的。 近年来,高层次电路建模的方式开始 逐步出现, 例如 Altera 公司的 OpenCL 和 Xilinx 公司的 HLS , 这些方法可以使用类似 C 语言的 编程模型 进行 电路的设计开发。

目前 FPGA 常用的领域如下:

接口转换

现代手持设备中会存在大量的传感器, 嵌入式中央处理器对各类传感器繁多的接口格式很难全面顾及, 此时需要使用一颗 低成本、低功耗的FPGA 芯片把各类传感器连接起来,将数据汇总至中央处理器。

例如, Lattice 公司出品的ICE5LP4K 低功耗 FPGA 被 苹果公司选中作为其IPhone 7 系列手机中的“传感器交换机”芯片。 下图是 Lattice 公司的 一款 用于手持终端系列的 FPGA开发板(图片来源:Lattice)。


Lattice 公司 iCE40 Ultra 系列 开发板, 图中的黄色方框内是FPGA芯片

自动控制

自动控制是电子学领域中一个历史悠久的技术分支,早期的自动控制非常简单,例如一个恒温电热器,其 仅需要一个输入的模拟量(温度) 和 一个输出的开关控制量(是否加热)。

现代的自动控制通常需要输入大量的传感器参数和输出大量的控制参数,这方面的应用领域中以机器人动力学自动控制领域 最为复杂, 一般来说,现代的智能机械系统通常会装备图像传感器用于识别目标;红外/超声测距传感器; 三轴加速度传感器用于测定姿态与速度,同时此类系统也会装有多个可以调速的电机用于进行复杂姿态调整。

因此,对于现代机器人而言,大量的传感器输入数据和输出的伺服电机控制量构成了非常多的控制环路, 这使得传统的基于处理器的控制系统难以适应现代机器人系统控制环路的计算能力需求, FPGA器件因其擅长并行处理的 特性,使之在现代机器人系统中脱颖而出。

下图是来自东京大学的Phenox四轴飞行器的外观和电路板图,该系统采用了一颗集成ARM CortexA9 双核ARM的 Xilinx Zynq系列FPGA 芯片 作为处理核心。(图片来源:PhenoxLab)


Phenox2 外观图

Phenox2 控制板


下图是Altera Terasic 公司的多足机器爬虫平台,该平台同样使用了一颗 集成ARM CortexA9 双核ARM的Altera Cyclone V SE FPGA芯片 作为处理核心(图片来源:Terasic)。



Terasic 机器爬虫

NASA (美国航天局)的 Robonaut 2 可以称得上是仿生机器人领域的巅峰作品之一,该机器人用于国际空间站和外太空星球 科考, 以该机器人的手臂为例, 根据文献 “ The Robonaut 2 hand - designed to do work with tools - IEEE International Conference on Robotics and Automation · May 2012 ” 记载,Robonaut 2 的机械手臂上集成了大量的用于力量反馈和运动姿态测定的传感器以及用于控制手部运动和力量的伺服电机, 该手臂的处理核心采用了一颗 Actel 公司出品的防宇宙粒子射线辐射的 ProAsic3 系列 FPGA 芯片。下图是 robonaut2 机械人的整体图和手臂结构图(图片来源:NASA)。


Robonaut2 整体图

Robonaut2 手臂结构图

图像处理

随着机器视觉和人工智能技术的发展, 图像处理技术得到了非常广泛的应用, 例如分析血液细胞的显微照片或是识别药品生产线上的残缺药片, 以及更加智能的应用领域诸如汽车的自动辅助驾驶等。

在图像处理领域中, 由像素点阵构成的原始图像数据量巨大, 这使得 擅长并行 数据处理的 FPGA 芯片 具有了用武之地。

下图是 NI 公司 推出的一款组合式图像处理系统, 该系统以拼接插卡的方式, 在系统中集成了处理器、接口控制器 以及 FPGA 处理单元。

FPGA用作高速图像的输入接口控制以及为CPU上运行的智能图像算法进行预处理, 此类预处理算法的典型特征为算法复杂度较较低、但是运算强度较大, 例如把整帧的图像像素数据 从 RGB 格式 转换为 亮度-色差 格式就是 一个典型的高运算强度预处理算法。(图片来源:NI)。


NI 公司图像处理系统整体图

NI 公司图像处理系统结构图

NI 公司图像处理FPGA板卡

人工智能技术的进步和FPGA处理能力的攀升使得基于FPGA的图像处理系统可以胜任一些更为复杂的 图像处理任务,例如,下图是 Xylon 公司出品的 汽车驾驶辅助系统(ADAS) 平台 “logiADAK” 。 基于该平台以及该公司的“Logic Bricks”系列 IP 模块,可以实现路面特征目标识别以及驾驶员的疲劳驾驶识别(图片来源:Xylon)。


LogiADAK 平台

路面特征目标识别

驾驶员疲劳识别

通信与信号处理

集成电路制造工艺的飞速发展,使得数据转换器件(ADC、DAC)的采样速率突飞猛进, 由此带来无线电信号的数字化带宽相应增长, 随之而来的是更高速率采样数据的传输接口和与之相应增长的高速数据样值的处理需求, FPGA因其灵活的接口能力和高并发的计算能力使得其成为高速数据转换器件接口方案的不二之选。

为了保持应对不同系统需求的灵活性, 雷达信号处理与无线通信系统通常设计成基于某种背板数据交换协议(例如VPX或ATCA)的 插卡式机箱结构,此类结构中,FPGA常用于和高速数据转换器件进行接口及数字中频信号处理。

下图是 Spectrum Signal Processing 公司 出品的 VPX结构的无线电处理系统及其相应的结构框图(图片来源:Spectrum Signal Processing)。


VPX结构无线电处理平台外观图

VPX结构无线电处理平台系统框图

此类处理平台由若干块板卡拼接构成, 其中RF模块负责将射频信号转换至模拟中频信号; 数据转换(ADC、DAC)模块负责在数字信号和模拟中频信号进行转换; 数字中频模块负责将数字中频信号和数字基地信号之间进行转换; 基地处理单元负责对基带信号进行相应处理,另外系统中还可能会存在一个通用处理器用于对各个板卡进行配置管理 以及和本设备的上位机之间进行数据交互和通讯协议处理。

下图是 Spectrum Signal Processing 公司 出品的 XMC接口的高速DAC子卡及其结构框图, 此类子卡通常被插在VPX或其他类型的载卡上用于实现载卡的特定功能


XMC接口的DAC子卡外观图

XMC接口的DAC子卡结构图

云计算与数据中心

人类进入移动互联网时代之后, 便携式终端每天产生出海量的多媒体数据, 对于互联网数据中心而言, 通过对用户的习惯行为、日常喜好所产生的数据进行分析, 可能会发掘出丰富的商业价值。 然而, 这种商业价值的发掘需要以强大的数据分析和处理能力作为前提和保障。

传统的数据中心的计算能力来自于拥有庞大数量计算机的服务器集群, 集群中的计算机通常以多核X86CPU作为其处理核心。 基于X86 处理器的服务器集群所面临的最严峻问题是来自功耗和散热的挑战, 庞大的计算集群需要消耗非常可观的电能用于计算以及为其制冷。 由此, 可以进行通用编程的GPU显卡 进入了互联网服务商的视线, 通过使用GPU作为算法加速器, 数据中心可以有效提升单位能耗的计算效率。 然而, 在追求更低功耗的道路上, FPGA 无疑是一种有效的选择, 微软公司 对外公布其搜索引擎bing采用了FPGA芯片作为加速核心。下图是微软公司早期采用 的一款FPGA加速板卡(图片来源:Microsoft)。


微软公司bing搜索引擎早期的加速板卡

在后续的设计中,为了进一步的提高计算密度、微软公司采用了更加小型化的设计, 将FPGA加速器和通用处理器 集成在一个主板上,下图是改进后的微软数据中心服务器硬件照片以及在数据中心进行服务器部署的场景照片(图片来源:Microsoft)。



微软数据中心服务器硬件照片


微软公司数据中心服务器部署场景照片

除了微软公司之外, 中国的云服务器供应商, 阿里公司 和 腾讯公司 也开始提供带有 FPGA 加速功能的 虚拟云平台, 用户可以根据自己的应用情况, 租用 FPGA 云 服务器 平台, 分别对 云平台上的 通用处理器和FPGA加速单元进行编程开发。 另外, 美国亚马逊公司也提供类似的FPGA 云服务器 租赁业务。

2017年, 谷歌公司宣布 其人工智能加速引擎 TPU(Tensor Processing Unit), 选择了ASIC(专用集成电路)方案, 该加速引擎进一步的刷新了当前已知的能耗/计算效能 比的世界纪录。

人类在追求单位能耗计算效率的道路上永无止境, 无论我们在数字技术的路上走的多远, 请记得 TI公司的(杰克.基尔比)Jack Kilby 和他发明的世界上首个集成电路,因为这是一切故事的源头。(图片来源:Texas Instrument)



杰克.基尔比(德州仪器供图)


首个集成电路(德州仪器供图)