在学习低功耗设计?看看怎么维修寄存器传输功耗问题 (低功耗解决方案)
整理分享在学习低功耗设计?看看怎么维修寄存器传输功耗问题 (低功耗解决方案),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:简述低功耗的3种模式,低功耗运行,低功耗运行,低功耗设备,低功耗解决方案,低功耗实现,低功耗设计的重要性,低功耗实现,内容如对您有帮助,希望把内容链接给更多的朋友!
图1:CMOS电路功耗的主要来源是动态功耗,由开关电流和短路电流造成。在半导体工艺水平不断进步的同时,以电池供电的手持设备和膝上电脑也迅速普及,*的功耗有时已经成为*设计首要考虑的因素,因此,低功耗设计成为发展移动*必然要解决的问题。集成电路的低功耗设计分为*级、寄存器传输级、门级、电路级四个层次,而在这其中,寄存器传输级的低功耗设计对优化整个*功耗的贡献达到%-%,这是非常巨大的比例。因而,在寄存器传输级进行低功耗设计是非常值得,也是很有必要的。集成电路*耗的来源目前,CMOS工艺在集成电路特别是数字IC中应用得很普遍。由于CMOS电路在输入稳定的时候总有一个管子截止,所以它的静态功耗在理想情况下应该是零,但这并不代表静态功耗真的为零,实际上CMOS电路的静态功耗就是指电路中的漏电流(这里不考虑亚阈值电流)。CMOS电路功耗的主要来源是动态功耗,它由两部分组成:开关电流和短路电流。所以,整个CMOS电路的功耗为:其中,PTurn是开关电流ITurn产生的动态功耗;Pshort是动态情况下P管和N管同时导通时的短路电流Ishort产生的动态功耗;而Pleakage是由扩散区和衬底之间的反向偏置漏电流Ileakage产生的静态功耗。如图1所示。图2a:传统的设计。图2b:增加了门控时钟的设计。在这三项中PTurn大约占电路功耗的%,因而这里就只考虑开关电流ITurn所产生的动态功耗PTurn。ITurn是这样产生的:在CMOS电路,当输入为“0”时,PMOS导通,电源通过PMOS向负载电容充电;而当电路输入为“1”时,负载电容又会通过NMOS向地放电。ITurn就是不断对负载电容充放电所产生的开关电流。一个CMOS反相器由开关电流引起的平均动态功耗是:PTurn=CLVDD2f其中,CL是负载电容,VDD是电路的电压,f是时钟频率。所以,要想降低电路的功耗就应该降低电路的电压和频率。寄存器传输级的低功耗设计图3a:最基本的加法器设计。图3b:采用*作数隔离方法设计的加法器。寄存器传输级的低功耗设计方法有很多种,本文只列举三种最为常用的设计方法:门时钟、*作数隔离及存储器分区访问。1.门控时钟从上面的讨论知道,CMOS电路的功耗是和频率有着密切关系的,因此动态的关闭处于空闲状态的时钟具有明显的节电效果。图2a是传统的设计:*的时钟直接接到D触发器的时钟输入端,不管如何维修,只要输入的Clock翻转,触发器就会工作,整个*也一直不断的运行。而图2b是增加了门控时钟的设计:当*正常工作时,译码出来的En信号为高,则触发器可以正常锁存数据;当*处于空闲状态时,把En信号清零,这样,由于给触发器的Clock一直保持零,不会发生翻转,所以触发器不会锁存新的数据,整个*被挂起,*将进入低功耗模式。在电路中加入门控时钟很容易,可以用Verilog直接在描述中加入,也可以通过Synopsys的工具PowerCompile自动加入。通过加入门控时钟,*可以有选择的停止不相关模块的时钟,以最大程度的节省动态功耗。2.*作数隔离这种方法主要是对*中的算术、逻辑运算模块进行低功耗设计,其主要思想就是:在不进行算术、逻辑运算的时候,使这些模块的输入保持“0”,不让*作数进来,输出结果不会翻转;而如果进行这方面的运算时,再将它们打开。图4:存储器分块访问实例。这种方法在很多人看来是理所当然的,认为就应该是这样设计。然而在实际中,设计者一方面关心模块的功能,另一方面迫于设计时间的压力,所以很多设计中的细节没有考虑。如图3a,一个加法器的两个输入端没有经过任何逻辑直接进入加法器,*不管是否需要加法运算,加法器都一直工作着,输出不断翻转着,这对*的动态功耗是很大的浪费,而且数据总线越宽浪费的功耗越多;图3b则用*作数隔离的方法进行设计:当*不需要加法运算的时候,Adder_en信号为“0”,则加法器的两个输入端都保持“0”,其输出不会发生任何翻转,不会产生动态功耗,而如果需要进行加法运算时,Adder_en变成“1”,加法器正常工作。当对*里所有的算术、逻辑运算单元都用上这种方法必然会对*的动态功耗有很大的优化,在芯片面积方面,如图3b所示的,所增加的逻辑仅仅是几个多路器而已。3.存储器分块访问一个*里少不了存储器,存储器的功耗在整个*里所占的比例不可忽视。因而降低存储器的功耗,对于整个芯片*的功耗优化很有帮助。这里提出一种叫做存储器分块访问的方法来降低存储器的功耗。主要思想是:将*所需要一定容量的存储器分成两块,然后用高位*线进行片选译码。结合下面的实例:假设一个*需要K的RAM,如图4所示,我们选用两块KB的RAM。CPU给出了位*线,其中低位*线直接提供给两个RAM,最高位*线接到下面RAM的片选端CS,而这根*线经过一个反相器接到另一个RAM的片选端。通过这种方法,不管从CPU出来的什么样的*,则每次只会选中一个KB的RAM。如果采用单块KB的RAM,则每次都要选中一块KB的RAM。众所周知,一块KBRAM的功耗要远小于一块KBRAM的功耗。这样从存储器这一方面,又为*节省了功耗。功耗和面积永远是相矛盾的,如果想要降低*的功耗,必然要加上一些控制逻辑来进行功耗优化,而这部分逻辑会增加芯片的面积,所以在功耗和面积之间就要有个折衷。上面的三种寄存器传输级的低功耗设计,不会增加很多逻辑,因而对芯片面积的影响不大。而经过了这三种低功耗设计,使整个*动态功耗的改善很明显。例如,使用功耗*工具powermill对一款SIM卡芯片设计进行管级功耗*,这里采用的是华杰的0.um的标准单元库,表1是优化前后功耗及芯片面积的对比。可以看到,经过低功耗设计后的芯片平均动态电流比优化前降了%,然而优化前后芯片的面积没有发生改变,因而,上面的三种设计方法对于降低*动态功耗是非常有效的。本文来自互联网收集整理,由家电维修技术小编精心转载,更多相关文章请到维修交流:汤梓红