这篇**是关于如何实现FPGA设计的低功率运行。这是一个全球性的问题,因为,这对无线、军用移动设备和航空应用等依赖于电池电源的产品来说是非常重要的。这一类的应用覆盖了飞机、四轴飞行器和前线士兵等通信设备。 这是一篇纲要,是关于最新的7系列FPGA在开发周期的每个阶段中的低功率设计技术的。功率问题已经成为FPGA选型的首要考虑因素。电源管理是很多应用设计的关键。一些标准指定每个系统的最大功率。例如,设计师必须在设计流程的早起考虑到功率问题,这通常和FPGA的选型同时进行的。通过减少电源供给线、简化电源供给设计和热量管理降低等手段降低FPGA的功率消耗可以简化板上设计。低功率对延长电池寿命、提高系统可靠性起着重要作用。 功率挑战
随着工艺技术的发展,晶体管就如摩尔定律预言那样变得越来越小了。这个现象带来的一个弊端就是引致了晶体管的泄露,这就会引起更大的静态能量消耗——这是FPGA没有工作的时候产生的电流总量。增强的FPGA性能使时钟效率变得更高,这个会引致更高的动态功率。静态功率是由晶体管的泄漏电流决定的,动态功率则是基于可编程裸机和I/O的转换频率。随着这两种电源消耗的恶化,FPGA随着产品的更新换代逐渐增大其容量。更多的逻辑意味着在每个设备上高速运行着更多的晶体管以及更多的泄漏。 考虑到以上因素,设计者必须在其设计前期更加注意他们的电源和热量管理。在设备上面加上一个散热器并不能解决这些问题。真实情况是设计者必须尽量减少设计里面的逻辑。 让我们浏览一些指南,这可以帮你们了解在FPGA设计过程中为降低功耗而进行的某些操作。很明显,在设计的早期对这些事情有一个透彻的了解可以获得最大的回馈。
图一:从设计流程的FPGA选型到低功耗设计技术的过程中阐明不同的意义 7系列工艺技术
在FPGA的选型过程中,认真考虑工艺技术可以帮助你辨别设备的泄漏和性能。Xilinx的7系列FPGA是基于28HPL(28nm的高性能、低功耗)工艺,覆盖高性能空间,同时有明显的功耗降低。选择基于低泄漏HPL工艺可以降低在FPGA设计过程中的静态功耗管理方案的复杂程度以及花费。 在28HPL技术制造的FPGA相对于7系列的FPGA没有任何性能优势,然而某些产品,与FPGA相比,有着多于两倍的静态功耗和在减少泄漏方面有着竞争优势。图2展示了一个7系列FPGA综合的能耗降低途径,相对于上一代40nm的FPGA,可以降低一半的功耗。
图2:Xilinx7系列FPGA的功耗相对于之前的40nm产品降低一半功耗 为了开发产品及将来将其迁移到一个较小的产品,设计师可以选择一个比较大的FPGA。选择一个比较小的FPGA不但可以降低花费,同时会降低系统的功耗。 全系列的FPGA产品都是基于统一的架构。这个统一的架构使不同的FPGA设备的向上或向下迁移变得更简单,在Xilinx的7系列产品线中的迁移也同样简单。如果考虑从Virtex-6或Spartan-6设备迁移到7系列以及在7系列中进行迁移,可以参考“7系列迁移指南”(UG429)。 Xilinx的堆叠硅片互联技术
对于大型的系统,设计者通常会选择多样的FPGA,这类型的架构通常需要在不同的FPGA之间要有相当高速度的精妙和艰巨的数据转移。选择比较大的7系列FPGA,例如XC7V1500T和XC7V1500T设备,是利用Xilinx的堆叠硅片互联技术制造的。这可以解决以上的问题。简而言之,这个SSI技术(堆叠硅片互联技术)将多裸晶固定在一个硅中介层上面,这可以在它们之间提供成千上万的连接,这样就能制造出一个独立的大设备。堆叠硅片互联技术的一个好处就是与相同规模的标准单片产品相比,能降低降低静态功率的最大值。 堆叠硅片互联技术在I/O互联功率方面有明显的减小,与在一板上有多样化的FPGA相比,SSI技术引以为豪的一点就是相对于一个带有相同的I/O和收发器的接口,其在I/O互联功率方面有100X(带宽/W)的降低。这个明显的降低是因为他们所有的连接是在芯片上,而不是借助需要的功率去从芯片驱动信号,那样的话就可以得到不可思议的速度和低功耗。
表一:静态、动态和性能功率比较 电压调节的可选择性增强
Xilinx的7系列FPGA提供重要的电压调节选择。 7系列的FPGA给-3和-2L设备提供了一个比较大的温度范围(0-100℃)选择。由于28HPL工艺的缘故,2LE设备可以工作在1或者0.9V的电压。这些设备被称为-2L(1.0V)或者-2L(0.9V)。工作在1.0V的-2L设备有着和-2I和-2C一样的性能,但却有着更低的静态功率。工作在0.9V的-2L设备有着和-1I和-1C一样的性能,其同时也有着更低的静态和动态电压。 在0.9V的电压下,这些设备电压的独自下降可以降低静态功率大约30%的消耗。降压同样会降低性能,但是因为其速度和严格的泄漏规格,Xilinx屏蔽这些12L(0.9V)设备。与标准速度水平的设备相比,这种屏蔽方**给功率带来55%的降低。 通过选择-2L系列设备,你可以在动态功率上获得额外的功率节省。因为动态功率与VCCINT2成比例,在VCCINT减少10%,则会在功率方面提供20%的节省。 功耗估算工具:
市面上有多种多样的工具提供给工程师选择,用来估算在整个研发周期FPGA设计所需要的热能和电源。图三展示了FPGA开发过程每个步骤有效的Xilinx工具。
图三:Xilinx 给开发周期的每一步提供电压估算和分析工具 在研发刚开始的时候,XPOWER Estimator(XPE)电子制表软件甚至可以提供草图设计和项目导入阶段之前的早期功耗估算。XPE有助于架构评估和设备选择,同时它还可以帮助选择适当的电源和应用所需的热量管理元器件。 PlanAhead软件提供RTL阶段的设计功率分配估算。设计者可以指定设备操作环境、I/O性能和设计使用限制的默认活动率,这也可同过GUI来完成。PlanAhead软件接下来就会读HDL编码去估算所需的设计资源,同时记录每个资源静态分析的功率。随着对设计意图的细节的了解深入,RTL功率估算将会比Xpower Estimator电子制表软件更加精确,其精确度却并不如Xpower Analyzer。 Xpower Analyzer (XPA)是一个功率分析工具,它提供一个制定工作条件下允许细节分析功耗和热量信息的综合性GUI。你可以在两种不同的观点之间切换,以鉴定阻碍型(时钟树、逻辑、信号、I/O等)或者超过设计层的功耗。它们提供一个非常有效的方法去确定障碍的位置,从而进行功率优化。 软件功率优化
通过最小化同时有效的block RAM端口的数量,你可以利用block RAMs来对功率进行优化设计。这次优化,使-power选择在 XST 状态,修改跨越多样block RAM的RAM和ROM描述。这个优化调整位置线、端口和写控制信号,这样就可以最小化在每个时钟周期里面的有效的block RAM的数量,同时保证你的设计满足时间限制。 之后,促进效率的最优化而忽略对性能的冲击。当你了解时序路径与内存的关系并不重要的时候,将block_power2选项调为ram_style限制。这样可以节约15%到75%。同样,用XST的Area Optimization 模式,这个选择会使你设计用到的资源数量最小化。应注意的是当区域最优化以后,性能会受到限制。 一个额外的策略是activity-aware最优化,这是intelligent gating的另一种说法。这些算法分析逻辑方程式去检测每个对结果没任何影响的时钟周期源寄存器。软件利用FPGA逻辑中充足的时钟启动(CE)可利用的资源去产生细粒度门信号。在很多方案里,的核心动态功率总体减少超过15%,额外插入的门逻辑并不影响性能。 功率设置的另一种方法是利用capacitance-aware最优化,有两个关键技术:
Group clock loads:这个过程整理同步元素(例如触发器或者DSP blocks)去最小化每一个时钟网的范围,当你把clock loads沿着小部分的水平或者垂直的clock spines放置,软件会禁止时钟区域的未使用的分支。这回减少时钟资源和缓冲要求,这样就会节省核心动态功率,这个是同过map-power选项控制的。 Group data loads:这个算法最小化你设计中的用线长度,同时还确保你满足性能需求。因为动态功率随着你能看到的路线架构的类型,Grouping data loads能够节省功耗。这个grouping算法,同样的使在 map – power选项,通过将相同的逻辑摆在一起降低功耗。 ISE 设计组合突出其预期目标和策略,使功率在综合、map的情况下最优化。这种方法或许是利用所有综合限制的不默认限制设置的最好替代。然而,在这个情况下,会引起延时。最好,Xilinx执行工具自动化关掉不需要用到的收发器、锁相回路、数字时钟管理模块和I/O。在7系列,Xilinx也添加不需要用到block RAM的电源门。Block RAM的泄漏只有在你使用特殊设计的block中发生,而不是发生在设备上所有的block RAM。
图四:Xilinx已为最小化ISE设计套装中的功率而设定了设计目标和策略 低功耗设计技术
工程师可以搜索到很多降低FPGA设计功耗的贴士和技术,首选是用专用的硬件模块而不是在CLB中执行相同的裸机。为了减少功耗,你必须在设计中想法设法寻找可能存在的方法。这允许你去用到一个尽可能小的设备,同时减低静态功耗。用专用的硬核模块是降低静态和动态功率的一个最重要的方法,同时这样也能够轻易满足时间需求。因为相对于一个等效的CLB逻辑,硬核的晶体管数量远远比CLB少,因此它能够降低静态功耗。 按照通常的做法,你可以尝试去推断出尽可能多的资源。你可以通过代码或者在限制文档中为FPGA构造或者硅资源独自或作为一个整体控制推断资源量。为了安装特定的资源,你同样可以影响Xilinx的 CORE Generator 工具去自定义专用硬件。除此之外,你可以为其他不显著的任务明智地采用不会被用到的硬核。DSP48 slice如倍频器、加法器/累加器、逻辑比较器、模式适配器和计数器那样处理很多逻辑功能。你可以将block RAMs当作状态机、数学函数、ROMS和逻辑查找表使用。 |