结合采用低功耗元件和低功耗设计技术在目前比以往任何时候都更有价值。随着元件集成更多功能,并越来越小型化,对低功耗的要求持续增长。当把可编程逻辑器件用于低功耗应用时,限制设计的低功耗非常重要。本文将讨论减小动态和静态功耗的各种方法,并且给出一些例子说明如何使功耗最小化。
功耗的三个主要来源是启动、待机和动态功耗。器件上电时产生的相关电流即是启动电流;待机功耗又称作静态功耗,是电源开启但I/O上没有开关活动时器件的功耗;动态功耗是指器件正常工作时的功耗。
启动电流因器件而异。例如,基于SRAM的FPGA具有高启动电流,因为这类器件刚上电时是没有配置的,而需要从外部存储芯片下载数据来配置它们的可编程资源,如路由连接和查找表。相反地,反熔丝FPGA不需要上电配置,因而没有高启动电流。
像启动电流一样,待机功耗主要依赖于器件的电子特性。由于SRAMFPGA互连中SRAM单元的数量相当大,它们甚至在待机时也要消耗数百毫安电流。反熔丝FPGA具有金属到金属互连,不需要额外的晶体管来保持互连,因而也就不会产生额外的功耗。但是,对上述两种FPGA类型来说,漏电流将随工艺几何尺寸的缩小而增加,这加剧了功耗问题。
另一个难题是动态功耗,其动辄比待机功耗大好几倍。动态功耗与FPGA内部单元(如寄存器和组合逻辑)寄生电容的充电和放电频率成比例,因而通常要针对设计进行优化。
下面将介绍FPGA设计中常用的一些可以降低功耗的技术:
采用FPGA的低功耗系统设计技术
1.状态机编码。大量的逻辑资源是由实现的有限状态机的类型来定义的。One-hlt状态机编码创建每个状态的一个触发器的状态机,与Gray和二进制状态机,较少利用one-hot状态机可以获得功效更好的设计。一些综合器软件能自动对状态机进行编码,但最有效的方法是直接在HDL代码中定义状态值。
2.保护赋值。赋值保护的关键在于:若最终的输出不需要更新,则阻止输入信号向下传播到其它逻辑块。对输入信号的赋值保护可确保仅在适当时改变输出值,从而将不必要的输出开关减至最少。
在大型组合逻辑(例如宽总线复用器)的输入端加锁存器,这能抑制无效的开关活动,因为仅当输出需要更新时输入才被锁好。类似地,可利用控制寄存器来打开或关闭低级别的模块(如子模块中的状态机)。使大总线和子模块保持在一个恒定状态有助于减少不相关输出开关的数量。
3.组合环。在不注意的时候,设计师偶尔可能在FPGA设计中创建了组合环。当一组相关的组合逻辑在特定的条件下不断振荡时,就会形成这些组合环。振荡器将消耗FPGA中的许多电流。因此,最好是评估振荡器,或确保在重新评估之前任何反馈逻辑都由一个寄存器来进行门控。
4.门控时钟。对于暂时不使用的模块,系统可以减慢或停止其时钟。在任一给定时间,通过时钟可以节省功耗。门控时钟可以极大地节省功耗,因为有源时钟缓冲器的数目减少,翻转触发器的次数将减少,因而那些触发器的输出端将减少可能反转。门控时钟要求仔细地规划和分割算法,但节省的功耗相当可观。
系统级应用的功耗节省方法:
1.系统时钟速度。系统时钟频率对电路板的总功耗有显著影响,因为时钟信号的开关活动最多,电容性负载最大。不过,时钟速度又与带宽性能直接相关。为了在功耗和吞吐量之间取得一个最佳平衡,设计者可以向不需要快时钟的元件提供较慢的时钟,而向那些对带宽很关键的元件提供快时钟,或使用一个内建的锁相环来为需要高速性牟的特定模块产生一个快时钟。
2.元件使能。有时,即使它们行为对目前功能而言是不必需的,输出端仍会被赋值。为了减少示使用的I/O产生的多余功耗,可以把一个系统控制器映射到FPGA,以关闭暂时不用的器件。当一个器件与当前操作无关时,系统控制可以解除其使用信号;或者,若该器件将在长时间内不被访问,则可以把它置于睡眠模式。在低功耗FPGA中实现这样一个系统控制器可以减少系统的总开关活动,并智能地使一些暂不需要的器件保持在睡眠模式。元件使能类似于赋值保护,只不过元件使能是在系统级实现的,它控制的对象是电路板上的元件而非FPGA中的模块。
3.智能协处理器。一般来说不得,液晶显示屏和微处理器占用了设计中的大部分功耗预算,
因此,常常通过降低LCD屏幕亮度或部分关闭屏幕来节省功耗。同样地,使微处理器保持在睡眠模式也可以延长电池寿命。
不幸的是,微处理器通常需要处理多个器件的中断服务程序,这就使微处理器很难处于睡眠模式。鉴于此,把外围振作和中断控制等任务卸载到一个低功耗FPGA上可以大大降低功耗。在FPGA中实现的一个低功耗中断控制器或数据协处理能够自己处理一些中断活动,所以可以避免为了低优先级活动而唤醒微处理器。
对于那些严格要求低功耗的系统而言,采用合适的低功耗可编程逻辑器件和可以节省功耗的设计技术,有助于使系统功耗降至最小。
功耗的三个主要来源是启动、待机和动态功耗。器件上电时产生的相关电流即是启动电流;待机功耗又称作静态功耗,是电源开启但I/O上没有开关活动时器件的功耗;动态功耗是指器件正常工作时的功耗。
启动电流因器件而异。例如,基于SRAM的FPGA具有高启动电流,因为这类器件刚上电时是没有配置的,而需要从外部存储芯片下载数据来配置它们的可编程资源,如路由连接和查找表。相反地,反熔丝FPGA不需要上电配置,因而没有高启动电流。
像启动电流一样,待机功耗主要依赖于器件的电子特性。由于SRAMFPGA互连中SRAM单元的数量相当大,它们甚至在待机时也要消耗数百毫安电流。反熔丝FPGA具有金属到金属互连,不需要额外的晶体管来保持互连,因而也就不会产生额外的功耗。但是,对上述两种FPGA类型来说,漏电流将随工艺几何尺寸的缩小而增加,这加剧了功耗问题。
另一个难题是动态功耗,其动辄比待机功耗大好几倍。动态功耗与FPGA内部单元(如寄存器和组合逻辑)寄生电容的充电和放电频率成比例,因而通常要针对设计进行优化。
下面将介绍FPGA设计中常用的一些可以降低功耗的技术:
采用FPGA的低功耗系统设计技术
1.状态机编码。大量的逻辑资源是由实现的有限状态机的类型来定义的。One-hlt状态机编码创建每个状态的一个触发器的状态机,与Gray和二进制状态机,较少利用one-hot状态机可以获得功效更好的设计。一些综合器软件能自动对状态机进行编码,但最有效的方法是直接在HDL代码中定义状态值。
2.保护赋值。赋值保护的关键在于:若最终的输出不需要更新,则阻止输入信号向下传播到其它逻辑块。对输入信号的赋值保护可确保仅在适当时改变输出值,从而将不必要的输出开关减至最少。
在大型组合逻辑(例如宽总线复用器)的输入端加锁存器,这能抑制无效的开关活动,因为仅当输出需要更新时输入才被锁好。类似地,可利用控制寄存器来打开或关闭低级别的模块(如子模块中的状态机)。使大总线和子模块保持在一个恒定状态有助于减少不相关输出开关的数量。
3.组合环。在不注意的时候,设计师偶尔可能在FPGA设计中创建了组合环。当一组相关的组合逻辑在特定的条件下不断振荡时,就会形成这些组合环。振荡器将消耗FPGA中的许多电流。因此,最好是评估振荡器,或确保在重新评估之前任何反馈逻辑都由一个寄存器来进行门控。
4.门控时钟。对于暂时不使用的模块,系统可以减慢或停止其时钟。在任一给定时间,通过时钟可以节省功耗。门控时钟可以极大地节省功耗,因为有源时钟缓冲器的数目减少,翻转触发器的次数将减少,因而那些触发器的输出端将减少可能反转。门控时钟要求仔细地规划和分割算法,但节省的功耗相当可观。
系统级应用的功耗节省方法:
1.系统时钟速度。系统时钟频率对电路板的总功耗有显著影响,因为时钟信号的开关活动最多,电容性负载最大。不过,时钟速度又与带宽性能直接相关。为了在功耗和吞吐量之间取得一个最佳平衡,设计者可以向不需要快时钟的元件提供较慢的时钟,而向那些对带宽很关键的元件提供快时钟,或使用一个内建的锁相环来为需要高速性牟的特定模块产生一个快时钟。
2.元件使能。有时,即使它们行为对目前功能而言是不必需的,输出端仍会被赋值。为了减少示使用的I/O产生的多余功耗,可以把一个系统控制器映射到FPGA,以关闭暂时不用的器件。当一个器件与当前操作无关时,系统控制可以解除其使用信号;或者,若该器件将在长时间内不被访问,则可以把它置于睡眠模式。在低功耗FPGA中实现这样一个系统控制器可以减少系统的总开关活动,并智能地使一些暂不需要的器件保持在睡眠模式。元件使能类似于赋值保护,只不过元件使能是在系统级实现的,它控制的对象是电路板上的元件而非FPGA中的模块。
3.智能协处理器。一般来说不得,液晶显示屏和微处理器占用了设计中的大部分功耗预算,
因此,常常通过降低LCD屏幕亮度或部分关闭屏幕来节省功耗。同样地,使微处理器保持在睡眠模式也可以延长电池寿命。
不幸的是,微处理器通常需要处理多个器件的中断服务程序,这就使微处理器很难处于睡眠模式。鉴于此,把外围振作和中断控制等任务卸载到一个低功耗FPGA上可以大大降低功耗。在FPGA中实现的一个低功耗中断控制器或数据协处理能够自己处理一些中断活动,所以可以避免为了低优先级活动而唤醒微处理器。
对于那些严格要求低功耗的系统而言,采用合适的低功耗可编程逻辑器件和可以节省功耗的设计技术,有助于使系统功耗降至最小。