系统设计中低功耗的探讨
扫描二维码
随时随地手机看文章
1 引言
节能是二十一世纪生活中最大的一个话题。电源储备的概念并不仅仅用于嵌入式便携设备, 几乎对于所有产品都是一个重要部分。说到低功耗,大部分人都会想到MSP430单片机,想到如何使微处理器进入休眠模式。毫无疑问,在嵌入式产品中,很难有和MSP430相匹敌的产品。在进行低功耗处理的时候,人们第一个想到的肯定是如何使微处理器进入功耗最低的工作模式。这种做法是完全正确的,但是在整个嵌入式系统中,处理微处理器还有其他的部分,特别是在一些数据传输和工控领域中。
现在我在一个做的一个跟节能有关的项目使我改变了以前对低功耗的一些认识,纠正了一些原则性的错误。在一个系统中要做到低功耗,首先考虑的应该是让不工作的部件全部休眠或者停止,不单单是微处理器。更重要的应该想办法让那些功耗大,而且使用的次数不是很多的部件停止工作。最后才考虑单片机系统本身的功耗问题。
2 实际问题
有一个使用使太阳能供电的系统,其能耗对系统来说至关重要。在这个系统中有一个进行远程通信使用的调制解调装置,待机功耗就要去到500mw。如果一天24小时都让这个家伙工作,那么太阳能的电池不用一天就让它吃光了。然而,这种调制解调器又没有休眠模式,况且几乎几天才使用一次调制解调器。如果不解决这个问题,就算将单片机系统停止工作也降低不了系统的功耗。最后我们决定,在平时空闲的时候干脆不给调制解调器供电,让它停止工作算了,可是问题是有呼叫到来的时候,调制解调器没有供电,不能建立连接哦。尽管有各种各样的问题,但是要降低系统的功耗,就必须要解决这个问题。
我想说的是,在进行低功耗的系统设计中,对于大功耗的部件和设备要毫不留情,该出手时就出手。它们听话固然好拉,通过单片机IO控制就可以让他们睡觉或者起来,或者关闭和开启,如果不听话的,就算断电也要做的了,谁叫他们吃的多,不干活,还不听话。
3 低功耗的一些知识(来自日电电子网站)
3.1 功耗机制
目前大多数微控制器都使用CMOS电路,这里的介绍主要针对这类情况。内部电路的基础,变压器,包括两个晶体管:一个P-ch晶体管和一个N-ch晶体管,上下结构,如下图(a)所示。在图(b)中,顶部的P-ch晶体管状态为ON,而底部的N-ch晶体管状态为OFF,这样输出为 "H"。在图(c)中,顶部的P-ch晶体管状态为OFF,而底部的N-ch晶体管状态为ON,这样输出为"L"。在这些状态中,OFF状态的晶体管进入高阻抗状态,这样很少有电流流过。换句话说,如果这种状态一直持续下去,功耗就可以忽略。
再看另一种情况,当信号变化时电流的流动。如图(d)所示,如果添加了负载电容(实际上配线电容总是被添加), 为了给电容充电,需要额外的电流。[!--empirenews.page--]
用水的概念来比喻电流的概念,考虑变压器,象阀一样操作。从顶部倒入水,由阀控制水流。可以把阀的状态比作变压器的状态。在变压器的"H"状态中,顶部的阀被打开,底部的阀被关闭;在变压器的"L"状态中,顶部的阀被关闭,底部的阀被打开。当状态由"H"变为"L"时,水的总量 如上图(d)所示添加了负载电容后,阀右边显示的水量增加,进而增加了流动的水量。
3.2 待机功能
在大多数应用中,微控制器不需要一直操作;有些时候是空闲的(如,当微控制器等待输入或等待定时器设置的时间到时)。在这段时间微控制器的操作是浪费功率。这就是为什么现在的微控制器都有待机功能,即在不需要使用微控制器时停止其操作。该功能有不同的名称,包括"睡眠",根据是否停止操作,可以划分成不同的模式。
多数情况下有三种模式,具有以下功能。大多数微控制器一般具有(a)和(c)模式。
(a) HALT模式 (只停止执行CPU指令)
(b) IDLE模式 (也停止时钟)
(c) STOP模式 (停止时钟振荡,即停止了大部分功能)
尽管以前仅考虑操作期间的性能,但现在待机期间的性能已成为许多设备设计中需要关注的问题。特别是随着移动设备应用的增多,使得制造商重点关注设备不工作期间的性能。这一问题越来越受到重视。
3.3 HALT模式
在最早的微控制器中该功能就已经普遍使用了,实际上就是通过1条指令来停止指令的执行。在早期的微控制器中,该功能仅仅是使微控制器等待中断输入,与降低操作电流没有关系。然而,自从引入了CMOS电路,通过停止CPU指令的执行就可以降低操作电流,因此HALT已成为待机模式的一种,用于节电。
在这种模式中,只停止CPU操作;其它电路都继续工作。因此电流只占正常操作电流的一小部分。 不过内部的外围功能是可操作的,而且一旦释放待机模式,CPU就马上恢复操作(立即唤醒),这在要求高速响应的情况下是有优势的。[!--empirenews.page--]
3.4 IDLE模式
不象HALT模式只停止CPU操作,在IDLE模式中,提供给其它部分的时钟也停止操作。这就意味着IDLE模式中的操作电流可以降低到不足HALT模式中的1/10。时钟自身的振荡继续,这样操作电流仍然比STOP模式中的要大。但是由于时钟一直振荡,因此如果从外部输入待机释放信号,则可以立即恢复操作。
3.5 STOP模式
在STOP模式中,由于停止了系统操作时钟的振荡,操作电流可以降低到几十个微安范围。STOP模式的缺点是,当释放待机模式时,必须恢复时钟振荡,而正常操作要等到时钟振荡稳定后才能恢复(这就象人早晨起床后由于低血压不能正常行动一样)。因此,当待机模式释放和操作完成之间的时间要求有限时,不能使用STOP模式。
3.6 怎样计算功耗
要计算功耗,我们首先看一下使用待机功能时如何估计功耗(操作电流)。
基本上,功耗主要通过每种模式(微控制器正在操作)中电流的平均时间来计算。由于操作电流随微控制器(设备)不同而变化,因此在大多数情况下不需要这样严格计算功耗。在下面的例子中,如果高速操作期间操作电流为I1,高速模式中时间长度为t1,待机操作期间的操作电流为I2,待机模式中的时间长度为t2,低速操作期间操作电流为I3,低速模式中的时间长度为t3,则消耗的平均电流为:
平均电流 = (I1 * t1 + I2 * t2 + I3 * t3) / (t1 + t2 + t3)
3.7待机释放时的电流
在使用待机功能时,尤其是STOP模式时,一定要注意在释放待机模式后时钟振荡恢复时稳定振荡所需的时间。这个时间段很短,但是由于启动时钟振荡时电流很大,因此必须考虑同样情况下正常操作时的电流。微控制器一旦停止操作就试图重新启动。
3.8待机释放触发器
中断使系统从待机模式返回正常操作状态(待机释放)。有几种不同的中断,包括内部中断如基于定时器的中断、由外部中断请求信号触发的中断,以及由外设串行通信结束触发的中断。用于释放待机模式的中断根据使用的待机功能的不同而有所不同。内部中断不能用于释放STOP模式,必须使用外部中断请求信号。但是,由于有些外部中断请求信号只能在时钟操作时使用,所以要特别小心。[!--empirenews.page--]
3.9看门狗定时器
看门狗定时器是最难和待机模式结合的。在两种主要的情况下会出现问题。一是当看门狗定时器正在操作时(即使CPU已进入待机模式)。在这种情况下,必须释放待机模式,留有足够的时间将看门狗定时器清零。
另一种情况是,在待机模式中,当看门狗定时器的计数时钟停止操作时。在这种情况下,待机释放时序不会出现大问题,需要注意的是系统要使用看门狗定时器的功能来防止死锁。
因此,需要预先仔细检查在待机模式中看门狗定时器会出现什么问题。
3.10当系统使用组合的操作时钟时出现的问题
许多新的微控制器具有使用内部振荡器(根据设备不同,有多种振荡器,有些可以停止,有些不能停止)操作的时钟。在这些微控制器中,使用的待机模式和进入待机模式的方式随微控制器的操作时钟的不同而有所变化。例如,当系统以主时钟操作时,通过执行STOP指令可以停止主时钟振荡,但是如果系统以其它时钟操作,则不能使用STOP指令。在这种情况下,必须通过寄存器设置来控制待机模式。
同样,当切换时钟时,必须结合时钟振荡来控制待机模式。如果在系统以子时钟操作时指定主时钟的振荡来恢复,并且立即将操作时钟从子时钟切换到主时钟,则可能会产生挂起,因为系统试图使用的操作时钟没有正常振荡。(如果由于执行STOP指令停止时钟振荡,则通过中断释放待机模式时所需的振荡稳定时间可由硬件保证,但是如果已经通过程序设置了振荡,则必须通过软件保证所需的振荡稳定时间。)