微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > PCB设计问答 > PCB设计学习讨论 > 转载:问FPGA为何物,直教好多人摸不着头脑!

转载:问FPGA为何物,直教好多人摸不着头脑!

时间:10-02 整理:3721RD 点击:

提到FPGA,很多人都会觉得很神秘,也确实让很多人摸不着头脑,不过也确实是有很多人认为,学好了FPGA就等于有了好工作,当然,学好FPGA对于电子行业的朋友还是很有必要的。但今天我们不谈有关势利的事情,我们只探讨技术,研究科学。FPGA是Field-Programmable Gate Array的缩写,翻译过来就是“现场可编程门阵列”,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。不要觉得头大,只要你静下心来想一想,FPGA也就变得不再那么神秘了!读到这里,我们只需要知道,FPGA是一款可编程器件就可以了,我们继续往下聊!


要想进一步了解有关FPGA的事情,我们不妨首先来了解一下FPGA出现的历史进程和背景:


历史进程和背景


在上世纪80年代中期,可编程器件从任何意义上来讲都不是当时的主流,虽然其并不是一个新的概念,因为可编程逻辑阵列(PLA)在1970年左右就出现了,但是一直被认为速度慢,难以使用。1980年之后,可配置可编程逻辑阵列(PLA)开始出现,可以使用原始的软件工具提供有限的触发器和查找表实现能力。PAL被视为小规模/中等规模集成胶合逻辑的替代选择被逐步接受,但是当时可编程能力对于大多数人来说仍然是陌生和具有风险的。


早在1985年,全球首款FPGA产品 - XC2064诞生,Xilinx公司推出的全球这款FPGA产品XC2064怎么看都像是一只“丑小鸭” - 采用2μm工艺,包含64个逻辑模块和85000个晶体管,门数量不超过1000个。那个时候,使用大量芯片的PC机刚刚走出硅谷的实验室进入了商业市场,因特网只是科学家和政府机构通信的神秘链路;那个时候,无线电话还重得像块砖头,比尔.盖茨也还正在为生计而奋斗,这样一款创新的可编程产品似乎并没有什么用武之地。因为,历史貌似还不需要这样一款新的技术产物,所以,当时的FPGA只是被用于胶合逻辑(Glue Logic),但历史的脚步永远是快速前进的,随着时间的推进和半导体技术的不断进步,芯片技术从胶合逻辑到算法逻辑再到数字信号处理、高速串行收发器和嵌入式处理器,这时候,FPGA才真正地从配角变成了主角。

Xilinx公司创始人之一 - FPGA的发明者Ross Freeman认为,对于许多应用来说,如果实施得当的话,灵活性和可定制能力都是具有吸引力的特性。也许最初只能用于原型设计,但是未来可能代替更广泛意义上的定制芯片。事实上,随着技术的不断发展,FPGA由配角到主角,很多系统设计都是以FPGA为中心来设计的。FPGA走过了从初期开发应用到限量生产应用再到大批量生产应用的发展历程。从技术上来说,最初只是逻辑器件,现在强调平台概念,加入数字信号处理、嵌入式处理、高速串行和其他高端技术,从而被应用到更多的领域。


在以闪电般速度发展的半导体产业里,二十几年的光景,足够改变一切。二十几年后的2007年,FPGA业界双雄Xilinx和Altera公司纷纷推出了采用最新65nm工艺的FPGA产品,其门数量已经达到千万级,晶体管个数更是超过10亿个。FPGA在不断地紧跟并推动着半导体工艺的进步 - 2001年采用150nm工艺、2002年采用130nm工艺,2003年采用90nm工艺,2006年采用65nm工艺。可以看出,FPGA技术发展之迅猛!


这其中,我们要谈到一个重要的历史转折点 - 1991年,当时,Xilinx公司推出其第三代FPGA产品——XC4000系列时,人们开始认真考虑可编程技术了。XC4003包含44万个晶体管,采用0.7μm工艺,FPGA开始被制造商认为是可以用于制造工艺开发测试过程的良好工具。事实证明,FPGA可为制造工业提供优异的测试能力,FPGA开始用来代替原先存储器所扮演的用来验证每一代新工艺的角色。也许从那时起,向最新制程半导体工艺的转变就已经不可阻挡了。最新工艺的采用为FPGA产业的发展提供了机遇。


我们还要强调一个关键技术 - Flash技术,相信很多人对Flash这个词都不会陌生,当然,它并不代表你的U盘,那时候Actel公司就坚信,Flash将继续成为FPGA产业中重要的一个增长领域。究其原因,Flash技术有其独特之处,它能将非易失性和可重编程性集于单芯片解决方案中,因此便可以提供高效益,而且处于有利的位置以抢占庞大的市场份额。Actel也将其付诸了行动,以Flash技术为基础的低功耗IGLOO系列、低成本的ProASIC3系列和混合信号Fusion FPGA将因具备Flash的固有优势而继续引起全球广泛的兴趣和注意。


一直到2003年左右,FPGA也由于种种原因,在经历了快速发展期后慢慢放慢的发展脚步,但毋庸置疑的是,FPGA在电子行业的地位和重要性,还是值得重视的,当然,直到今天,FPGA也仍然稳稳地占据了一片江山!


工作原理


在了解了FPGA的历史进程和发展历史之后,我们现在来说说FPGA的工作原理,我们避免不了地引入了一些令很多人感到迷惑的专用名词,但只要你静心把这些专用名词搞明白,你也便成了专家,难道不是吗?


FPGA采用了逻辑单元阵列LCA(Logic Cell Array)概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,理论上,FPGA允许无限次的编程。


这里我们对上文中提到的部分模块的功能做下简单说明:

1. 可编程输入输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。



外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有 一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。


2. 可配置逻辑块(CLB)

CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。



3. 数字时钟管理模块(DCM)

业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。


4.嵌入式块RAM(BRAM)

大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。

单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。


5. 丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。


6. 底层内嵌功能单元

内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。



7. 内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。

Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Microblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。


配置模式

FPGA也拥有多样化的配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。而如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。例如,领先FPGA厂商Xilinx推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。


说了这么多,下面我们对FPGA的主要特点做下总结,本期专题也就到了该收笔的时间了,相信这些内容够大家吸收消化一阵子了。


FPGA的主要特点:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。   

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。


FPGA将电子技术推向了一个新的高度,当然,如今的FPGA也胜利占领了很大一片江山,而随着现代科技的进步和不断发展,我们坚信,在不久的将来,我们将遇到现在还未知的技术,这些新的技术也势必继续影响和推动历史的进程,未来会是什么样子呢?我们拭目以待!








估计没人会看完。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top