浅析嵌入式系统设计中的低功耗技术
对于一个嵌入式系统来说,系统的工作量随时都在改变,不可能所有的组件任何时刻都在工作,故可采用分区/分时供电技术来降低功耗,可利用开关控制电源供电单元,在某一部分电路处于休眠状态时,关闭此部分电路的供电电源,仅对工作部分组件供电。其供电原理如图1所示。
图1 分区分时技术原理图
2 软件的低功耗设计
2.1 优化编译器
在嵌入式系统设计中,软件起着引导硬件活动的主导作用,也对系统的能量消耗有很大的影响。过去几年的研究主要是针对硬件部分,而现在,研究设计人员则更注重通过优化软件部分来降低系统功耗。要想对软件进行优化,必须选择正确的编译方法,以降低程序执行的功耗。编译器的作用就是将由高级语言编写的程序(如C/C++等),翻译成能够在目标机上执行的程序。同时,也使得程序的可读性和可维护性得到保证,提高了软件开发的效率。另外,将程序移植到新的目标机上,也只要用相应的编译器对程序进行重新编译即可,而不必重新编写程序。但是,在某些情况下,这样会影响程序的执行性能。编译器的有效性以及它所生成的代码效率,可以与汇编语言代码相比较得出。事实上,在一个程序中,每一条指令都将激活微处理器中的某些硬件部件,因此,正确选择指令可以降低处理器的功耗。通过优化编译器可以进行有效的软件低功率化,从而生成效率更高的代码,以降低嵌入式设备的功耗。
2.2 采用软件代替硬件电路
一般的硬件电路都存在功耗,所以,可以把具有数据运算处理功能的硬件电路用软件来实现,例如滤波电路,指数、对数运算电路、抗干扰电路等。但是,任何事情都不是绝对的,部分硬件电路到底能否通过软件来实现,此外,还要考虑处理大量的软件数据,需要提高处理器的性能和功耗等,同时要考虑这是否合算。
2.3 中断驱动技术设计
把整个嵌入式系统软件设计成多个事件来处理,而在系统上电初始化时,主程序只进行系统的初始化(包括寄存器、外部设备等),初始化完成后,进入低功耗状态,然后把CPU控制的设备都接到中断输入端上。当外设发生了一个事件,即产生中断信号,使CPU退出节电状态而进入事件处理,事件处理完成后,继续进入节电状态。
在嵌入式程序设计时,一个程序到底使用中断方式还是查询方式,对于一些简单的应用并不那么重要,但在其低功耗特性上却相去甚远。使用中断方式,微控制器可以什么都不做,甚至可以进入等待模式或停止模式; 而在查询方式下,微控制器必须不停地访问寄存器,这会带来很多额外的功耗,所以,用软件进行设计时,除非系统本身已要求采用查询方式,否则应尽可能采用中断方式进行编程。 2.4 定时器延时程序的采用
当软件设计中需要用到延时程序时,设计人员应多使用定时器延时方法来进行设计。这是因为,通常嵌入式处理器进入待机模式后,CPU会停止工作,而定时器可以正常工作,由于定时器的功耗很低,故当处理器调用延时程序后,嵌入式系统便可进入待机模式,此时定时器可以继续工作,定时时间一旦结束,即可唤醒CPU重新进入工作,这样不但降低了CPU功耗,还提高了CPU的工作效率。而如果采用查询方式,则CPU会不断地对系统进行查询,由于CPU时刻工作,这样不但效率低下,同时处理器功耗也很大。
2.5 算法优化
优化算法多出现在嵌入式DSP中,采用大量现成的公式和计算方法,可以节省系统内部运算的时间,减少功耗; 另外,在嵌入式系统允许的误差情况下,也可以近似用比较简单的函数来取代复杂函数进行运算,从而减少功率消耗。
3 结束语
嵌入式系统的设计涉及到硬件设计和软件设计两个方面,在实际系统应用时,低功耗的设计并非是单方面的因素,需要综合考虑各种可能的原因、条件和状态,应把硬件设计和软件设计综合起来进行考虑,并对细节进行认真的分析,同时对多种可能的方案和方法进行计算和总结,这样才可能取得较为满意的效果,最终达到降低系统功耗的目的。
评论