1.3 可编程技术
可编程技术是FPGA的核心,采用不同类型的存储器实现可编程功能对FPGA器件的结构和性能有着巨大的影响。SRAM使用标准CMOS工艺设计加工,在FPGA中应用最广泛;Flash/E2 PROM可编程技术和反熔丝结构具有独特的优点。本节将分别介绍这几种可编程技术,分析其优劣势。
1.3.1 SRAM编程技术
最基本的5管SRAM单元结构如图1-2所示,通过传输管控制存储信息的读写。当传输管导通时,SRAM单元内存储的信息可由数据端读取或改写;当传输管截止时,存储的信息被首尾相连的两个反相器锁定,由Q和Q′端输出。理论上,SARM单元可被配置无数次。
图1-2 5管SRAM单元结构
FPGA中的SRAM单元主要实现以下功能:作为多路开关、交叉开关、互连通道等可编程结构的控制端,对信号的传输路径进行编程;对片内相对独立的逻辑功能模块(如可编程触发器、用户可编程I/O)进行配置;作为查找表(LookUp-Table,LUT)的存储单元,用来实现FPGA的逻辑功能;使用SRAM存储阵列作为嵌入式存储器,实现复杂的数字信号处理和存储功能。但是,基于SRAM单元的可编程技术存在一系列需要解决的问题:
断电后,SRAM存储的信息将全部丢失,所以通常使用外部非易失性存储器来存储相关配置信息,如Flash或E2 PROM等。
上电复位后,配置信息需从外部存储器写入器件,配置信息有可能被窃取。
SRAM单元用来控制传输管的导通或截止,对FPGA内的信号传输路径进行编程,传输管并不是一种理想开关元件,对信号传输会带来相当大的阻性和容性负载,降低信
号完整性。
1.3.2 Flash/E2 PROM编程技术
Flash和E2 PROM存储结构都具有非易失性的特点,即使关闭电源,内部的存储信息也不会丢失。Flash存储单元取消了E2 PROM隧道型存储单元的选择管,结构更简单有效,可通过一个信号一次性擦除一个区域的存储信息,集成密度更高。基于Flash存储结构的可编程开关电路如图1-3所示,配置使晶体管和开关晶体管的浮栅(Floating Gate)连接在一起,通过控制配置晶体管的栅极和源/漏极之间的电压,向其浮栅注入电荷,就可改变开关晶体管导通或截止状态。基于浮栅结构的开关晶体管截面图如图1-4所示。
图1-3 Flash交叉开关原理示意图
图1-4 基于浮栅结构的开关晶体管截面图
与SRAM相比,Flash结合了非易失性和可重复编程的特点,上电后无须配置。用Flash结构替代FPGA中的5管或6 管SRAM存储单元,可大大减少晶体管数量,降低静态功耗,整个器件的静态电流可低至微安量级;而基于SRAM存储结构的主流商用FPGA产品,静态电流普遍在毫安量级。但是,基于Flash结构的FPGA具也有其自身局限性,表现在:
Flash存储单元擦写寿命是有限的,如Actel公司的PorASIC3系列产品,只能编程500次左右,这个次数对于大多数FPGA开发应用来说是远远不够的。
Flash结构需要特殊的半导体工艺,无法在第一时间应用最新工艺技术,器件规模和密度也远低于基于SARM可编程技术的FPGA。目前基于Flash结构的最大规模的商用FPGA器件只有约300万系统门容量,而最新基于SRAM存储单元的产品容量可达数千万系统门。
同SRAM技术一样,Flash技术也具有传输管带来的信号完整性问题。
1.3.3 反熔丝编程技术
反熔丝结构在编程之前通常是开路的,通过编程使反熔丝结构局部小区域内具有相当高的电流密度,瞬间产生巨大的热功耗,将薄绝缘层介质熔化形成永久性通路。反熔丝结构有两种,一种是多晶—扩散反熔丝,具有氧-氮-氧(Oxide-Nitride-Oxide,ONO)的介质夹层,简称ONO反熔丝;另一种是金属—金属(Metal -to -Metal,M2M)反熔丝,简称M2M反熔丝。二者相比,M2M技术采用无源结构,具有更低编程电压和更小的电阻,是目前主流反熔丝工艺。采用反熔丝结构的FPGA具有非易失性,面积小,信号传输路径具有较小寄生电阻和电容,可上电后直接使用,信息安全性高等优点。由于不能重复编程,没有系统级相关配置电路,所以相对其他两种编程方式,开发成本更低。但是,反熔丝技术的局限性非常明显,具体表现在以下几个方面:
无法重复编程,不适用新产品开发。
一次性编程不利于器件可靠性检测,编程后器件一次成功率低于另外两种技术。
在不同工艺下,反熔丝材料的电性能具有相当大的差异,在最新工艺节点下实现反熔丝结构非常困难。
采用反熔丝结构的FPGA在工艺上往往要落后于最新的工艺节点,规模和密度也低于采用SRAM可编程技术的FPGA。目前最大规模的商用反熔丝FPGA产品只有约400 万系统门容量。
1.3.4 编程技术比较
表1-2总结了5种FPGA编程技术的比较。从表中可以看出,使用反熔丝技术和Flash技术可以获得最佳的面积和速度性能;使用EPROM和E2 PROM技术也可以获得较好的面积,但是性能较差;使用SRAM技术需要占用最大的芯片面积。
表1-2 5种编程技术比较