引言
芯片对功耗的苛刻要求源于产品对功耗的要求。集成电路的迅速发展以及人们对消费类电子产品——特别是便携式(移动)电子产品——的需求日新月异,使得设计者对电池供电的系统已不能只考虑优化速度和面积,而必须注意越来越重要的第三个方面——功耗,这样才能延长电池的寿命和电子产品的运行时间。很多设计抉择可以影响系统的功耗,包括从器件选择到基于使用频率的状态机值的选择等。
1 FPGA功耗的基本概念
(1) 功耗的组成
功耗一般由两部分组成:静态功耗和动态功耗。静态功耗主要是晶体管的漏电流引起,由源极到漏极的漏电流以及栅极到衬底的漏电流组成;动态功耗主要由电容充放电引起,其主要的影响参数是电压、节点电容和工作频率,可以用式(1)表示[1]。
(2) 静态功耗
静态功耗主要是由漏电流引起。漏电流是芯片上电时,无论处于工作状态还是处于静止状态,都一直存在的电流,来源于晶体管的三个极,如图1所示。它分为两部分,一部分来自源极到漏极的泄漏电流ISD,另一部分来自栅极到衬底的泄漏电流IG。漏电流与晶体管的沟道长度和栅氧化物的厚度成反比[2]。
图1 静态功耗的组成
源极到漏极的泄漏电流是泄漏的主要原因。MOS管在关断的时候,沟道阻抗非常大,但是只要芯片供电就必然会存在从源极到漏极的泄漏电流。随着半导体工艺更加先进,晶体管尺寸不断减小,沟道长度也逐渐减小,使得沟道阻抗变小,从而泄漏电流变得越来越大,而且源极到漏极的漏电流随温度增加呈指数增长。
(3) 动态功耗
动态功耗主要由电容充放电引起,它与3个参数有关:节点电容、工作频率和内核电压,它们与功耗成正比例关系。如式(1)所示,节点电容越大,工作频率越高,内核电压越大,其动态功耗也就越高。而在FPGA中动态功耗主要体现为存储器、内部逻辑、时钟、I/O消耗的功耗。在一般的设计中,动态功耗占据了整个系统功耗的90%以上,所以降低动态功耗是降低整个系统功耗的关键因素。
(4) 降低功耗带来的好处
① 低功耗的器件可以实现更低成本的电源供电系统。另外,更简单的电源系统意味着更少的元件和更小的PCB面积,同样可以降低成本[3]。
② 更低的功耗引起的结温更小,因此可以防止热失控,可以少用或不用散热器,如散热风扇、散热片等。
③ 降低功耗可以降低结温,而结温的降低可以提高系统的可靠性。另外,较小的风扇或不使用风扇可以降低EMI[3]。
④ 延长器件的使用寿命。器件的工作温度每降低10 ℃,使用寿命延长1倍。
所以对于FPGA而言,降低功耗的根本在于直接提高了整个系统的性能和质量,并减小了体积,降低了成本,对产品有着非常大的促进作用。
(5) 如何降低FPGA功耗
FPGA主要的功耗是由静态功耗和动态功耗组成,降低FPGA的功耗就是降低静态功耗和动态功耗。
静态功耗除了与工艺有关外,与温度也有很大的关系。一方面需要半导体公司采用先进的低功耗工艺来设计芯片,降低泄漏电流(即选择低功耗的器件);另一方面可以通过降低温度、结构化的设计来降低静态功耗。
FPGA动态功耗主要体现为存储器、内部逻辑、时钟、I/O消耗的功耗。
① 选择适当的 I/O标准可以节省功耗。I/O功耗主要来自器件输出引脚连接的外部负载电容、阻抗模式输出驱动电路以及外部匹配网络的充放电电流。可选择较低的驱动强度或较低的电压标准。当系统速度要求使用高功率 I/O标准时,可设置缺省状态以降低功耗。有的I/O标准需要使用上拉电阻才能正常工作,因此如果该 I/O的缺省状态为高电平而不是低电平,就可以节省通过该终结电阻的直流功耗。
② 当总线上的数据与寄存器相关时,经常使用片选或时钟使能逻辑来控制寄存器的使能,尽早对该逻辑进行“数据使能”,以阻止数据总线与时钟使能寄存器组合逻辑之间不必要的转换。另一种选择是在电路板上,而不是芯片上,进行这种“数据使能”,以尽可能减小处理器时钟周期。也就是使用 CPLD从处理器卸载简单任务,以便使其更长时间地处于待机模式[4]。
③ 设计中所有吸收功耗的信号当中,时钟是罪魁祸首。虽然时钟可能运行在 100 MHz,但从该时钟派生出的信号却通常运行在主时钟频率的较小分量(通常为 12%~15%)。此外,时钟的扇出一般也比较高。这两个因素显示,为了降低功耗,应当认真研究时钟。 首先,如果设计的某个部分可以处于非活动状态,则可以考虑禁止时钟树翻转,而不是使用时钟使能。时钟使能将阻止寄存器不必要的翻转,但时钟树仍然会翻转,消耗功率[4]。其次,隔离时钟以使用最少数量的信号区。不使用的时钟树信号区不会翻转,从而减轻该时钟网络的负载。合理的布局可以在不影响实际设计的情况下达到此目标。
④ 根据预测的下一状态条件列举状态机,并选择常态之间转换位较少的状态值,这样就能尽可能减少状态机网络的转换量(频率)。确定常态转换和选择适当的状态值,是降低功耗且对设计影响较小的一种简单方法。编码形式越简单(如1位有效编码或格雷码),使用的解码逻辑也会越少[5]。
⑤ 要计算覆盖整个产品生命周期或预期电池工作时间内所有状态下的功耗,要考虑上电、待机、空闲、动态和断电等多种状态,要计算最坏情况下的静态功耗。
在所有降低功耗的措施中,选择合适的低功耗器件起决定性的作用,带来的效果是立竿见影的,而且无需花费大量的时间、精力和成本采取额外的措施。所以,选择一款低功耗的FPGA器件有助于提高产品性能,降低产品成本,提高产品的可靠性。下面介绍Actel公司的低功耗FPGA——IGLOO。
2 低功耗FPGA——IGLOO
Actel公司的IGLOO源于ProASIC3系列,保持了ProASIC3原有的所有特性:单芯片、高安全性、高可靠性、高性能、低功耗、低成本等,并对低功耗的特性作了加强。IGLOO器件采用 Flash*Freeze技术,能够轻易地进入和退出超低功耗模式,该模式下的功耗仅 5 μW,同时可保存 SRAM和寄存器中的数据。Flash*Freeze技术通过 I/O和时钟管理简化了功率管理,并无需关断电压、I/O或系统层面的时钟,进入和退出 Flash*Freeze模式所需的时间少于1 μs。 Actel IGLOO系列以 Flash可重编程技术为基础,支持安全的系统内可编程功能,因此能在制造的最终阶段或应用现场快速且容易地进行升级或设计更新[6]。
IGLOO能够做到如此低的功耗,主要是由以下几个原因决定。
(1) 独特的Flash开关
IGLOO采用了低功耗的Flash开关,如图2所示。Flash开关只需要2个晶体管,而SRAM的开关至少需要4个以上的晶体管。更少的晶体管具有更小的容性负载、更小的漏电流,从而具有更低的功耗。另外,Flash技术的开关具有非易失性的特点,使得IGLOO无需配置芯片,从而较SRAM的FPGA少了上电的启动电流和配置电流。一般SRAM的FPGA启动电流都需要几百mA甚至几A,配置电流也需要几十mA,不适合用于电池供电的系统[6]。
图2 Flash开关和SRAM开关的对比
(2) 更低的内核电压
IGLOO的内核可以支持1.2 V或1.5 V供电,1.2 V的内核电压比1.5 V的内核电压可以节省36%的动态功耗。可由式(1)推导出来,动态功耗与内核电压的平方成正比,所以1.2 V的IGLOO系统比1.5 V内核电压的系统可以节省更多的功耗。
(3) 低功耗的Flash*Freeze模式
IGLOO具有一种独特的Flash*Freeze模式。在这种模式下可以让FPGA进入睡眠状态。在这种模式下最低的功耗可达2 μW(IGLOO的Nano系列),并且能够保存RAM和寄存器的状态。进入和退出这种模式只需要通过FPGA的Flash*Freeze引脚控制即可,进入和退出只需要1 μs,非常方便。
(4) 具有低功耗布局布线工具
Actel提供免费的开发环境——Libero,并充分考虑了低功耗的设计,在软件中增加了功耗驱动的布局布线。在该方式的驱动下,软件自动以最低功耗的方式来布局并走线,类似于PCB绘制时的布局与走线。其中影响最大的是时钟的走线,因为在大部分的设计中时钟对功耗起了关键性的影响。经过功耗驱动的布局布线以后,时钟走线变得更有规则,连线也尽量短,从而大大降低了功耗,通过该方式最多可以节省30%的功耗。
另外,在Libero软件内部集成的Modelsim仿真软件中,提供了功率估算工具。它用于分析实际器件利用率,并结合实际的适配后仿真数据,给出实际功耗数据,可以在完全不接触芯片的情况下分析设计改变对总功耗的影响。
3 小结
通过上面的分析,了解了FPGA功率损耗的相关原理和影响功耗的相关因素。设计者通过优化自己的设计和注意某些具体情况,可以在FPGA设计中实现低功耗。通过一款具体的FPGA产品了解其低功耗的解决方式,为设计提供了指导。FPGA均可在相应的操作环境下进行仿真,从而了解功耗的具体使用情况,针对相应的情况进行修改。另外,还可采用优化的算法来减少多余和无意义的开关活动,来实现低功耗的解决方案。
参考文献
[1] Degalahal Vijay, Tuan Tim. Methodology for High Level Estimation of FPGA Power Consumption: Proceedings of the 2005 conference on Asia South Pacific design automation[C], 2005.
[2] 王诚,等.Altera FPGA/CPLD设计基础篇 [M]。北京:人民邮电出版社,2005.
[3] 熊磊.FPGA设计中功率损耗的研究[J]。信息技术,2008(10):82.
[4] Yang Arthur.降低FPGA功耗的设计技巧和ISE功能分析工具[OL]。[2009531]。 http://www.eeworld.com.cn/FPGA/2009/0531/article_621_1.html.
[5] 刘明章。基于FPGA的嵌入式系统设计[M]。北京:国防工业大学出版社,2007:26.
[6] 周立功。最低功耗的高门密度可重编程FPGA解决方案[EB/OL]。[20091027].http://www.zlgmcu.com/actel/igloo.asp.