FPGA的静态功耗分析与降低技术
2013-09-19曹正州
曹正州,曹 靓
(中国电子科技集团公司第58研究所,江苏 无锡 214035)
1 引言
FPGA因其可以降低成本和设计周期,已经被广泛用于实现大规模的数字电路和系统。随着数字电路规模越来越大,时钟频率越来越高,也增加了FPGA的复杂性和技术难度。在深亚微米技术下,随着导电沟道越来越短,静态功耗越来越大,FPGA面临许多新的挑战。本文首先简单介绍了FPGA的结构和静态功耗在FPGA中的分布,接下来介绍了晶体管漏电流的原理,提出了FPGA结构中基本单元漏电流的模型并进行了分析,最后提出降低静态功耗的解决措施。
2 FPGA的结构和静态功耗分布
2.1 FPGA的结构和基本组成单元
一个FPGA的结构如图1所示。FPGA中含有规则灵活的可编程配置逻辑块,简称CLB,在它们周围是一圈可编程输入输出模块,简称IOB,两边有两列BRAM,位置是在CLB和IOB的中间。CLB、BRAM和IOB之间是互联资源。
图1 FPGA结构
FPGA的功能是基于查找表LUT来实现的,LUT是SRAM的阵列来实现真值表。图2说明了2输入查找表的结构。
图2 2输入查找表结构
FPGA的布线互联是基于SRAM控制的可编程开关实现的,有三种基本结构,如图3所示。
图3 FPGA中布线开关
2.2 静态功耗在FPGA不同单元中的分布
通过对0.25 μm工艺的FPGA进行HSPICE仿真,静态功耗在FPGA中不同单元的分布如图4所示。从图中可以看出,静态功耗主要来自配置SRAM和布线互联,超过整个电路静态功耗的70%。
3 FPGA结构中基本单元漏电流分析
3.1 晶体管的漏电流原理
晶体管的漏电流主要包括源漏之间的亚阈值漏电流(Isub)和栅漏电流(Igate),但随着导电沟道的缩短,也带来了其他的漏电流。图5所示为在短沟道下所有的漏电流。
图4 静态功耗在FPGA中的分布
图5 短沟道下漏电流模型
I1为pn结的反偏漏电流。
I2为源漏之间的亚阈值漏电流。它是在栅压低于阈值电压Vth时,在亚阈值区域有弱的反型而形成的电流。
I3为穿过栅氧化层形成的栅电流。它是由于栅氧化层厚度越来越薄,电子穿过栅氧化层产生的电流。
I4、I5分别为由于热载流子效应形成的从漏端到栅的电流和从漏端到衬底的电流[1]。
I6为源漏之间的穿通电流,它是由于在短沟道器件下源-衬底之间的耗尽层与漏-衬底之间的耗尽层越来越靠近,当这两个耗尽层结合,发生穿通效应而产生的电流。
3.2 FPGA中基本单元漏电流分析
在FPGA中被用来做静态漏电流模型的基本单元有:反向器、多路选择器、SRAM单元、LUT单元、布线开关。反向器被设计为具有相同的上升、下降时序,以及尽可能小的延迟和面积开销。所有的多路选择器是用面积最小的晶体管来实现,SRAM单元也是用面积最小的晶体管来实现,布线开关的晶体管在面积和延迟方面做了平衡。所有基本单元中的NMOS和PMOS都被用来考虑亚阈值漏电流,但是仅仅NMOS被用来考虑栅漏电流,因为PMOS的栅漏电流要远远小于NMOS。当NMOS的栅端为高电平时,即有电流从栅端流向沟道,如图6所示。
(a)反向器:反向器的亚阈值漏电流在输入分别为“0”和“1”两个状态时都进行了建模,如图7所示。当反向器的栅为“0”时,只有亚阈值漏电流通过反向器的NMOS管,PMOS管的栅漏电流被忽略。当反向器的栅为“1”时为栅漏电流通过NMOS,亚阈值漏电流通过PMOS管。
图6 栅漏电流
图7 反向器漏电流
(b)多路选择器:在FPGA中,多路选择器是通过NMOS传输管结构来实现的。多路选择器中的漏电流非常依靠输入的状态。图8描述了一个4选1多路选择器的结构,当选择信号为(0,0)和输入向量为(0010)时就存在亚阈值漏电流和栅漏电流,仅仅一个Q3传输管有亚阈值漏电流,其他三个传输管Q2、Q4、Q6有栅漏电流。当保持选择信号不变,输入向量变化到(0110)时,就会有三个传输管Q1、Q3、Q5有亚阈值漏电流,两个传输管Q1、Q6有栅漏电流。
图8 4选1多路选择器漏电流
(c)SRAM单元:在FPGA中有大量的SRAM单元用来配置FPGA,这些SRAM在FPGA工作过程中仅仅被配置一次并且保持值不变。通常用标准的六管结构来设计配置用的SRAM并且选择高Vth的晶体管,因为这些SRAM仅仅用作只读模式,仅配置一次。通过高的Vth来降低亚阈值漏电流就会非常重要,在很多商业化的FPGA中都选择高VthSRAM单元。亚阈值漏电流通过两个背靠背连接的反向器,栅漏电流通过传输管中的一个,如图9所示。
(d)LUT单元:LUT查找表是有SRAM单元阵列和多路选择器组成的。SRAM单元阵列来实现真值表,多路选择器根据LUT输入来选择查找哪个SRAM单元。LUT的漏电流如上SRAM、多路选择器以及反向器所述。
图9 SRAM单元漏电流
(e)布线开关:在FPGA中有两种结构的布线开关,一种是BUF驱动的布线开关,另一种是传输管的布线开关,这两种结构都含有NMOS传输管。图10描述了第一种结构的漏电流情况,当NMOS传输管关掉S=0,输入In为1,输出Node同样为1时,亚阈值漏电流通过反向器的PMOS管和传输管NMOS,栅漏电流通过反向器的NMOS管。
图10 BUF驱动布线开关漏电流
图11描述了第二种结构的栅漏电流情况,当传输管栅为1,传输0时就会有栅漏电流。
图11 NMOS传输管布线开关漏电流
在布线结构中最后一级布线开关NMOS必须去驱动BUF,当NMOS传输一个逻辑1会损失一个Vth,再去驱动BUF时将会有很大的静态漏电流,如图12所示。
图12 阈值电压损失后的静态漏电
为了解决这个问题,商业化的FPGA通常通过提高NMOS传输管的栅电压来防止阈值电压损失,从而降低静态电流,如图13所示。
图13 提高栅电压降低静态电流
3.3 静态功耗降低技术
亚阈值漏电流是静态功耗产生的主要原因之一,降低亚阈值漏电流将有效地降低芯片的静态功耗。亚阈值漏电流的解析模型如下公式[2]所示:
Vt为阈值电压,n为亚阈值摆幅系数,W为晶体管的宽度,L为长度,µ为电子迁移率,q为电子电量,Φs为硅表面势,εsi为硅的介电常数。从式中可以看出亚阈值漏电流非常依赖阈值电压Vt。
为了降低FPGA中的静态功耗,可以采用双阈值电压的晶体管。对于关键路径上的晶体管,如布线开关对速度要求高,采用低阈值电压栅的晶体管。对于非关键路径上的晶体管,如配置SRAM,采用高阈值电压栅的晶体管来降低静态功耗。
通过对一个CLB的仿真,将非关键路径上NMOS晶体管的阈值电压从0.35 V提高到0.5 V,静态电流将从原来的12 μA降低到8 μA。
4 结束语
本文在分析了FPGA中静态功耗的分布和基本单元的漏电流模型后,提出了使用双阈值电压的晶体管来降低整个芯片的静态功耗。由于是在非关键路径上使用高阈值电压栅的晶体管来降低静态功耗,所以对芯片的工作速度影响很小。
[1]David Johns.模拟集成电路设计[M].北京:机械工业出版社,2005.27-28.
[2]毕查德·拉扎维.模拟CMOS集成电路设计[M].西安:西安交通大学出版社,2002.23-24.