硬件工程师必知必会的 Xilinx FPGA 知识
现场可编程门阵列(FPGA,Field Programmable Gate
Array)是一种高性能
、低延时
、可重构
,拥有高速并行运算
能力,并可定制性能与功耗
的可编程数字逻辑芯片,最早由
1984
年创立的赛灵思(Xilinx)公司推出,该公司由
Ross H. Freeman
和 Bernard V. Vonderschmitt
共同创办。不同于专用集成电路(ASIC,Application
Specific Integrated Circuit)固定的内部电路连接和逻辑功能。FPGA
的内部电路连接和逻辑功能,都可以通过编程来灵活的定义。
目前全球 FPGA 的市场份额主要集中在赛灵思(Xilinx,2020 年被 AMD 收购)和阿尔特拉(Altera,2015 年被 Intel 收购)两家美国企业手中,余下的市场份额同样由美国的莱迪思(Lattice)和美高森美(Microsemi)两家公司占据。国产 FPGA 芯片产业起步较晚,产品性能与专利积累较为薄弱,目前主要有 深圳紫光同创、上海安路科技、广东高云半导体、上海复旦微电子、西安智多晶、深圳易灵思、北京京微齐力、成都华微电子 等芯片研发厂商。
基本的数字逻辑门
门电路是数字集成电路当中,最为基本的逻辑单元,用于实现基本逻辑运算
与
、或
、非
,以及复合逻辑运算
与非
、或非
、异或
、同或
,对应的逻辑运算门电路有
与门
、或门
、非门
、与非门
、或非门
、异或门
、同或门
,其电路符号如下图所示:
AMD/Xilinx 产品线介绍
当前 AMD/Xilinx 的 FPGA 产品线,主要可以划分为 7 系列、UltraScale 系列、UltraScale+ 系列 三个大系列:
- 7 系列:采用
28nm
制程工艺,包含Spartan-7
、Artix-7
、Kintex-7
、Virtex-7
四个子系列; - UltraScale 系列:采用
20nm
制程工艺,包含Kintex UltraScale
、Virtex UltraScale
两个子系列; - UltraScale+ 系列:采用
16nm
制程工艺,包含Spartan UltraScale+
、Artix UltraScale+
、Kintex UltraScale+
、Virtex UltraScale+
子系列;
在上述三个大系列的基础之上,面向不同的应用场景,产品线被进一步划分为了 Spartan、Artix、Kintex、Virtex 四个子系列:
- Spartan 系列:低成本低功耗,面向消费电子和基础应用;
- Artix 系列:平衡成本与性能,适用于低功耗中等算力场景;
- Kintex 系列:高性能计算与通信,同时兼顾性价比;
- Virtex 系列:旗舰级高性能,用于最苛刻的应用;
AMD 公司目前力推的 MPSoC 多处理器片上系统(MPSoC,Multi-Processor System on Chip)是一款集成有多种异构处理核心的高性能片上系统:
- 应用处理器(APU):多核 64 位
ARM Cortex-A53
,可运行 Linux 操作系统,负责通用计算; - 实时处理器(RPU):双核
ARM Cortex-R5F
,用于处理实时任务; - 图形处理器(GPU):
ARM Mali-400MP2
用于处理显示输出任务; - 可编程逻辑(PL):
UltraScale+ FPGA
,用于实现硬件加速; - 视频编解码:用于支持
H.264/H.265
视频编解码;
Zynq UltraScale+ MPSoC 主要涵盖有 CG、EG、EV、RF 四个系列:
- CG 系列:入门级器件,主要集成有
双核 ARM Cortex-A53
和双核 ARM Cortex-R5F
; - EG 系列:资源较为丰富,主要集成有
四核 ARM Cortex-A53
、双核 ARM Cortex-R5F
、ARM Mali-400MP2
; - EV 系列:内置视频编解码器,主要集成有
四核 ARM Cortex-A53
、双核 ARM Cortex-R5F
、ARM Mali-400MP2
、H.264/H.265 视频编解码器
;
注意:除此之外,AMD 还提供了用于射频信号处理场景的 AMD Zynq UltraScale+ RFSoC 系列(广泛应用于 5G 通信、雷达、卫星通信等领域),以及运用于人工智能场景的 AMD Versal Adaptive SoC 系列芯片。
处理系统 PS / 可编程逻辑 PL
AMD/Xilinx 的 Zynq 系列 FPGA 芯片主要由 处理系统(PS,Processing System)和 可编程逻辑(PL,Programmable Logic)两个核心部分组成,下图展示了 XCZU5EG 的系统架构图:
- 处理系统(PS,Processing System):基于 ARM Cortex 架构,类似于传统的 CPU 中央处理器,可以直接运行嵌入式 Linux 操作系统;
- 可编程逻辑(PL,Programmable Logic):传统的 FPGA 可编程逻辑资源,支持硬件并行处理,可通过 Verilog 或者 VHDL 进行编程;
注意:PS 和 PL 之间通过 FPGA 片内的高级可扩展接口(AXI,Advanced eXtensible Interface)总线进行高速数据传输。
串行解串器 SerDes
FPGA 内置的串行解串器(SerDes,Serializer/Deserializer)用于进行串行数据与并行数据的相互转换:
- 当 FPGA 作为接收端的时候,用于将串行数据,转换为 FPGA 内部能够处理的并行数据。
- 当 FPGA 作为发送端的时候,用于将 FPGA 内部的并行数据,转换为便于传输的串行数据。
注意:现代 FPGA 通常集成了专用的 SerDes 外设,例如 AMD/Xilinx 的
GTX/GTH/GTY
收发器,以及 Intel/Altera 的Transceiver
收发器。
查找表 LUT
查找表(LUT,Look-Up Table)是现场可编程门阵列 FPGA 当中的基本逻辑单元,用于实现组合逻辑功能。
简单的来说,就是将某个简单逻辑功能的全部可能结果写到一个存储单元中,并根据输入的变化直接查找结果并输出。
MIO/EMIO 多路复用 IO
AMD/Xilinx FPGA 提供了多路复用(MIO,Multiplexed IO)和扩展多路复用(EMIO,Extended Multiplexed IO)两种 I/O 管理机制:
- MIO:由处理系统 PS 直接管理的物理引脚,无需经过 PL 可编程逻辑单元,可以控制 PS 的各种外设;
- EMIO:由处理系统 PS 通过 PL 可编程逻辑扩展的 I/O 接口,当 PS 的 MIO 数量不足时,可通过 PL 路由出更多的 EMIO(会引入额外延迟);
I/O Bank
FPGA 的器件管脚按照 Bank 进行划分,通过为每个 Bank
独立供电(通过接口电压 VCCO
进行配置),适配不同的信号电平标准,从而增强 I/O 设计的灵活性。每组用户
Bank 可以包括 52
个 HP 或者
HR 的 I/O 引脚,或者 24
组
HD 的 I/O 引脚(由 48 个差分引脚和 4
个单端引脚组成):
- 高性能(HP,High
Performance):应用于高速场景,工作电压通常在
1.0V ~ 1.8V
范围(电平的电压越低,通信速率就会越快); - 宽范围(HR,High
Range):应用于宽范围电压场景,可以支持
1.2V ~ 3.3V
的宽范围工作电压; - 高密度(HD,High Density):每个
Bank 通常由 24 个 I/O 构成,可以支持
1.2V ~ 3.3V
;
串行解串器 SerDes
FPGA 内置的串行解串器(SerDes,Serializer/Deserializer)用于进行串行数据与并行数据的相互转换:
- 当 FPGA 作为接收端的时候,用于将串行数据,转换为 FPGA 内部能够处理的并行数据。
- 当 FPGA 作为发送端的时候,用于将 FPGA 内部的并行数据,转换为便于传输的串行数据。
注意:现代 FPGA 通常集成了专用的 SerDes 外设,例如 AMD/Xilinx 的
GTx
收发器,以及 Intel/Altera 的Transceiver
收发器。
吉比特收发器 GTx
AMD/Xilinx 的 FPGA 产品当中集成的 SerDes
外设被称作吉比特收发器(GT,Gigabyte
Transceiver),基于不同的数据传输速率及其所具备的高级特性,规格书当中会分别以
GTx
格式进行命名,例如
GTP
、GTX
、GTH
、GTZ
、GTY
。对应于
AMD/Xilinx 的不同产品系列,GTx
的传输速率也会有所不同:
7 系列 | UltraScale 系列 | UltraScale+ 系列 |
---|---|---|
GTP = 6.6 Gb/s |
GTH = 16.3Gb/s |
GTH = 16.3Gb/s |
GTX = 12.5 Gb/s |
GTY = 30.5Gb/s |
GTY = 32.75Gb/s |
GTH = 13.1 Gb/s |
- | - |
GTZ = 28.05 Gb/s |
- | - |
赛灵思 FPGA 最小系统
插入损耗(IL,Insertion
Loss)是指由于元器件插入传输线路之前与之后,信号传输功率损耗的差值,通常使用单位分贝
dB
来进行表示。
下面的图片展示了 XCZU5EG 的系统架构框图:
硬件工程师必知必会的 Xilinx FPGA 知识