第32卷第3期电子与信息学报Vol.32No.32010年3月JournalofElectronics&InformationTechnologyMar.2010FPGA器件设计技术发展综述杨海钢①孙嘉斌①②王慰③①(中国科学院电子学研究所北京100190)②(中国科学院研究生院北京100039)③(美国纽约州立大学)摘要:现场可编程门阵列(FieldProgrammableGateArray,FPGA)作为一种可编程逻辑器件,在短短二十多年里从电子设计的外围器件逐渐演变为数字系统的核心,在计算机硬件、通信、航空航天和汽车电子等诸多领域有着广泛的应用。伴随着半导体工艺技术的进步,FPGA器件的设计技术取得了飞跃性突破。该文在回顾FPGA发展历史的同时,对目前主流FPGA器件的前沿技术进行总结,并对新一代FPGA的发展前景进行展望。关键词:现场可编程门阵列(FPGA);VLSI;可编程器件;CMOS中图分类号:TN47文献标识码:A文章编号:1009-5896(2010)03-0714-14DOI:10.3724/SP.J.1146.2009.00751AnOverviewtoFPGADeviceDesignTechnologiesYangHai-gang①SunJia-bin①②WangWei③①(InstituteofElectronics,ChineseAcademyofSciences,Beijing100190,China)②(GraduateUniversity,ChineseAcademyofSciences,Beijing100039,China)③(TheStateUniversityofNewYork)Abstract:Asaprogrammablelogicdevice,FieldProgrammableGateArray(FPGA)hasevolvedfrommerelyaperipheralcomponentinanelectronicdesigntobecomeacoreprocessingelementofdigitalsystemsoverthelasttwodecades.Itfindsextensiveapplicationsinmanyfields,suchascomputerhardware,communication,aviation,spaceflightandautomobile-electronics,etc.TheFPGAchipdesignresearchachievesasignificantprogresswiththeadvanceofsemi-conductortechnologies.Thissurveyreviewsthepasthistory,presentsstatusandfuturetrendintheeverquestforhighperformanceFPGAs.Keywords:FieldProgrammableGateArrays(FPGA);VLSI;Programmablelogicdevice;CMOS1序言现场可编程门阵列(FieldProgrammableGateArrays,FPGA)是一种可编程使用的信号处理器件,用户可通过改变配置信息对其功能进行定义,以满足设计需求。与传统数字电路系统相比,FPGA具有可编程、高集成度、高速和高可靠性等优点,通过配置器件内部的逻辑功能和输入/输出端口,将原来电路板级的设计放在芯片中进行,提高了电路性能,降低了印刷电路板设计的工作量和难度,有效提高了设计的灵活性和效率[1]。与ASIC(ApplicationSpecificIntegratedCircuit)相比,FPGA具有显著的优势:开发周期短、前期投资风险小、产品上市速度快、市场适应能力强和硬件升级空间大[2];当产品定型和扩大产量后,2009-05-18收到,2009-11-24改回通信作者:杨海钢ynaghg@mail.ie.ac.ce在FPGA中实现的设计也可迅速定制为专用芯片进行投产[3];在新工艺节点上用FPGA转换和重新实现已有ASIC产品,将使产品的升级更容易。与通用DSP(DigitalSignalProcessing)器件相比,FPGA利用并行架构实现DSP功能,在不少应用场合性能可超过通用DSP处理器的串行执行架构。在需要大数据吞吐量、数据并行运算等高性能应用中,往往使用具有DSP运算功能的FPGA或FPGA与DSP协同处理实现[4]。本文第2节回顾可编程器件的发展历史;第3节对目前主流FPGA的结构理论和设计方法进行概述与分析;第4节对FPGA前沿设计技术的发展趋势和面临的挑战进行探讨,对未来FPGA技术发展前景进行展望;昀后,第5节总结全文。2可编程器件发展历史自20世纪70年代以来,可编程逻辑器件(PLD,第3期杨海钢等:FPGA器件设计技术发展综述715ProgrammableLogicDevice)作为一种通用型器件迅速发展起来,改变了采用固定功能器件、自下而上的传统数字系统设计方法。使用可编程逻辑器件,用户可通过编程的方式实现所需逻辑功能,而不必依赖由芯片制造商设计和制造的ASIC芯片。从PLD的发展历程来看,按照结构区分,前后共有4种可编程逻辑器件类型:PLA、PAL、CPLD和FPGA。PLA(ProgrammableLogicArrays)同时具有可编程的“与逻辑”和“或逻辑”阵列结构,采用反熔丝[5,6]编程方式,集成密度较低,只能完成相对简单的组合逻辑功能,进行一次性编程。为实现时序逻辑,MMI公司开发出PAL(ProgrammableArrayLogic)[7]:PAL具有可编程的“与逻辑”阵列和固定的或门,具有D触发器和反馈功能,能够实现时序电路,但同样采用反熔丝编程方式,也是一种低密度、一次性编程的逻辑器件。由于整体架构的原因,若将PAL的规模和密度进一步提高,就需要增加“与逻辑”阵列的规模和更多的I/O端口,由此会带来版图面积指数增长[8]。可行的方法是将更多的PAL集成在一起,于是便出现了CPLD器件(ComplexProgrammableLogicDevice)。早期CPLD大都采用EPROM[9]、Flash(闪存式存储器)[10]或E2PROM(电擦除可编程只读存贮器)[11,12]的可编程技术,后期基于SRAM(静态随机存储器)[13]可编程技术的发展使CPLD器件的密度得到了提高,可实现复杂的组合和时序逻辑。由于继承了PAL的架构体系,CPLD器件规模与密度很难随着半导体工艺技术的发展而进一步提高,需要寻求截然不同的设计方法。基于SRAM可编程技术的FPGA概念昀初由Wahlstrom于1967年提出[14],与PAL器件的“与或”逻辑阵列结构不同,FPGA是由许多独立的可编程逻辑模块组成,逻辑模块之间的连接通过可编程开关实现。这种体系结构具有逻辑单元灵活、集成度高、适用范围广等优点。为充分利用连线资源,通常FPGA具有多种长度的连线单元,电路的延时特性具有多种可能。基于SRAM控制的可编程开关结构使可编程器件具有昀大的配置灵活性,但是与ROM相比,需要耗费较大的版图面积来实现可编程开关,因此直到1984年,随着亚微米CMOS工艺的出现,Xilinx公司才推出第一片基于SRAM编程技术的FPGA[13]。FPGA既具有门阵列器件的高集成度和通用性,又具有用户可编程的灵活性,在规模和密度上的发展并不受到整体架构的限制,同时FPGA还具有功能强大的EDA软件的支持,在随后的20多年中得到了飞速发展。3主流FPGA设计技术3.1可编程技术可编程技术是FPGA的核心,采用不同类型的存储器实现可编程功能对FPGA器件的结构和性能有着巨大的影响。SRAM使用标准CMOS工艺设计加工,在FPGA中应用昀为广泛;Flash/E2PROM可编程技术和反熔丝结构具有其独特的优点。本节将分别介绍这3种可编程技术,分析其优劣势。(1)SRAM编程技术昀基本的5管SRAM单元结构如图1所示,通过传输管控制存储信息的读写。当传输管导通时,SRAM单元内存储的信息可由数据端读取或改写;当传输管截止时,存储的信息被首尾相连的两个反相器锁定,由Q和Q'端输出。理论上,SARM单元可被配置无数次。图15管SRAM单元结构FPGA中的SRAM单元主要实现以下功能:作为多路开关、交叉开关、互连通道等可编程结构的控制端,对信号的传输路径进行编程;对片内相对独立的逻辑功能模块(如可编程触发器、用户可编程I/O)进行配置;作为查找表(LookUp-Table,LUT)[13]的存储单元,用来实现FPGA的逻辑功能;使用SRAM存储阵列作为嵌入式存储器,实现复杂的数字信号处理和存储功能。基于SRAM单元的可编程技术存在一系列需要解决的问题:(1)断电后,SRAM存储的信息将全部丢失,所以通常使用外部非易失性存储器来存储相关配置信息,如Flash或E2PROM等;(2)上电复位后,配置信息需从外部存储器写入器件,配置信息有可能被截取;(3)SRAM单元用来控制传输管的导通或截止,对FPGA内的信号传输路径进行编程,传输管并不是一种理想开关元件,对信号传输会带来相当大的阻性和容性负载,降低信号完整性。(2)Flash/E2PROM编程技术Flash和E2PROM存储结构都具有非易失性的特点,即使关闭电源,内部的存储信息也不会丢失。Flash存储单716电子与信息学报第32卷元取消了E2PROM隧道型存储单元的选择管,结构更简单有效,可通过一个信号一次性擦除一个区域的存储信息,集成密度更高。基于Flash存储结构的可编程开关电路如图2(a)所示,配置晶体管和开关晶体管的浮栅(floatinggate)连接在一起,通过控制配置晶体管的栅极和源/漏极之间的电压,向其浮栅注入电荷,就可改变开关晶体管导通或截止状态。基于浮栅结构的开关晶体管截面图如图2(b)所示。图2与SRAM相比,Flash结合了非易失性和可重复编程的特点,上电后无需配置时间。用Flash结构替代FPGA中的5管或6管SRAM存储单元,可大大减少晶体管数量,降低静态功耗,整个器件的静态电流可低至微安量级[15],而基于SRAM存储结构的主流商用FPGA产品,静态电流普遍在毫安量级[16,17]。基于Flash结构的FPGA具有其自身局限性:(1)Flash存储单元擦写寿命是有限的,如Actel公司的PorASIC3系列产品,只能编程500次左右[18],这个次数对于大多数FPGA开发应用来说是远远不够的;(2)Flash结构需要特殊的半导体工艺,无法在第一时间应用昀新工艺技术,器件规模和密度也远低于基于SARM可编程技术的FPGA,目前基于Flash结构的昀大规模的商用FPGA器件,只有约300万系统门容量[18],而昀新基于SRAM存储单元的产品,容量可达数千万系统门[19];(3)同样具有传输管带来的信号完整性问题。(3)反熔丝编程技术反熔丝结构在编程之前通常是开路的,通过编程,使反熔丝结构局部的小区域内具有相当高的电流密度,瞬间产生巨大的热功耗,将薄绝缘层介质融化形成永久性通路。反熔丝结构有两种,一种是多晶-扩散反熔丝,具有氧-氮-氧(Oxide-Nitride-Oxide,ONO)的介质夹层,简称ONO反熔丝,结构如图3(a)所示;另一种是金属-金属(Metal-to-Metal,M2M)反熔丝,简称M2M反熔丝,结构如图3(b)[20]所示。二者相比,M2M技术采用无源结构,具有更低编程电压和更小图3的电阻(20-100Ω)[5,21],是目前主流反熔丝工艺。采用反熔丝结构的FPGA具有非易失性,版图面积小,信号传输路径具有较小寄生电阻和电容,可上电后直接使用,信息安全性高等优点。由于不能重复编程,就没有系统级相关配置电路,相对其他两种编程方式,开发成本更低。反熔丝技术的局限性非常明显:(1)无法重复编程,不适用于新产品开发;(2)一次性编程不利于器