使用这些设计技巧和ise功能分析工具来控制功耗
新一代fpga的速度变得越来越快,密度变得越来越高,逻辑资源也越来越多。那么如何才能确保功耗不随这些一起增加呢?很多设计抉择可以影响系统的功耗,这些抉择包括从显见的器件选择到细小的基于使用频率的状态机值的选择等。
为了更好地理解本文将要讨论的设计技巧为什么能够节省功耗,我们先对功耗做一个简单介绍。
功耗包含两个因素:动态功耗和静态功耗。
动态功耗是指对器件内的容性负载充放电所需的功耗。它很大程度上取决于频率、电压和负载。这三个变量中的每个变量均在您的某种控制之下。
动态功耗=电容×电压2×频率
静态功耗是指由器件中所有晶体管的泄漏电流(源极到漏极以及栅极泄漏,常常集中为静止电流)引起的功耗,以及任何其他恒定功耗需求之和。泄漏电流很大程度上取决于结温和晶体管尺寸。
恒定功耗需求包括因终接(如上拉电阻)而造成的电流泄漏。没有多少措施可以采用来影响泄漏,但恒定功耗可以得到控制。
尽早考虑功耗
您在设计的早期阶段做出的功耗决定影响最大。决定采用什么元件对功耗具有重大意义,而在时钟上插入一个bufgmux则影响甚微。对功耗的考虑越早越好。
恰当的元件
并不是所有元件都具有相同的静止功耗。根据普遍规则,器件工艺技术尺寸越小,泄漏功耗越大。但并不是所有工艺技术都一样。例如,对于90nm技术来说,virtex-4器件与其他90nm fpga技术之间在静止功耗方面存在显著差异,
然而,在静止功耗随工艺技术缩小而增加的同时,动态功耗却随之减小,这是由于较小的工艺有着更低的电压和电容。考虑好哪种功耗对你的设计影响更大——待机(静止)功耗还是动态功耗。
除通用切片逻辑单元外,所有xilinx器件都具有专门逻辑。其形式有块ram、18×18乘法器、dsp48块、srl16s,以及其他逻辑。这不仅在于专门逻辑具有更高的性能,还在于它们具有更低的密度,因而对于相同的操作可以消耗较少的功率。评估您的器件选项时,请考虑专门逻辑的类型和数量。
选择适当的i/o标准也可以节省功耗。这些都是简单的决定,如选择最低的驱动强度或较低的电压标准。当系统速度要求使用高功率i/o标准时,计划一个缺省状态以降低功耗。有的i/o标准(如gtl/+)需要使用一个上拉电阻才能正常工作。因此如果该i/o的缺省状态为高电平而不是低电平,就可以节省通过该终接电阻的直流功耗。对于gtl+,将50ω终接电阻的适当缺省状态设置为1.5v,可使每个i/o节省功耗30ma。
数据使能
当总线上的数据与寄存器相关时,经常使用片选或时钟使能逻辑来控制寄存器的使能。进一步来说,尽早对该逻辑进行“数据使能”,以阻止数据总线与时钟使能寄存器组合逻辑之间不必要的转换,如图1所示。红色波形表示原设计;绿色波形表示修改后的设计。
另一种选择是在电路板上而不是在芯片上进行这种“数据使能”。以尽可能减小处理器时钟周期。此概念是使用cpld从处理器卸载简单任务,以便使其更长时间地处于待机模式。
让我们来看一个在状态7和状态8之间频繁进行状态转换的状态机。如果您为该状态机选择二进制编码,将意味着对于每次状态7和状态8之间的状态转换,将有四位需要改变状态,如表1所示。如果状态机采用格雷码而不是二进制码来设计,则这两个状态之间的转移所需的逻辑转换的数量将降至仅一位。另外,如果将状态7和8分别编码为0010和0011,也可以达到同样的效果。
时钟管理