3 低功耗设计
FPGA的设计中使用了多种功耗驱动的设计技术,以Xilinx Virtex系列为例,因为配置存储单元可占到FPGA中晶体管数的1/3,所以在该系列中使用了一种低漏电流的“midox”晶体管来减少存储单元的漏电流。为了减少静态功耗,还全面采用了较长沟道和较高阈值的晶体管。动态功耗问题则用低电容电路和定制模块来解决。DSP模块中乘法器的功耗不到FPGA架构所构建乘法器的20%。鉴于制造偏差可导致漏电流分布范围很大,可筛选出低漏电流器件,以有效提供核心漏电功耗低于60%的器件。
除了融入FPGA设计之外,还有许多设计选择方案影响到FPGA的功耗。下面分析部分这类选择方案。
3.1 功耗估计
功耗估计是低功耗设计中的一个关键步骤。虽然确定FPGA功耗的最准确方法是硬件测量,但功耗估计有助于确认高功耗模块,可用于在设计阶段早期制定功耗预算。
如图1所示,某些外部因素对功耗具有呈指数的影响;环境的微小变化即可造成预估功耗的重大变化。使用功耗估计工具虽难以达到精准,但仍然可以通过确认高功耗模块来为功耗优化提供极好的指导。
3.2 电压和温度控制
如图1所示,降低电压和温度均可显着减少漏电流。电源电压降低5% 就可降低功耗10%。通过改变电源配置,很容易调整电源电压。目前的FPGA不支持大范围电压调整,推荐的电压范围通常是±5%。结温可以用散热器和气流等冷却方案来降低。温度降低20℃可减少漏电功耗25%以上。降低温度还可呈指数提高芯片的可靠性。研究表明,温度降低20℃可使芯片总体寿命延长10倍。
3.3 悬挂和休眠模式
悬挂和休眠等模式可有效降低功耗。以Xilinx Spartan-3A FPGA为例,该器件提供两种低功耗空闲状态。在悬挂模式下,VCCAUX电源上的电路被禁用,以减少漏电功耗和消除偏置电流,这样可降低静态功耗40%以上。悬挂时仍保持芯片配置和电路状态。将唤醒引脚置位即可退出悬挂模式。此过程用时不到1ms。
休眠模式允许关闭所有功率调节器,从而实现零功耗。若要重启,必须重开电源并配置器件,此过程需要数十毫秒。切断电源后,所有I/O均处于高阻抗状态。如有I/O需要在休眠模式下主动激活,则必须保持对相应I/O组供电,这会消耗少量待机功率。
3.4 I/O标准方案
不同I/O标准的功耗水平相差悬殊。在牺牲速度或逻辑利用率的情况下,选择低功耗I/O标准可显着降低功耗。例如,LVDS是功耗大户,其每对输入的电流为3mA,每对输出的电流为9mA。因此,从功耗角度来看,应该仅在系统技术规范要求或需要最高性能时才使用LVDS。
替代LVDS的一种功耗较低而性能较高的方案是HSTL或SSTL,但这二者仍要每输入消耗3mA。如果可能,推荐换用LVCMOS输入。此外,DCI标准是功耗大户。当连接到RLDRAM等存储器件时,请考虑在存储器上使用ODT,而在FPGA上使用LVDCI,以减少功耗。
3.5 嵌入式模块
嵌入式模块是定制设计的,因此其体积和开关电容都比可编程逻辑的小。这些模块的功耗是等效可编程逻辑的1/5~1/12。
用嵌入式模块替代可编程架构可显着降低功耗。如果设计缩小并可装入较小的器件,则使用嵌入式模块可以降低静态功耗。一个潜在的缺点是,使用大型嵌入式模块可能无法更有效地实现非常简单的功能。
3.6 时钟生成器
在时钟生成中考虑功耗因素可以减少功耗。数字时钟管理器广泛用于生成不同频率或相位的时钟。然而,DCM消耗的功率占VCCAUX不可小觑的一部分;因此,应尽可能限制使用DCM。通过使用多种输出(如CLK2X、CLKDV 和CLKFX),一个DCM常常可生成多种时钟。与为同一功能使用多个DCM相比,这是一种功耗较低的解决方案。
3.7 BLOCk RAM的构建
多个Block RAM常常可以组合起来构成一个大型RAM。组合的方式可以对功耗意义重大。时序驱动的方法是并行访问所有RAM。例如,可以用4个2k×9 RAM构成一个2k×36 RAM。这个较大RAM的访问时间与单个Block RAM相同;然而,其每次访问的功耗却相当于4个Block RAM的功耗之和。
一种低功耗的解决方案是用4个512×36b RAM 构成同样的2k×36b RAM。每次访问都会预先解码,以选择访问4个Block RAM之一。尽管预解码延长了访问时间,但较大RAM每次访问的功耗却与单个Block RAM大致相同。