登录 | 注册 退出 投稿

FPGA深度观察(一)FPGA到底是什么?

牛喀网特邀专家 2022-08-08

内容提要:所谓FPGA,即"现场可编程门阵列"(Field Programmable Gate Array),一种开发者在短时间内利用个人电脑就可以在其上面实现自己想要的功能,而且可以多次重写的廉价设备。


近几年来,几乎没有电路设计工程师没听说过“FPGA”这个词。作为能够大幅提高生产性的可编程器件,逐渐被广为熟知,FPGA工程师也在急剧增加。如今,我们每天都在接触采用FPGA所制作出来的设备。

比如,在日常消费中,大家考虑购买的平板液晶等离子电视、硬盘录像机,FPGA就是安装在这些与音频/视觉相关的产品中。除此之外,FPGA还广泛应用于计算机、手机基站和通信基础设施相关的设备。 但是,FPGA到底是什么呢?它的便利到底体现在哪些方面呢?很少人可以准确的回答些问题。

所谓FPGA,即"现场可编程门阵列"(Field Programmable Gate Array)。

一种开发者在短时间内利用个人电脑就可以在其上面实现自己想要的功能,而且可以多次重写的廉价设备。事实上, FPGA已经得到了全球大多数用户的支持。在2005年时,在isuppli提供的调查报告中显示,ASIC和PLD (包含FPGA可编程产品) 的销售量排名中,世界前五名里有两个是FPGA供应商。在业界中,美国XILINX排名世界第一位,IBM排名世界第二位,美国Altera排名世界第四位。

FPGA的诞生背景

Xilinx首创了FPGA这一创新性的技术,并于1985年首次推出商业化产品“XC2000”。

当时的半导体器件以CMOS LSI为主流,相继出现了大规模的逻辑系统。“门阵列”是当时将逻辑系统LSI化的最简单方法。门阵列是指由半导体厂商准备出已经在硅片上形成了被称为基本单元的逻辑门的母板,通过按照用户希望的电路进行布线,在母板上形成电路的半客户定制品芯片。虽然是ASIC(Application Specific Integrated Circuit)中设计和开发的成本和周期最短的,但仍需要几个星期的开发时间。

另一方面,从PROM(Programmable Read Only Memory)派生出来的现场可编程器件PLA(Programmable Logic Array)得到广泛应用。PLA为一个逻辑器件,用户进行现场(应用领域)编程。PLA是以集成结构为特征的逻辑LSI,它能够通过与PROM程序相同的设备,写入连接信息。然后,EPROM和EEPROM之类的新设备相继出现,因为实用且容易使用而广受欢迎。然而,还是难以自由实现任意的大规模逻辑,它们都只能起到辅助作用。

在这样的背景下出现的XC2000系列,是PLA领域第一款兼容现场可编程性和门阵列设计自由度的FPGA器件。通过将用户设计的逻辑信息和布线信息加载到内置SRAM型存储单元结构的存储中,使回路按照设计作动。

在FPGA诞生的初期,计算机研究员是最先感受到FPGA的巨大优势的。在此之前,要想实现一个新计算机体架构的设计想法,必须要开发一个ASIC作为原型,在面板上安装很多个体积庞大的IC。但是,与这些需要投入巨大成本和精力的方式不同,一旦用户创建了具有多个FPGA的原型板,就可以立即运行您设计的新架构。而且,修正和更改规格也变得轻松简单。因此,许多新的架构应运而生因此,对可重构处理器的研究和对新FPGA架构的研究也开始蓬勃发展,在此之后,FPGA使用灵活,适用性强的特征在通信/图像处理领域也大获好评,并将其应用于路由器等通信网络的各种设备中。

与ASIC的概念截然相反,FPGA的概念是在短时间能以低成本让用户得到想要的逻辑,这一概念得到了用户的支持。然而,在FPGA发布初期,并没有获得业界人士的认同和支持。初期的FPGA实际集成度仅为门阵列的1/5,其原因是当时的设计工具无法充分利用器件特性进行设计。 如今,通过先进的半导体工艺技术,65/90nm这类的芯片提高了集成度,各种设计工具得到了发展,可以高集成度,高效率地进行设计。不过,我认为FPGA能够普及的最大原因是它的价格。FPGA器件本身的价格已经降到了所有人都能接受的价格范围内。

1.jpg

FPGA和ASIC的对比

关于FPGA的编程技术

2000年初,SRAM是当时主流的FPGA编程技术,除此之外还有各种其他类型的FPGA编程技

在20世纪80年代后期,出现了一种具有与SRAM型FPGA不同概念的技术,被称为“熔丝技术”(反熔丝技术)。在熔丝技术中,电路的连接点是熔丝,通过烧掉熔丝形成回路。反熔丝元件是一种只能编程一次的存储元件,一旦编程,它就会以低阻抗导通。据说它比SRAM器件更紧凑,可以实现高集成度、低阻抗的高速运行。熔丝技术(反熔丝技术)的弊端是不能重写,不能反复使用。此外,难以降低的价格也是其缺点。

与此同时,又一个新的器件“CPLD”(Complex PLD)发布了。这是一个通过将多个小型 PLD 集成到一个 LSI 中形成的可以实现任意大规模逻辑电路的PLD。与小规模PLD一样,非易失性和可重写的易用性是CPLD的最大特点。但是,CPLD在设计自由度方面不如FPGA高。

在1990年代,出现了使用Flash memory的“FLASH型FPGA”。Flash型FPGA同时具备了SRAM技术和反熔丝技术的两大有点,即可重写和非易失性。但是,由于其构造和制造工序复杂,难以提高集成度和降低价格。因此,Flash基本没有被用在大规模、高速运行的FPGA中。

2.jpg

FPGA和PLD的架构

基于SRAM的FPGA和CPLD是目前的主流工艺,高速和大规模的应用使用基于SRAM的FPGA,对不需要高速和规模的应用容易上手的CPLD是最合适的。无论哪种,都有制造简单和价格便宜的优点。

3.jpg

FPGA和PLD的放置

FPGA的工作原理

那么,从现在开始我们来具体说明FPGA的工作原理。第一个话题是关于构成逻辑电路的基础—程序。FPGA的程序到底在哪儿呢?对于SRAM型,程序被记录在 FPGA 的闪存或 EEPROM 等外部储存器中。

当SRAM型FPGA上电时,程序文件从外部储存中载入。这里被加载的程序文件称为“Bit Stream Data(比特流数据)”。 这些信息被加载到配置存储器中,该存储器由FPGA中的SRAM型存储器单元组成。被加载的比特流数据的各个bit,成为了在FPGA上实现用户所需要的回路的信息源,它把FPGA设备上的资源进行客户化,从而实现要求的回路。这与PC等CPU的启动过程非常相似。它不依赖于硬件,而是通过连接在外部储存器内的配置数据实现,有很高的普遍性和灵活性。

第二个话题是关于FPGA内部结构的说明。FPGA可分为6大部分(如图3),分别为:

·I/O:可编程输入/输出单元(I/O单元)

·内部布线:丰富的布线资源

·逻辑单元:可配置逻辑块(CLB)

·时钟网络:数字时钟管理模块(DCM)

·JTAG边界扫描电路

·块RAM・乘法器:嵌入式块RAM

4.jpg

图3

首先,我们针对FPGA的特征“逻辑单元”进行说明(图4)。 FPGA逻辑单元通常由两个4或6输入的“表”(Look Up Table:LUT)和“触发器”(Flip Flop)组成。

6.jpg

图4

一旦SRAM的地址部分有信号输入,就会在LUT中查找对应地址的数据并输出。

图4展示了AND的使用场景。地址全为1的地方,对应写入high(1)的数据,否则全写入low(0)。因此,当输入全部是“1”时,输出始终是“1”。然后触发器再与系统时间同步,输出数据。逻辑单元分布在整个FPGA上,通过内部布线的连接,实现用户期望的功能。

“I/O”主要位于FPGA与外界电路接口的位置,与外部的信号进行信号交换。如今,有超过20种电压等级和规格的I/O可供开发者灵活使用,能自由地实现电路板上的布线。

“内部布线”是通过逻辑单元和I/O单元等的连接,来实现用户的功能。

时钟网络是用于配置FPGA内部时钟的资源。可提供整个FPGA上的全局时钟和本地使用的局部时钟,能在不同的位置实现最佳的电路动作。特别是对于同步电路的设计是必不可少的。

“JTAG边界扫描电路”是为了测试而提供的功能。

“块RAM・乘法器“是用于实现逻辑的资源。如图3所示,FPGA通过在电路内提供均分的块RAM,用户可以不受FPGA内电路的位置限制,进行运算处理和数据保持。

另外,逻辑单元内的查询表不仅可以用作逻辑的实现,还可以当做小型存储器使用(4输入的LUT是16位存储器)。因此,在块RAM之外,可以增加局部存储。在这种情况下,将LUT被称为“分布式存储”。

将以上6种资源组合在一个硅片上,几乎可以在FPGA内不受限制的实现用户所需要的大部分功能。

FPGA的设计流程

这一部分,我们来说明一下FPGA的设计流程。

首先是设计环境。一般设计环境由供应商和第三方提供。主要包括逻辑生成和布线工具两种。

目前,FPGA的逻辑设计绝大多数采用HDL(Hardware Description Language)或Verilog HDL等硬件描述语言设计。 所以在早期,硬件和软件处理在文档设计阶段就是分开的,硬件用HDL,软件用C语言等。

然而,随着处理器和DSP等功能在FPGA内实现成为可能,能够与软件相兼容的硬件设计变得十分必要。在使用统一的语言(比如C语言)进行软硬件的设计之后,合适的任务分解工具(Co Design)变得越发重要,因此软硬件供应商开始协作起来,提供系统级开发环境工具。

5.jpg

图5

图5为FPGA设计流程。 首先,用HDL之类的语言开始做设计输入,然后使用逻辑综合工具执行设计综合,这个阶段要使用仿真工具进行设计验证

设计综合完成后,将进行设计实施。就是在FPGA内嵌入逻辑电路的具体操作。包括各种功能在逻辑单元上如何实现最有效率(最优)、在FPGA内如何进行配置和布线等,这个阶段决定了FPGA内部的具体配置。

对于高速作动的电路,在这个节点要进行静态时序分析和时序仿真,验证其是否在预期的时间内作动。特别是当作动频率接近极限时,连接逻辑单元之间的布线会导致延迟,因此检查确认是必须的。如果事先知道影响时间的关键点,则可以先在工具上施加约束。

一旦验证了设计在工具上能正常按照要求作动,就可以生成一个编程所需的比特流文件,下载到 FPGA中。也就是使用JTAG之类的下载方式,将比特流文件写入系统的外部储存设备中。

最后是实物测试,由于实际系统是在FPGA和外围电路以及设备交互运行的,因此实物验证和回路验证都是必不可少的。

FPGA产业的最新趋势

自从FPGA问世以来,除了逻辑系统外,其应用领域也在扩大已经愈加广泛。因为伴随半导体工艺技术的进步,FPGA器件的设计技术取得了飞跃发展及突破。很多以前的外围器件逐渐在FPGA上集成进来。

FPGA有“低成本“”周期短“”可重写“的优势,使得其已经被许多领域和用户所使用。包括机器学习,高性能计算,数据分析等,FPGA在更多样化的应用领域中崭露头角。这与FPGA上嵌入了越来越多可用的on-chip存储器密不可分,这些都是FPGA制造商和潜在终端用户所期待的。

FPGA是可以容许挑战的设备,如果你还没有尝试过 FPGA,不妨试一试。 而ASIC是不容许失败的,因为其NRE成本很高。即使ASIC在NRE方面妥协了, 也必须要制作可靠的电路。 但 FPGA不同,其NRE为0,方便重新设计,有助于工程师的成长。

或许,这是一个属于FPGA的黄金时代!




作者:牛喀网特邀专家
牛喀网文章,未经授权不得转载!


下一篇: FPGA深度观察 (二)ASIC与FPGA谁将引领智能时代?
上一篇: 自动驾驶车如何避免交通伤亡意外?传感器融合技术给你答案!
相关文章
返回顶部小火箭