嵌入式系统中的低功耗设计
扫描二维码
随时随地手机看文章
经过近几年的快速发展,嵌入式系统(embedded system)已经成为电子信息产业中最具增长力的一个分支。随着手机、pda、gps、机顶盒等新兴产品的大量应用,嵌入式系统的市场正在以每年30%的速度递增(idc预测),嵌入式系统的设计也成为软硬件工程师越来越关心的话题。 在嵌入式系统的设计中,低功耗设计(low-power design)是许多设计人员必须面对的问题,其原因在于嵌入式系统被广泛应用于便携式和移动性较强的产品中去,而这些产品不是一直都有充足的电源供应,往往是靠电池来供电,所以设计人员从每一个细节来考虑降低功率消耗,从而尽可能地延长电池使用时间。事实上,从全局来考虑低功耗设计已经成为了一个越来越迫切的问题。 那么,我们应该从哪些方面来考虑低功耗设计呢?笔者认为应从以下几方面综合考虑: 处理器的选择 接口驱动电路设计 动态电源管理 电源供给电路的选择 下面我们分别进行讨论: 一、处理器的选择 我们对一个嵌入式系统的选型往往是从其cpu和操作系统(os)开始的,一旦这两者选定,整个大的系统框架便选定了。我们在选择一个cpu的时候,一般更注意其性能的优劣(比如时钟频率等)及所提供的接口和功能的多少,往往忽视其功耗特性。但是因为cpu是嵌入式系统功率消耗的主要来源---对于手持设备来讲,它几乎占据了除显示屏以外的整个系统功耗的一半以上(视系统具体情况而定),所以选择合适的cpu对于最后的系统功耗大小有举足轻重的影响。 一般的情况下,我们是在cpu的性能(performance)和功耗(power consumption)方面进行比较和选择。通常可以采用每执行1m次指令所消耗的能量来进行衡量,即watt/mips。但是,这仅仅是一个参考指标,实际上各个cpu的体系结构相差很大,衡量性能的方式也不尽相同,所以,我们还应该进一步分析一些细节。 我们把cpu的功率消耗分为两大部分:内核消耗功率pcore和外部接口控制器消耗功率pi/o,总的功率等于两者之和,即p=pcore+pi/o。对于pcore,关键在于其供电电压和时钟频率的高低;对于pi/o来讲,除了留意各个专门i/o控制器的功耗外,还必须关注地址和数据总线宽度。下面对两者分别进行讨论: 1、cpu供电电压和时钟频率 我们知道,在数字集成电路设计中,cmos电路的静态功耗很低,与其动态功耗相比基本可以忽略不计,故暂不考虑。其动态功耗计算公式为: pd=ctv2f 式中,pd---cmos芯片的动态功耗 ct----cmos芯片的负载电容 v----cmos芯片的工作电压 f-----cmos芯片的工作频率 由上式可知,cmos电路中的功率消耗是与电路的开关频率呈线性关系,与供电电压呈二次平方关系。对于一颗cpu来讲, vcore电压越高,时钟频率越快,则功率消耗越大。所以,在能够满足功能正常的前提下,尽可能选择低电压工作的cpu能够在总体功耗方面得到较好的效果。对于已经选定的cpu来讲,降低供电电压和工作频率,也是一条节省功率的可行之路。 2、总线宽度 我们还经常陷入一个误区,即:cpu外部总线宽度越宽越好。如果我们仅仅从数据传输速度上来讲,也许这个观点是对的,但如果在一个对功耗相当敏感的设计来说,这个观点就不一定正确了。 同样引用公式pd=ctv2f ,对于每一条线(地址等数据线)而言,都会面临这样的功率消耗,显而易见,当总线宽度越宽的时候,功耗自然越大。每条线路的容性负载都不太一样,但一般都在4~12pf之间。我们来看下面一个例子:一片1mbit flash通过8bit和16bit的总线与cpu相连,总线频率为4mhz ,总线电压为3.3v。我们可以得到以下结果: 由上可见,采用16-bit总线和采用8-bit总线会有3.7mw的功耗差异。当然,如果需要大量频繁地存取数据的场合下,用8-bit总线不见得会经济,因为增加了读写周期。 另外,从上面的例子我们也可以看到:如果cpu采用内置flash的方式,也可大大地降低系统功率消耗。 二、接口驱动电路的低功耗设计 接口电路的低功耗设计,往往是容易被大家所忽略的一个环节,在这个环节里,我们除了考虑选用静态电流较低的外围芯片外,还应该考虑以下几个因素: 上拉电阻/下拉电阻的选取 对悬空脚的处理 buffer的必要性 通常我们习惯随意地确定一个上拉电阻值,而没有经过仔细地计算。现在我们来简单计算一下,如果在一个3.3v的系统里用4.7kω为上拉电阻,当输出为低的时候,每只脚上的电流消耗就为0.7ma,如果有10个这样的信号脚时,就会有7ma电流消耗在这上面。所以我们应该在考虑在能够正常驱动后级的情况下(即考虑ic的vih或vil),尽可