嵌入式系统中的低功耗设计.docx
嵌入式系统中的低功耗设计zhaohy导语:嵌入式系统广泛应用于便携式和挪动性较强的产品中去,而这些产品不是一直都有充足的电源供给,往往是靠电池来供电,所以设计人员从每一个细节来考虑降低功率消耗经过近几年的快速开展,嵌入式系统Embeddedsystem已经成为电子信息产业中最具增长力的一个分支。随着手机、PDA、GPS、机顶盒等新兴产品的大量应用,嵌入式系统的市场正在以每年30%的速度递增IDC预测,嵌入式系统的设计也成为软硬件工程师越来越关心的话题。在嵌入式系统的设计中,低功耗设计Low-PowerDesign是很多设计人员必须面对的问题,其原因在于嵌入式系统被广泛应用于便携式和挪动性较强的产品中去,而这些产品不是一直都有充足的电源供给,往往是靠电池来供电,所以设计人员从每一个细节来考虑降低功率消耗,进而尽可能地延长电池使用时间。事实上,从全局来考虑低功耗设计已经成为了一个越来越迫切的问题。那么,我们应该从哪些方面来考虑低功耗设计呢?笔者以为应从以下几方面综合考虑:处理器的选择接口驱动电路设计动态电源治理电源供应电路的选择下面我们分别进展讨论:一、处理器的选择我们对一个嵌入式系统的选型往往是从其CPU和操纵系统OS开场的,一旦这两者选定,整个大的系统框架便选定了。我们在选择一个CPU的时候,一般更留意其性能的优劣比方时钟频率等及所提供的接口和功能的多少,往往无视其功耗特性。但是由于CPU是嵌入式系统功率消耗的主要;-对于手持设备来讲,它几乎占据了除显示屏以外的整个系统功耗的一半以上视系统详细情况而定,所以选择适宜的CPU对于最后的系统功耗大小有举足轻重的影响。一般的情况下,我们是在CPU的性能Performance和功耗PowerConsumption方面进展比拟和选择。通常可以采用每执行1M次指令所消耗的能量来进展衡量,即Watt/MIPS。但是,这仅仅是一个参考指标,实际上各个CPU的体系构造相差很大,衡量性能的方式也不尽一样,所以,我们还应该进一步分析一些细节。我们把CPU的功率消耗分为两大局部:内核消耗功率PCORE和外部接口控制器消耗功率PI/O,总的功率即是两者之和,即P=PCORE+PI/O。对于PCORE,关键在于其供电电压和时钟频率的上下;对于PI/O来讲,除了留意各个专门I/O控制器的功耗外,还必须关注地址和数据总线宽度。下面对两者分别进展讨论:1、CPU供电电压和时钟频率我们知道,在数字集成电路设计中,CMOS电路的静态功耗很低,与其动态功耗相比根本可以忽略不计,故暂不考虑。其动态功耗计算公式为:Pd=CTV2f式中,Pd-CMOS芯片的动态功耗CTCMOS芯片的负载电容VCMOS芯片的工作电压f-CMOS芯片的工作频率由上式可知,CMOS电路中的功率消耗是与电路的开关频率呈线性关系,与供电电压呈二次平方关系。对于一颗CPU来讲,Vcore电压越高,时钟频率越快,那么功率消耗越大。所以,在可以知足功能正常的前提下,尽可能选择低电压工作的CPU可以在总体功耗方面得到较好的效果。对于已经选定的CPU来讲,降低供电电压和工作频率,也是一条节省功率的可行之路。2、总线宽度我们还经常陷入一个误区,即:CPU外部总线宽度越宽越好。假如我们仅仅从数据传输速度上来讲,也许这个观点是对的,但假如在一个对功耗相当敏感的设计来讲,这个观点就不一定正确了。同样引用公式Pd=CTV2f,对于每一条线地址等数据线而言,都会面临这样的功率消耗,显而易见,当总线宽度越宽的时候,功耗自然越大。每条线路的容性负载都不太一样,但一般都在412PF之间。我们来看下面一个例子:一片1MbitFlash通过8bit和16bit的总线与CPU相连,总线频率为4MHZ,总线电压为3.3V。我们可以得到以下结果:IMG=总线宽度结果/uploadpic/THESIS/2007/12/2007121210535581108V.jpg/IMG由上可见,采用16-bit总线和采用8-bit总线会有3.7mw的功耗差异。当然,假如需要大量频繁地存取数据的场合下,用8-bit总线不见得会经济,由于增加了读写周期。另外,从上面的例子我们也可以看到:假如CPU采用内置Flash的方式,也可大大地降低系统功率消耗。二、接口驱动电路的低功耗设计接口电路的低功耗设计,往往是轻易被大家所忽略的一个环节,在这个环节里,我们除了考虑选用静态电流较低的外围芯片外,还应该考虑以下几个因素:上拉电阻/下拉电阻的选取对悬空脚的处理Buffer的必要性通常我们习惯随意地确定一个上拉电阻值,而没有经过仔细地计算。如今我们来简单计算一下,假如在一个3.3V的系统里用4.7K为上拉电阻,当输出为低的时候,每只脚上的电流消耗就为0.7mA,假如有10个这样的信号脚时,就会有7mA电流消耗在这上面。所以我们应该在考虑在可以正常驱动后级的情况下即考虑IC的VIH或者VIL,尽可能选取更大的阻值。如今很多应用设计中的上拉电阻值甚至高达几百K。另外,当一个信号在多数情况下时为低的时候,我们也可以考虑用下拉电阻以节省功率。CMOS器件的悬空脚也应该引起我们的重视。由于CMOS悬空的输入端的输入阻抗极高,很可能感应一些电荷导致器件被高压击穿,而且还会导致输入端信号电平随机变化,导致CPU在休眠时不断地被唤醒,进而无法进入休眠状态或者其他莫名其妙的故障,所以正确的方法是将未使用到的输入端接到VCC或者地。Buffer有很多功能,如电平转换,增加驱动才能,数据传输的方向控制等等,但假如仅仅基于驱动才能的考虑增加Buffer的话,我们就应该慎重考虑了,由于过驱动会导致更多的能量被白白浪费掉。所以我们应该仔细检查芯片的最大输出电流IOH和IOL是否足以驱动下级IC,假如可以通过选取适宜的前后级芯片来防止Buffer的使用,对于能量来讲是一个很大的节约。三、动态电源治理DPM所谓动态的电源治理就是在系统运行期间通过对系统的时钟或者电压的动态控制来到达节省功率的目的,这种动态控制是与系统的运行状态亲密相关的,这个工作往往通过软件来实现。1、选取不同工作形式如前所述,系统时钟对于功耗大小有非常明显的影响。所以我们除了着重于知足性能的需求外,还必须考虑怎样动态地设置时钟来到达功率的最大程度节约。CPU内部的各种频率都是通过外部晶振频率经过内部锁相环PLL倍频式后产生的。于是,是否可以通过内部存放器设置各种工作频率的上下成为控制功耗的一个关键因素。如今很多CPU都有多种工作形式,我们可以通过控制CPU进入不同的形式来到达省电的目的。我们以SAMSUNGS3C2410X32bitARM920T内核为例,它提供了四种工作形式:正常形式、空闲形式、休眠形式、关机形式,各种形式的功耗如下:IMG=形式的功耗/uploadpic/THESIS/2007/12/2007121210540168737Z.jpg/IMG由上图可见,CPU在全速运行的时候比在空闲或休眠的时候消耗的功率大得多。省电的原那么就是让正常运行形式远比空闲、休眠形式少占用时间。在类似PDA的设备中,系统在全速运行的时候远比空闲的时候少,所以我们可以通过设置使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒CPU,恢复到正常工作形式,处理响应的事件,然后再进入空闲形式。2、关闭不需要的外设控制器一般来讲,CPU都提供各种各样的接口控制器,如I2C、I2S、LCD、Flash、Timer、UART、SPI、USB等等,但这些控制器在一个设计里一般不会全部都用到,所以我们对于这些不用的控制器往往任其处于各种状态而不用花心思去管。但是,当你想尽可能节省功耗的情况下,那么必须关注它们的状态,由于假如不将其关闭,即使它们没有处于工作状态,但是仍然会消耗电流。仍以S3C2410X来讲:IMG=S3C2410X接口控制器/uploadpic/THESIS/2007/12/2007121210540698115A.jpg/IMG从上表我们可以看到,通过设置存放器我们可以有选择地关闭不需要的功能模块,以到达节省电的目的,比方在我们的实际应用中,ADC、I2C、I2S和SPI都没有用到,通过CLKCON存放器的设置,我们可以节省2mA的电流。当然,也可以动态关闭一些仍然需要的外设控制器来进一步节省能量。如在空闲形式下,CPU内核停顿运行,我们还可以进一步关闭一些其他的外设控制器,如USB,SDI,FLASH等,只要保证唤醒CPU的I/O控制器正常工作即可,如通过UART唤醒,那么UART控制器不能被关闭。等到CPU被唤醒后,再将USB、SDI、Flash等控制器再翻开。上面两种方式只是动态电源治理的最为简单的实现。在这两种方式中,一种是通过改变了系统的时钟频率,另一种是通过控制外设控制器的开关来到达节约能量的目的。在最近的研究中,已经有人把目光投入到了同时动态改变处理器的电压和频率来进一步节省功率,如IBM和MontaVista合作进展的嵌入式系统的动态电源治理的研究。这是一个更为复杂、也更为系统的工程,它涉及了从硬件到操纵系统以及应用层的有关内容。四、电源供应电路在数字电路设计中,工程师往往习惯于采用最简单的方式来完成电源的设计,但在对功耗要求严格的情况下,我们就必须对采用何种电压变换构造仔细考虑一番再做决定。通常来讲,我们有以下几种进展电压转换的方式:线性稳压LinearRegulatorDCtoDCLDOLowDrop-Out其中LDO本质上还是一种线性稳压,主要用于压差较小的场合。所以我们将其合并为线性稳压来谈。对于线性稳压来讲,其特点时电路构造简单,所需元件数目少,输入和输出压差可以很大,但其致命弱点就是效率低,功耗高。其效率完全取决于输出电压大小。下列图是线性稳压器LM7805的输出电流大小相对压差的曲线图。IMG=LM7805的输出电流大小相对压差的曲线图/uploadpic/THESIS/2007/12/20071212105421603223.JPG/IMG由图中可见,压差越大,可提供的最大输出电流越小。假设采用LM7805,输入12V,输出电压为5V,压差为7V,输出的电流为1A的情况下,我们可以计算出消费在线性稳压器上的功率为P=VIOUT=71=7w,效率仅为5×1/51+71=41.7%,由这个结果我们可以看出,有一大半功率消耗在IC本身上。DCtoDC电路的特点是效率高,升降压灵敏,但缺点时电路相对复杂,干扰较大。一般常见的由Boost和Buck两种电路,前者用于升压,后者用于降压,示意图如下:IMG=示意图/uploadpic/THESIS/2007/12/2007121210542629703L.jpg/IMG这两种电路的核心是通过MOS管的开关来控制电感和电容间的能量转换。调节MOS管栅极脉冲信号的占空比可以控制MOS管的导通和关闭,进而改变输出电压的上下。下列图是一个从12V转换到5V的DCtoDC电路图,其控制IC采用国家半导体NS的LM2596,实际是采用Buck电路,其MOSFET和相关的控制电路位于芯片内部,其转换效率图如下:IMG=转换效率图/uploadpic/THESIS/2007/12/2007121211090869197J.jpg/IMG由转换效率图可见,当输入为12v,输出为5v时,转换效率约为82,为线性稳压器转换效率的一倍。LM2596的开关频率为固定的130KHZ,假如我们提升器件的开关频率,如采用NS的LM2676时260KHZ开关频率,在同样的应用条件下,效率可达88以上。从上面的阐述中我们可见,在适当的情况下使用DC-DC的电压转换线路,可以有效地节约能量,降低整机功耗。0