FPGA 的功耗概念与低功耗设计研究

文章转自(点击链接可以查看高清原文,失效请留言):
韩雪, 郭文成. FPGA的功耗概念与低功耗设计研究[J]. 单片机与嵌入式系统应用, 2010, 10(3):9-11.
深度解析FPGA的功耗



  随着半导体工艺的飞速发展和芯片工作频率的提高 ,芯片的功耗迅速增加 ,而功耗增加又导致芯片发热量的增大和可靠性的下降 。因此 ,功耗已经成为深亚微米集成电路设计中的一个重要考虑因素 。本文围绕 FPG A 功率损耗的组成和产生原理 ,从静态功耗 、动态功耗两大方面出发 ,分析了影响 FPG A 功率耗散的各种因素 ,并通过 A ctel 产品中一款低功耗的 FPGA 进一步进行说明 。最后提出了在 FPGA 低功耗设计中的一些问题 。
  在传统的概念中,芯片工艺的改进将会带来性能的提高,成本的降低。同时,由于芯片内核电压的降低,其所消耗的功耗也随之降低,这一点到0.13um时代也是正确的。

  但是在工艺进入90nm时代,甚至于以后的40nm或更小的工艺,出现了一点反常,芯片功耗将显著提高。

  由于40nm工艺的内核电压进一步降低,电压降低的一个负面影响是晶体管中的沟道(channel)内的电场减弱,于是电子移动速度降低,实际上也就是晶体管的传播延时(tpd)增加了。为了达到非常高的性能,芯片设计厂商通常降低晶体管的门槛电压(Vth),使得晶体管快速开关,用来达到较小传播延时的目的。这个Vth就是使得晶体管的沟道(channel)开始导通时的最小电压值。

  而Vth的降低,带来一个严重影响,就是晶体管漏电流随着Vth的降低呈指数增加,这样就会使得芯片的静态功耗大大增加,因此40nm的芯片制造商就是需要在芯片性能和其能承受的漏电流之间做一个权衡。

  总的来说,芯片进入40nm时代后,门槛电压的降低以及晶体管尺寸的减小,都将会导致芯片漏电流增加,而这个漏电流就成为芯片静态功耗的主要来源,有的甚至高于芯片工作的动态功耗。

  新工艺的使用反而带来功耗的大幅度增加,这是目前半导体业界所需要面临的一个普遍的问题。而功耗增加所带来的问题主要是芯片在工作中将产生更多的热量,如果这些热量不及时散播出去,芯片的温度将会升高,严重的时候有可能会导致芯片工作异常,甚至失效。


FPGA 功耗的基本概念

(1)功耗的组成

  FPGA器件的一个比较特别的现象是其上电瞬间的电流比较大,有的时候甚至大于芯片正常工作的电流,这是因为FPGA内部的逻辑和互连线资源(SRAM工艺)在上电的瞬间处于不确定状态,发生电流冲突的结果。

  如果用户在设计的时候没有考虑到这个上电瞬间的打电流,电源模块不能够提供这么大的电流,芯片在上电过程中就会出现上电曲线不单调的问题,导致器件上电失败,以至于芯片无法正常工作。一般在器件手册中会给出这个上电电流值。

  FPGA在正常工作中,其消耗的总功耗由器件的静态功耗、动态功耗和IO功耗构成。静态功耗也叫待机功耗(standby power),是芯片处于上电状态,但是内部电路没有工作(也就是内部电路没有翻转)时消耗的功耗;而所谓动态功耗是指由于内部电路翻转所消耗的功耗;IO功耗是IO翻转时,对外部负载电容进行充放电所消耗的功耗。

  如下式:

总功耗=静态功耗+动态功耗+IO功耗

  静态功耗主要是晶体管的漏电流引起 ,由源极到漏极的漏电流以及栅极到衬底的漏电流组成 ;动态功耗主要由电容充放电引起 ,其主要的影响参数是电压 、节点电容和工作频率 ,可以用式(1)表示。
FPGA 的功耗概念与低功耗设计研究

(2)静态功耗

  芯片的静态功耗是芯片处于待机状态下所消耗的功耗,它主要由芯片内部的漏电流产生。在高速的40nm器件中(如stratic IV),芯片的漏电流相对来说较大,因此静态功耗成为主要的电源功耗,也叫漏电功耗(leakage power)。

  漏电流是芯片上电时 ,无论处于工作状态还是处于静止状态 ,都一直存在的电流 ,来源于晶体管的三个极 , 如图 1 所示 。它分为两部分 ,一部分来自源极到漏极的泄漏电流 IS-D , 另一部分来自栅极到衬底的泄漏电流 IG 。漏电流与晶体管的沟道长度和栅氧化物的厚度成反比。
FPGA 的功耗概念与低功耗设计研究

  源极到漏极的泄漏电流是泄漏的主要原因 。MOS 管在关断的时候 ,沟道阻抗非常大 ,但是只要芯片供电就必然会存在从源极到漏极的泄漏电流 。随着半导体工艺更加先进 ,晶体管尺寸不断减小 ,沟道长度也逐渐减小 , 使得沟道阻抗变小 ,从而泄漏电流变得越来越大 ,而且源极到漏极的漏电流随温度增加呈指数增长 。

  静态功耗有一个显著的特点,就是它随着器件结温(junction temperature,TJ)的变化而变化较大。TJ越大,功耗越大;TJ越小,功耗越小,如下图所示。因此,控制芯片的结温可以有效的控制芯片的静态功耗。

FPGA 的功耗概念与低功耗设计研究
                漏电功耗与器件结温的关系

  相比以前的器件工艺(如0.13um),40nm器件由于内核电压的降低,芯片在工作时所消耗的动态功耗也相应降低。

  至于IO功耗,因为其电源是与内核分开的,所以它消耗的功耗改变不大。

  不同工艺器件的功耗组成如下图:
FPGA 的功耗概念与低功耗设计研究
              不同工艺器件功耗比较

  功耗增加是40nm高速芯片的结果。如果芯片设计者降低器件的性能规格,那么其功耗也将随之显著降低。ALTERA 65nm的低成本器件CYCLONE III 就是一个很好的例子。

(3)动态功耗

  动态功耗主要由电容充放电引起 ,它与 3 个参数有关 :节点电容 、工作频率和内核电压 ,它们与功耗成正比例关系。如式(1)所示,节点电容越大 ,工作频率越高 ,内核电压越大 ,其动态功耗也就越高 。而在 FPGA 中动态功耗主要体现为存储器 、内部逻辑 、时钟 、I/ O 消耗的功耗。在一般的设计中 ,动态功耗占据了整个系统功耗的 90%以上 ,所以降低动态功耗是降低整个系统功耗的关键因素。

(4)降低功耗带来的好处

  ①低功耗的器件可以实现更低成本的电源供电系统 。另外 ,更简单的电源系统意味着更少的元件和更小的PCB 面积 ,同样可以降低成本 。
  ②更低的功耗引起的结温更小 ,因此可以防止热失控 ,可以少用或不用散热器 ,如散热风扇 、散热片等 。
  ③降低功耗可以降低结温 ,而结温的降低可以提高系统的可靠性 。另外 ,较小的风扇或不使用风扇可以降低EMI。
  ④延长器件的使用寿命 。 器件的工作温度每降低10 ℃,使用寿命延长 1 倍。所以对于 FPGA 而言 ,降低功耗的根本在于直接提高了整个系统的性能和质量 ,并减小了体积 ,降低了成本 ,对产品有着非常大的促进作用 。

(5)如何降低 FPGA功耗

  FPGA 主要的功耗是由静态功耗和动态功耗组成 ,降低 FPGA 的功耗就是降低静态功耗和动态功耗 。静态功耗除了与工艺有关外 , 与温度也有很大的关系 。一方面需要半导体公司采用先进的低功耗工艺来设计芯片 ,降低泄漏电流(即选择低功耗的器件);另一方面可以通过降低温度 、结构化的设计来降低静态功耗 。FPGA 动态功耗主要体现为存储器 、内部逻辑 、时钟 、I/O 消耗的功耗 。
  ①选择适当的 I/O 标准可以节省功耗 。I/O 功耗主要来自器件输出引脚连接的外部负载电容 、阻抗模式输出
驱动电路以及外部匹配网络的充放电电流 。可选择较低的驱动强度或较低的电压标准 。当系统速度要求使用高功率 I/O 标准时 ,可设置缺省状态以降低功耗 。有的 I/O标准需要使用上拉电阻才能正常工作 ,因此如果该 I/O的缺省状态为高电平而不是低电平 ,就可以节省通过该终结电阻的直流功耗 。
  ②当总线上的数据与寄存器相关时 ,经常使用片选或时钟使能逻辑来控制寄存器的使能 ,尽早对该逻辑进行“数据使能” ,以阻止数据总线与时钟使能寄存器组合逻辑之间不必要的转换 。另一种选择是在电路板上 ,而不是芯片上 ,进行这种“数据使能” , 以尽可能减小处理器时钟周期 。也就是使用 CPLD 从处理器卸载简单任务 , 以便使其更长时间地处于待机模式 。
  ③设计中所有吸收功耗的信号当中 ,时钟是罪魁祸首 。虽然时钟可能运行在 100 M Hz ,但从该时钟派生出的信号却通常运行在主时钟频率 的较小分量(通常为12 %~ 15%)。此外 , 时钟的扇出一般也比较高 。这两个因素显示 ,为了降低功耗 ,应当认真研究时钟 。首先 , 如果设计的某个部分可以处于非活动状态 ,则可以考虑禁止时钟树翻转 ,而不是使用时钟使能 。时钟使能将阻止寄存器不必要的翻转 ,但时钟树仍然会翻转 ,消耗功率。其次 ,隔离时钟以使用最少数量的信号区 。不使用的时钟树信号区不会翻转 ,从而减轻该时钟网络的负载 。合理的布局可以在不影响实际设计的情况下达到此目标 。
  ④根据预测的下一状态条件列举状态机 ,并选择常态之间转换位较少的状态值 ,这样就能尽可能减少状态机网络的转换量(频率)。确定常态转换和选择适当的状态值 ,是降低功耗且对设计影响较小的一种简单方法 。编码形式越简单(如 1 位有效编码或格雷码),使用的解码逻辑也会越少。
  ⑤要计算覆盖整个产品生命周期或预期电池工作时间内所有状态下的功耗 ,要考虑上电 、待机 、空闲 、动态和断电等多种状态 ,要计算最坏情况下的静态功耗 。在所有降低功耗的措施中 ,选择合适的低功耗器件起决定性的作用 ,带来的效果是立竿见影的 ,而且无需花费大量的时间 、精力和成本采取额外的措施 。所以 ,选择一款低功耗的 FPGA 器件有助于提高产品性能 , 降低产品成本 ,提高产品的可靠性 。

(6)如何估计 FPGA功耗

  ALTERA为了使用户能够准确地评估其芯片在工作时候的实际功耗,提供了一种功耗计算的方法。

  功耗计算器:用户需要估算FPGA中的各种资源使用情况,包括LE,RAM,PLL,DPS块和IO口等,以及它们工作的时钟频率。同时,用户也需要估计各种资源工作过程中的翻转率,这对芯片的动态功耗影响非常大。表格中同样给出了静态功耗值。在40nm的Stratix IV器件中,由于静态功耗受结温影响较大,因此计算表格中还需要用户输入环境温度、表面风速和散热片类型等参数,用来估计芯片的实际待机功耗。如果用户的设计已经完成,用户可以在quartusii中输出一个功耗估计文件,将其载入到估计表格中,就可以自动载入精确的器件资源使用情况。

  基于仿真的功耗估计(powergauge):quartus ii提供了一种功耗估计工具。在使用之前,用户必须首先编译设计,然后根据设计的实际情况,给设计加一些激励,再在quartusii中对这个设计进行时序仿真。Powergauge可以在仿真过程中估算出芯片实际工作时的功耗,这种方法通常是在设计的后期用来精确估计芯片功耗时采用。和计算表格相比,它准确,但耗时。