如何进行FPGA的低功耗设计?详细解析汇总
扫描二维码
随时随地手机看文章
FPGA的功耗高度依赖于用户的设计,没有哪种单一的方法能够实现这种功耗的降低,在进行低功耗器件的设计时,人们必须仔细权衡性能、易用性、成本、密度以及功率等诸多指标。
尽管基于90nm工艺的FPGA的功耗已低于先前的130nm产品,但它仍然是整个系统功耗的主要载体。此外,如今的终端产品设计大多要求在紧凑的空间内完成,没有更多的空间留给气流和大的散热器,因此热管理、功率管理继续成为FPGA设计的一个重要课题。
采用FPGA进行低功耗设计并不是一件容易的事,尽管有许多方法可以降低功耗。FPGA的类型、IP核、系统设计、软件算法、功耗分析工具及个人设计方法都会对产品功耗产生影响。值得注意的是,如果使用不当,有些方法反而会增加功耗,因此必须根据实际情况选择适当的设计方法。
FPGA设计的总功耗包括静态功耗和动态功耗两个部分。其中,静态功耗是指逻辑门没有开关活动时的功率消耗,主要由泄漏电流造成的,随温度和工艺的不同而不同。静态功耗主要取决于所选的FPGA产品。
动态功耗是指逻辑门开关活动时的功率消耗,在这段时间内,电路的输入输出电容完成充电和放电,形成瞬间的轨到地的直通通路。与静态功耗相比,通常有许多方法可降低动态功耗。
系统结构、IP和I/O
采用正确的结构对于设计是非常重要的,最新的FPGA是90nm的1.2 V器件,与先前产品相比可降低静态和动态功耗,且FPGA制造商采用不同的设计技术进一步降低了功耗,平衡了成本和性能。这些90nm器件都改变了门和扩散长度,优化了所需晶体管的开关速率,采用低K值电介质工艺,不仅提高了性能还降低了寄生电容。结构的改变,如增强的逻辑单元内部互连,可实现更强大的功能,而无需更多的功耗。Stratix II更大的改变是采用了六输入查找表(LUT)架构,能够通过更有效的资源利用,实现更快速、低功耗的设计。
除常规的可重配置逻辑外,FPGA正不断集成更多的专用电路。最先进的PLD就集成了专门的乘法器、DSP模块、可变容量RAM模块以及闪存等,这些专用电路为FPGA提供了更加高效的功能。总体上看,采用这些模块节约了常规逻辑资源并增加了系统执行的速度,同时可以减少系统功耗。因此更高的逻辑效率也意味着能够实现更小的器件设计,并进一步降低静态功耗和系统成本。
不同供应商所提供的IP内核对于低功耗所起的作用各有侧重。选择正确的内核对高效设计至关重要,有的产品将注意力集中在空间、性能和功耗的平衡上。某些供应商提供的IP内核具有多种配置(如Altera的Nios II嵌入式处理器内核采用快速、标准和经济等三种版本),用户可根据自己的设计进行选择。例如,如果一个处理器在同一个存储分区中进行多个不同调用,则采用带板载缓存的Nios II/f就比从片外存储器访问数据的解决方案节约更多功耗。
如果用户能够从多种I/O标准中进行选择,则低压和无端接(non-terminated)标准通常利于降低功耗,任何电压的降低都会对功耗产生平方的效果。静态功耗对于接口标准特别重要,当I/O缓冲器驱动一个高电平信号时,该I/O为外部端接电阻提供电压源;而当其驱动低电平信号时,芯片所消耗的功率则来自外部电压。差分I/O标准(如典型值为350 mV的低开关电压LVDS)可提供更低的功耗、更佳的噪声边缘、更小的电磁干扰以及更佳的整体性能。利用FPGA的结构来降低功耗还有赖于所使用的软件工具。用户可以从众多综合工具经销商那里进行选择,那些能够使用专用模块电路并智能地设计逻辑功能的综合工具,将有助于用户降低动态功耗。此外,根据自己的设计,用户可以尝试以面积驱动来替代时序驱动的综合,以降低逻辑电平。不同综合工具的选项有所差别,因此应当了解哪个“开关”或“按钮”是必需的。同样重要的还有布局与布线工具,一旦用户选择了某种特殊的FPGA,他就必须采用该供应商的布局布线工具。由于互连会潜在地增加功耗,因而仔细进行布局规划和设计尤为重要。即便设计不需要很快完成,设计者也希望尽可能地加快进度。诸如Altera LogicLock之类的工具所增加的设计功能可使用户在器件定制区域内进行逻辑分组布局,因而一旦用户找到一种高效布局,就能很快改编为他用。
设计方法
为使设计消耗最小的动态功耗,可采用优化的算法来降低多余和无意义的开关活动,例如具有许多不同状态的状态机。一个二进制编码的状态机将通过触发器产生多个比特并形成组合逻辑,采用格雷码或One-hot编码可降低从一个状态到另一个状态的开关次数。同时工程师在实现降低功耗的目标时,需要平衡格雷码所需的额外组合逻辑,或One-hot编码所需的附加触发器。
数据保护和操作数隔离是另一种降低功耗的技术。在这种技术中只要没有输出,数据路径算子的输入都会保持稳定。输入的开关行为会波及其它电路,因此即使在忽略输出的情况下也能消耗功率,例如某个集成了基本算术逻辑单元(ALU)的设计。通过保持输入的稳定性(停止开关),开关动作的数量就能得到减少。这种方法为每个模块的输入端提供了保护逻辑(触发器和/或门电路),减少了开关动作,从而降低了系统整体的功耗。
在时钟网络上减少开关动作也可大幅降低功耗。多数可提供独立全局时钟的FPGA是分割为几部分的,若一个设计间歇地采用部分逻辑,就可关掉其时钟以节省功耗。最新FPGA中的PLL可禁止时钟网络并支持时钟转换,因此既可关掉时钟也可转换为更低频率的时钟。更小的逻辑部分能够潜在地使用本地/局域时钟来替代全局时钟,因此不必使用不相称的大型时钟网络。
对易受干扰的设计而言,减少意外的逻辑干扰可大幅降低动态功耗。意外干扰是在组合逻辑输出时产生的暂时性逻辑转换。减少这种效应的一个方法是重新考虑时序设计,以平衡时序关键路径和非关键路径间的延迟。用户可在软件工具的帮助下应用这种方法,例如某软件可通过组合逻辑移动寄存器的位置,以实现平衡时序。另外一种方法是引入流水线结构,以减少组合逻辑深度,流水线还有助于增加速度。第二种方法对无意外干扰设计的效果不明显,相反还可能增加功耗。
功率分析工具
方便快捷的精确功率估算工具,不仅有助于设计工程师对功率进行定量评估,同时也有助于加快产品设计进度。如果在初期功率评估工具和数据表中没有实际数据,设计工程师就不能在设计阶段走得更远。获取初期评估数据工具,可使设计人员在设计开始之前就进行功率估算。此外作为设计规划,工程师可将布局和布线设计加载到更精确的功率评估持续当中,从而得到一个更精准的功耗描述。最好的评估工具可使仿真文件无缝集成到电源工具中,因而能够获得开关功率的精确描述;若不能进行仿真,则该工具也能自动给出FPGA设计的评估参数。