FPGA是在
可编程阵列逻辑(PAL)、
通用阵列逻辑(GAL)、可擦除可编程逻辑器件(EPLD)等器件的基础上进一步发展的产物。它是一种可完成通用功能的可编程逻辑芯片,即可以对其进行编程实现某种逻辑处理功能。
发展历程
FPGA的发展历程大致分为三个阶段,发明阶段、扩张阶段、累积阶段。
发明阶段
FPGA的发明阶段横跨20世纪80年代至90年代。当时的芯片无晶圆模式尚未兴起,ASIC公司只有在客户的设计投入生产时才能赚钱。然而,由于开发过程中需求变化、流片失败,或者存在无法通过固件升级进行修复的设计漏洞等原因,往往只有1/3的芯片设计实际投入生产。由于芯片的流片成本巨大,业界急需一种通用的半导体器件,用来进行流片前的测试、验证等工作,从而减少流片失败的可能性。在这个大环境下,可编程逻辑器件应运而生,而这也是FPGA的前身。
1980年,Xilinx 公司成立,由 Ross Freeman 等人发明了第一款商用 FPGA XC2064。
扩张阶段
FPGA在1992年到1999年之间迎来了自己的扩张阶段。对于FPGA来说,提升自身的容量成为自然而然的选择。随着容量的上涨,芯片面积也逐渐变大,为FPGA的架构创新提供了更多的想象空间。同时,FPGA片上资源的互连复杂性开始取代逻辑结构的复杂性,成为FPGA厂商需要优先解决的问题。在扩张阶段发生的另一个主要变化为FPGA自动设计工具和软件的兴起。由于FPGA结构变得越来越复杂,出现了针对FPGA进行优化设计的自动综合、布局和布线的EDA工具,使用这些工具进行FPGA设计,也逐渐成为了FPGA开发的主流方法。
累积阶段
进入21世纪,FPGA的发展进入了累积阶段。FPGA的发展此时遭遇了瓶颈,开始从单纯的可编程门阵列,逐步转变为拥有复杂功能的可编程片上系统。与此同时,很多专用的逻辑单元也被添加到FPGA器件中,并逐渐成为现代FPGA的“标配”。随着人工智能的兴起,AI引擎、可变精度的DSP等针对AI应用开发的IP核也被固化到FPGA中。现代FPGA已经成为了各类全新科技的集大成者,而这也会反过来促使FPGA在更多应用场景里被使用。
基本原理
FPGA采用一种基于门阵列的结构,每一个芯片由二维的逻辑块构成,每一个逻辑块有水平和垂直的布线通道连接。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPPROM编程FPGA;外设模式将FPGA作为微处理器的外设,由微处理器对其编程。当器件加电时,FPGA芯片将 EEPROM中的数据读入片内编程RAM中。配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失。因此,FPGA能够反复使用。FPGA的编程无需专用的FPGA编程器,只需通用的EEPROM、PROM编程器即可。同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
FPGA中的所有信号可以分为时钟、控制信号和数据三种。简单的时钟信号用于控制所有的边缘敏感触发器,不受任何其他信号的限制。控制信号,如“允许”和“复位”,用于电路元件初始化,使之保持在当前状态,在几个输入信号间做出选择或使信号通到另外的输出端。数据信号中含有数据,它可以是一些单独的比特,也可以是总线中的并行数据。
在FPGA的设计中,可将所有的设计元素抽象成五类用于组成分层结构设计的基本单元:
在设计中只要明确定义所用基本单元类别就可以避免所谓的“无结构的逻辑设计”,在较短的设计时间内得到清晰的、结构完善的FPGA设计。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
结构
逻辑块
从构成FPGA的可编程逻辑块和可编程互联资源来看,主要分为查找表型,多路开关型,多级与或FPGA结构型。
可编程内部连线
可编程内部连线资源连通FPGA内部所有单元,连线的长度和工艺决定信号的驱动能力和传输速度。连线资源的划分如下:全局性专用连线资源用于完成器件内部的全局时钟和全局复位/置位布线,长线资源用于完成一些高速信号和第二全局时钟信号的布线,短线资源用于完成基本逻辑单元之间的布线。
内嵌专用内核
内嵌专用硬核是指高端应用的可编程逻辑器件内部嵌入的专用硬核。相对底层嵌入的软核而言,指的是FPGA处理能力强大的硬核,等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如,为了提高FPGA的乘法速度,主流的FPGA中集成了专用乘法器;为了使用通信总线与接口标准,高端的FPGA内部集成了串并收发器,可以达到数十Gbi/s的收发速度。
大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容可寻址存储器(CAM)以及FIFO等常用存储结构。内容可寻址存储器在其内部的每个存储单元都有一个比较逻辑,CAM中的数据会和内部的每个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM/ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。
可编程输入输出单元I/O单元
I/O单元是芯片与外界电路的接口部分,可完成不同电气特性下对输入输出信号的驱东和匹配深度,通过改变上拉、下拉电阻,可以调整驱动电流的大小。目前,I/O端口的速率已提升得较高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbit/s的数据速率。
数字始终管理系统DCM
1)可实现零时钟偏移,消除时钟分配延迟,并实现时钟闭环控制。
2)时钟可以映射到PCB上用于同步外部芯片,这样减少了对外部芯片的要求,而将芯片内外的时钟控制一体化,以便于系统设计。
分类
按逻辑功能块的大小分
目前 FPGA 的逻辑功能块在规模和实现逻辑功能的能力上存在很大差别:有的逻辑功能块规模十分小,仅含有能实现倒相器的两个晶体管;而有的逻辑功能块规模比较大,可以实现任何五输入逻辑函数的查找表结构。据此可把FPGA分为两大类,即细粒度和粗粒度。 细粒度逻辑块与半定制门阵列的基本单元相同,它由使用可编程互连来连接的少数品体管组成,规模都较小,主要优点是可用的功能块被完全利用;缺点是通常需要大量的连线和可编程开关,相对速度较慢。由于近年来工艺不断改进,芯片集成度不断提高,硬件描述语言(HDL)的设计方法得到了广泛应用,不少厂家开发出了具有更高集成度的细粒度结构的FPGA。例如,Xilinx公司采用Micro Via技术的一次编程反熔丝结构的 XC8100系列,它的逻辑功能块规模较小。
按互连结构分
根据FPGA内部的连线结构不同,可将其分为分段互连型和连续互连型两类。分段互连型 FPGA中有多种不同长度的金属线,各金属线段之间通过开关矩阵或反熔丝编程连接。这种连线结构走线灵活,但会出现走线延时的问题。连续互连型FPGA利用相同长度的金属线(通常是贯穿于整个芯片的长线)来实现逻辑功能块之间的互连,连接与距离远近无关。在这种连线结构中,不同位置逻辑单元的连接线是确定的,因而布线延时是固定和可预测的。
按编程特性分
根据采用的开关元件的不同,FPGA可分为一次编程型和可重复编程型两类。一次编程型FPGA采用反熔丝开关元件,其工艺技术决定了这种器件具有体积小、集成度高、寄生电容小及可获得较高的速度等优点。此外,它还有可加密位、抗辐射抗干扰、不需外接PROM 或EPROM等优点。然而,一次编程型FPGA只能进行一次编程,一旦将设计数据写入芯片后,就不能再修改设计。因此,比较适合于定型产品及大批量应用。 可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件。在FPGA芯片中,每个逻辑块的功能以及它们之间的互连模式 由存储在芯片中的SRAM或快闪EPROM中的数据决定。SRAM型开关的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。采用快闪EPROM控制开关的 FPGA具有非易失性和可重复编程的双重优点,但在再编程的灵活性上较SRAM型FPGA差一些,不能实现动态重构。此外,其静态功耗比反熔丝型及SRAM型的FPGA高。
优缺点
优点
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其他全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和IVO引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容
(6)现代FPGA集成了大量的逻辑单元和高速连接,可以实现复杂的算法和任务,提供优异的性能。
缺点
FPGA的缺点如下:
(1)FPGA的所有功能均依靠硬件实现,无法实现分支条件跳转等操作。
(2)FPGA只能实现定点运算。
总结:FPGA依靠硬件来实现所有的功能,速度上可以和专用芯片相比,但设计的灵活度与通用处理器相比有很大的差距。
开发工具和环境
FPGA(Field-Programmable Gate Array)的开发工具与环境是帮助设计人员进行 FPGA 设计、验证和调试的关键工具。
HDL
HDL(硬件描述语言)是FPGA设计的基础,常用的HDL包括Verilog和 VHDL。设计人员使用HDL 来描述硬件功能、时序关系和数据流,以及与外部设备的接口。
综合工具
综合工具将HDL描述转换为FPGA可配置逻辑单元(如查找表、寄存器等)的结构。常见的综合工具包括 Xilinx 的 Vivado 和Altera(现已被 Intel 收购)的QuartusPrime。
时序分析工具
时序分析工具用于评估 FPGA设计的时序特性,包括时钟频率、时序约束等。这有助于确保设计满足时序要求,避免时序问题和时钟域冲突。
布线工具
布局布线工具负责将逻辑综合后的设计映射到 FPGA芯片的物理资源上,并确定信号的路径。这一过程涉及到逻辑单元的放置(Placement)和相互连接的布线(Routing)。
FPGA开发板和FPGA开发套件
FPGA 开发板是用于验证和调试 FPGA 设计的硬件平台,通常包括 FPGA 芯片、外围器件(如存储器、传感器)、通信接口(如 USB、Ethernet)等。
FPGA开发套件则是一套配套的软件和硬件工具,用于与 FPGA 开发板配合使用,提供开发、调试和测试的全套环境。常见的 FPGA 开发套件包括 Xilinx 的 Zynq 开发套件和Altera 的 Cyclone 开发套件。
仿真工具
仿真工具用于在计算机上模拟FPGA设计的行为,并进行功能验证和调试。仿真工具还可以帮助设计人员在编写HDL代码时验证设计的正确性和功能。
硬件调试工具
FPGA开发过程中需要进行实时的调试和硬件验证。这包括硬件调试工具(如 Xilinx 的 Integrated Logic Analyzer)和信号探测器,用于捕获和分析设计中的信号和状态。
综上所述,FPGA的开发工具与环境涵盖了从设计到验证的整个开发流程,包括硬件描述语言、综合、布局布线、仿真、调试等多个方面。这些工具和环境的有效使用可以帮助设计人员更快地完成 FPGA 设计,并确保设计的正确性和性能。
应用与产品
视频分割系统
近年来,大型的总控系统得到了日益广泛的应用,与之相关的视频分割技术水平也在逐步提高,该技术是把用多屏拼接显示的方式来显示一路视频信号,在一些需要使用大屏幕显示的场景应用广泛。 随着技术水平的进步,视频分割技术逐步成熟,满足了人们对于清晰视频图像的基本需求、FPGA芯片硬件结构比较特殊,可以利用事先编辑的逻辑结构文件调整内部结构,利用约束的文件来调整不同逻辑单元的连接和位置,妥善处理好数据线路径,其自身具有的灵活性和适应性方便用户的开发和应用。在处理视频信号时,FPGA芯片可以充分利用自身的速度和结构优势,实现乒乓技术和流水线技术。在对外连接的过程中,芯片采用数据并行连接的方式,使图像信息的位宽拓宽,并利用内部的逻辑功能提高图像处理的速度。通过高速缓存结构以及时钟管理实现对图像处理以及其他设备的控制。在整体的设计结构中,FPGA芯片处于核心位置,负责复杂数据的插值处理、提取和存储,还起到总体控制的作用,保证系统的稳定运行。另外,视频信息处理与其他数据处理不同,需要芯片具有特殊的逻辑单元以及RAM或者FIFO单元,保证提高足够的数据传输速度。
数据延迟器和存储设计
FPGA具有可编程的延迟数字单元,在通信系统和各类电子设备中有着比较广泛的应用,如同步通信系统、时间数值化系统等,主要的设计方法包括数控延迟线法、存储器法、计数器法等。其中存储器法主要是利用 FPGA的RAM或者FIFO实现。 利用 FPGA 对SD卡相关数据进行读写可以依据具体算法的需求在FPGA芯片开展编程,并根据实际情况的变化实现读写操作的不断更新。这种模式之下只需要利用原有芯片便可以实现对SD卡的有效控制,降低系统成本。
通信行业
通常情况下,通信行业综合考虑成本以及运营等各方面的因素,在终端设备数量比较多的位置,FPGA的用量比较大。基站最适合使用FPGA,基站几乎每一块板子都需要使用FPGA芯片,而且型号比较高端,可以处理复杂的物理协议,实现逻辑控制。同时,由于基站的逻辑链路层,物理层的协议部分需要定期更新,也比较适合采用FPGA技术。目前,FPGA主要在通信行业的建设初期和中期应用,后期逐步被ASIC替代。
其它应用
FPGA在安防,工业等领域也有着比较广泛的应用,比如安防领域的视频编码解码协议在前端数据采集和逻辑控制的过程中可以利用FPGA处理。工业领域主要采用规模较小的FPGA,满足灵活性的需求。另外,由于 FPGA具有比较高的可靠性,因此在军工以及航天领域也有比较广泛的应用。未来,随着技术的不断完善,相关工艺将会完成升级改造,在诸多新型行业如大数据,FPGA将会有更为广泛的应用前景。伴随5G网络的建设,初期会大量应用FPGA,人工智能等新型的领域也会更多的用到FPGA。 2021年2月,先购买再设计的FPGA(现场可编程门阵列)被称为“万能芯片”。国内最早自主研发、规模生产、批量销售通用FPGA芯片的企业之一京微齐力公司敲定,将在亦庄投资3亿元建设新一代国产FPGA芯片研发与产业化项目。
产品
FPGA技术是由多家知名的半导体公司提供的。以下是几家主要 FPGA 厂商以及其代表性产品:
Xilinx(赛灵思):
Xilinx 是 FPGA 领域的领导者之一,提供了多款知名的 FPGA 产品系列。
代表性产品:
1.Virtex 系列:Virtex UltraScale+、Virtex-7 等,提供了高性能和高集成度,适用于复杂的计算和信号处理任务。
2.Kintex 系列:Kintex UltraScale+、Kintex-7 等,在性能和成本之间取得了平衡,适用于中等规模的应用。
3.Spartan 系列:Spartan-7、Spartan-6 等,定位于低成本、低功耗的应用,适合于学习、嵌入式系统等领域。
Intel(英特尔):
Intel(以前是Altera 公司)是另一家重要的 FPGA 厂商,提供了多款先进的 FPGA 产品。
代表性产品:
1.Stratix系列:Stratix10、Stratix V 等。Stratix 系列是 Intel FPGA 中性能最强大的产品线,适用于高性能计算、通信、数据中心等领域。
2.Arria系列:Arria10、Arria V 等。Arria 系列提供了高性能和低功耗的解决方案,适用于通信、图像处理等应用。
3.Cyclone系列:Cyclone10、Cyclone V 等。Cyclone 系列产品定位于低成本、低功耗的应用,适合于嵌入式系统、学习等领域。