|
嵌入式系统的低功耗设计
|
Low-Power Design in Embedded System
|
■Mike Willey Kris Staffford
|
利用电池或附加电源供电的嵌入式设备的数量不断增长。设计此类系统的传统方法也很多,从简单地依靠半导体制造商提供最低功耗的部件直到依靠丰富的经验和魔术般的直觉经验。每个低功耗设计都是不同的,都有需要解决的设计所特有的问题。如果想让设计工作在非常低的功耗水平,那么必须仔细考虑设计涉及的所有元件。
良好的开端
在进行低功耗嵌入式系统设计时,首先尽可能提出更多、更具体的问题,如功耗限制、尺寸限制、I/O要求和工作忙闲度(工作与不工作时间的比值)。下面是一些需要考虑的方面。
充电的可行性:对这一问题的回答并非总是“是”。事实上,对于需要长时间在没有人干预的情况下运行的嵌入式设备,回答几乎总是否。比如,用来收集野生动物数据的数据收集颈圈(不可能让一只浣熊在睡觉前把戴的颈圈插上充电!)。从嵌入式电子设计的角度来看,采用可更换电池的设备与可拆卸可再充电电池的设备之间并没有太大的差别。
设备大小的要求:多年来通用电池的能量密度一直没有大的进步。所有的电池都受限于单位体积内可以储存的最大能量。电池越大,使用的时间会越长。
设备运行时间:可用的模型必须保证对设备在不同功率模式(包括关闭状态)下的实际工作时间百分比(忙闲度)有一个实际的估计。
设备需要的功率:这一问题极为重要!尽快计算出初步的功率预算,开始时最好留有余量,这样实际数字要比最初的估计要好些。
需要的I/O:光学隔离I/O和电子机械式继电器是低功耗设计的敌人。可以限制I/O类型和数量,仅提供真正需要。采用一些技巧避免使LED和继电器长时间持续工作。决定显示屏是否可以关闭以延长工作时间。
速度要求:速度对低功耗设备具有真正的杀伤力。一般情况下,速度加倍,功耗也会加倍。另外,如果总线宽度加倍,功耗也很可能加倍。尽可能使系统在所有操作模式下运行在尽可能低的速度。
处理器选择
当检查处理器数据手册时,还需要考虑以下几个问题:
采用静态还是动态内核:采用动态内核的处理器通常在降速或时钟停止后的响应不是很好。如果数据手册没有明确地标明处理器设计采用的内核类型,则应检查其fosc(min)指标。如果是0,或没有tcycle(max)指标,那么该处理器可以适应降速工作。
处理器I/O和总线功耗:仔细考察各种I/O和总线引脚的漏电流。这些参数在数据手册中将会以IIL,IIH,或输入漏电流的形式列出。不同的引脚具有不同的漏电流,具体泄漏情况根据管脚的状态而有不同。
时钟速度:采用内部可编程锁相环(PLL)产生时钟可使控制功耗的工作更为容易。这使得处理器可根据对计算能力的即时需求动态改变运行速度。
额定供电电流:对于针对低功耗系统而设计的处理器,该项参数通常会以电流与运行频率关系图的形式给出。同时还有可能给出针对不同睡眠和低功耗模式的参数。
睡眠模式:仔细阅读能够得到的和处理器所支持的睡眠和低功耗模式相关的所有材料。特别需要留意是否有较慢的唤醒时间或者省电模式是否关闭了设计需要的非常关键的功能。
现代CMOS器件消耗的功率几乎主要是由器件时钟有多快决定的。图1是COMS输入输出等效电路图。
每次门从地转换到Vcc,电容器都必须充电。当门从Vcc跳回地时,电容器必须放电。由于这一能量不能重新被利用(它以热量的形式在驱动门中耗散了),每次状态的转换都导致少量的能量损失。这一损失可表示为P=fVccCL,其中P是损失的功率,f是频率。速度确实是低功耗设计的杀手。由于这一方程适用于总线上的所有信号,因此在低功耗设计中应当避免宽外部总线。引脚的负载电容有所不同,但通常的范围是在输入引脚的4pF到双向引脚的12pF之间。表1给出的是一个微处理器连接到一个1M位闪存器件并工作在4MHz总线周期下时在不同总线宽度时的功耗水平。
低功耗I/O
所有人都希望更长的电池寿命。下面的问题可能会降低更多功耗,使电池寿命再延长一些。
真正需要的上拉电阻值:采用4.7K上拉电阻的日子已经过去了。即使在3V系统中采用62KW的上拉电阻,在输出为低时,每个仍然有48 A的电流。如果用到10个这样的上拉电阻,那么就会有480A的电流。开始考虑阻值在1MW范围的上拉电阻。在计算最大可能的值时,考虑输入漏电流和VIH(或VIL,对下拉电阻的情况)。
可关掉的部分:如果可能,关掉使用不频繁的电路,在需要时才启动它们。评估哪些部分可以关掉时,请牢记:
●使用与不活动时间的占空比
●重新加电后Vcc的稳定性
●控制所需要的额外功率开销
这些问题中的每一个都可能会使您选择不关掉这部分电路,而是始终保持供电。
关掉时是否真的没有供电?当试图通过悬置设计某些部分的Vcc来降低功耗时,有些部分可能会自动恢复供电。如图2所示,数字输入通常会有保护二极管,内部连接至Vcc输入引脚。这一二极管防止输入电压比Vcc高太多。因此,当悬置Vcc时,如果某一输入时高,那么这部分电路仍可能会获得供电。
所有的上拉电阻都是必需的?考虑关掉上拉电阻的电源。如果一个信号采用上拉电阻,那么大多数时间上拉电阻可能都在浪费能量。这需要仔细考察使用的忙闲度以及对静态电流的影响。
是否应当改用下拉电阻?仔细看一下输入在多数时间的状态。如果大多数时间都是低的,考虑采用一个下拉电阻而不是上拉电阻。
需要缓冲器吗?当考虑信号驱动能力时问一下这个问题。与低驱动能力的器件相比,过驱动(Overdrive)信号线的器件在状态转换时会消耗更多的功率。花点时间选择适当驱动能力的器件可能会节约一些功率。
节约功率并不仅仅是选择低功耗器件。大多数技巧都与降低设计的平均静态电流有关。在部分电路不使用时关掉其电源(包括上拉电阻的电源)。增大上拉电阻的值。注意可能的通过保护二极管的电流泄漏通道。这些就是延长电池寿命和降低功耗的所有方法。
电池选择
人们往往希望设备比显示屏和键盘大不了多少,用一块(低成本、可广泛买到)电池不停地运行。下列问题可帮助限制选择的范围:
●系统中需要什么电压?
●电池需要可再充电吗?
●典型使用/充电周期
●系统的标准电流及峰值电流
●是否需要方便地更换电池
一旦回答了这些问题,那么就可选定能够提供预期电池寿命的电池类型和尺寸了。
为产生工作电压,可利用线性调节稳压器或开关稳压器。如果输入电路板的电压与所需要的电压比较接近,那么低压差(LDO)线性稳压器可能是较好的选择:
●不在电路板上产生噪声
●元件数量少
●价格不高
但LDO不能输出比输入高的电压,并产生热量。
另一方面,开关稳压器:
●通常效率更高
●不产生那么多的热量
●可从任意输入电压产生任意输出电压
但开关稳压器噪声大,并且元件数量多。
许多设计人员仍害怕使用开关稳压器,因为开关稳压器看起来更难处理,并且大多数数字设计人员本能地避开任何非二进制的数学计算。而许多公司(如Maxim和Linear
Technology)提供优秀的开关稳压器应用指南。
另一需要考虑的问题是电池电压在使用寿命内可能会跨越所需要的电路板电压。例如,如果需要的工作电压是3.3V,而采用的电池是锂离子电池,在使用寿命中其电压会在2.9V到4.0V间变化,这时有几种选择。一种是升压-降压器配置,其中输出电压是通过两级稳压器产生的。这种配置的问题是,两级效率相乘降低了总的转换效率。
另一种选择是SEPIC配置。这是采用两个耦合电感(可能是一个小型变压器)的开关稳压器。这种类型的电源具有与典型升压和降压稳压器同样的效率,但比两级方法要好。
第三种方法,也是比较明显的解决方案是以串联或并联的方式安排电池,使电池电压在整个放电周期中都不再跨越电路板需要的电压。
睡眠模式和降低时钟速度
许多嵌入式应用大多数时间都在等待一些事件的发生:从串行端口接收数据,监视I/O引脚的状态变化,或等待时间延迟结束。如果处理器在等待事件发生时仍然全速运行,那么就会在完成很少事情的同时耗掉电池寿命。
微处理器设计者采用提供睡眠模式和可调整的时钟速度来解决设备不活动时的功耗问题。当处理器被设置进入睡眠模式时,器件的大部分(如果不是全部的话)都被关闭。振荡器要么关闭,要么切换到较低的频率,CPU停止执行指令。许多处理器具有不同的睡眠,每种模式的功耗水平依仍然处于活动状态的外设数量不同而有不同。
微控制器通常是在中断产生时从睡眠模式中唤醒的。当利用处理器时钟停止的睡眠模式时,在重新开始执行指令前时钟的稳定通常需要很长时间。这一时间经常可达数十至数百毫秒。当需要使用睡眠模式时,切记器件在时钟恢复稳定前的时间内不能对激励做出响应。当一个事件每秒发生10次,而处理器从睡眠状态中唤醒需要50ms的时间时,让处理器运行在较低的时间速度下比让其进入睡眠状态能够节约更多的功率。
一般事项
设计结束后,可以进行布线、制板、装配、验证电路板,甚至开始生产。但首次设计中不可能做得非常完美,需要对设计重新评估。首先应当在纸面上尽可能地使设计完善,然后再重新设计电路板。第二次需要一个平台来验证设计和测量电流值。在第一次电路板设计时应当考虑以下方面,在随后的版本中可以去掉这些部分:
●增加连接到未使用I/O的测试点,这对软件开发有帮助。
●增加进行电流测量的测试点和预留电阻位置,这主要可用来测量注入电路板的电池电流,以及板上每个供电电源的电流。此外,还可以利用这些测试点和电阻来检查设计的不同部分的电流消耗。
●使电路板的尺寸比最终尺寸大一些。
|
|