摘要:一种改进架构的高性能8051设计、外围功能集成、选用合适的时钟源以降低功耗;并介绍节省电能的软件技术及采用待机模式降低功耗的技巧。
关键词:停机模式 空闲模式 功率管理模式
便携式产品的功能和性能日新月异。消费者对产品性能的要求也越来越高,需要更强大的运算能力支持;另一方面,希望产品具有更低的功耗。
尽管已经出现了很多功耗处理器,但它们的性能通常很有限。Dallas公司的系列高速微控制器在性能和功耗之间取得了一个很好的折衷,采用了8051架构——世界上最流行的微控制器之一。简单易用、丰富的I/O资源使这种微控制器深受设计者的喜爱,并被广泛接受。它的流行势头已蔓延到了便携式领域,在很多应用中都有其用武之地。
本文旨在探讨使用8051控制器时,如何降低功率的消耗,重点介绍一种改进架构的高性能8051设计。
1 时钟频率
任何微控制器设计中,决定功耗的一个首要因素就是系统的时钟频率。互补金属氧化物半导体(CMOS)工艺的器件功耗直接正比于时钟频率。因此,从省电的角度考虑,将处理器运行于尽可能低的频率比较有利。
图1表示一个普通的8051微控制器的典型功率曲线,一个被所有便携系统设计得所熟知的关系。一般来讲,电流随频率的变化曲线为线性,具有一定的DC偏移。这个静态电流由片由的静态电路所消耗,例如比较器、运算放大器等。其数值一般很小(<1mA),是一个不可忽略的固定吸收电流。
任何功率受限的设计都应该考虑采用尽可能慢的运行速度。决定最低系统频率,也就是最低功耗的,有很多因素,包括期望得到的系统性能、中断响应延尽等。不管采用什么标准,最终目标是相同的:使器件的工作频率尽可能地靠近应用的需求。
2 高速内核
要降低基于8051系统的功率消耗,最直接的办法就是改善微控制器的效率。8051最初的设计采用了一个12时钟周期、每机器周期两次取指的架构。然而,高速微控制器采用的是每机器周期4个、甚至1个时钟的内核。它们具有更高的运算效率,执行一个指令需要很少的时钟周期,具有更快的运行速度和更高的时钟频率。
尽管高速核的优势通常考虑其处理能力,它们在降低功耗方面有很重要的意义。当处理器的运行指令经过优化后,执行同一任务所需的时间很短。很多便携式产品工作在猝发模式,其特点是只很短的活动时间,例如记录环境数据或扫描一个条码,而在随后的很长时间内都处于非活动状态。减少处理器的活动时间可以相应地降低功耗。
效率提升带来的另一个好处是,获得相同的性能所需的时钟频率可以更低。如果一个经过重新设计的内核采用4时钟机器周期而非12时钟,这就意味着完成同样的工作,只需更低的晶振频率。由于功率正比于晶振频率,这样,不必牺牲性能即可降低功耗。
图2显示三种微控制器以同样的速度完成同一任务时的功耗情况。其中两种是标准80C3X的衍生产品:一种是工作于每机器周期12个外部时钟方式;另外一种是DS80C320微控制器,工作于4时钟机器周期。测出各个器件的消耗电流,然后进行对比,保守地估计DS80C320具有250%(2.5倍)的速度提升。正如图2所显示的,每周期时钟数减少后的处理器内核工作于同样的吞吐率时,消耗的电流显著降低,高速运行时尤其显著。
3 集成化
将外围功能集成于芯片内部是节省电能的方法之一。在向芯片外部驱动一个信号时,每周期时钟数减少后的处理器内核工作于同样的吞吐率时,以便驱动外部负载和补偿DC损耗。开关功率是数字信号过渡过程中消耗的功能。开关功率可根据下面的公式估算:
PSW∝CV2/T (1)
其中C是接收门输入电容和连线电容的总和,T是时钟信号周期。一个CMOS门的典型输入电容为10pF。尽管很难精确计算出系统的开关功率,但有一点是显然的,每个额外的外部负载或引脚都会给微控制器造成额外的功耗。
基于微控制器的系统通常都会有一定数量的外围器件,例如从餐部的UART和上电昨位电路到看门狗定时器。8051系列的优势之一便是将大量的外围功能集成于片内。除了减少元件数量、简化设计外,外围功能的集成化也有利于降低功耗。可以认为任何外围器件的核心功能消耗的功率是相同的,与它位于处理器的内部还是外部没有关系。然而,将功能放在片内无疑节省了驱动外部总线所需的开关功率。
3.1 内部程序存储器
8051另外一个通常不被视作外设功能单元是程序存储器。所有8051的衍生产品都包含了不同容量的片内程序存储器。这是许多系统设计所期望的,以便减少外围元件数量和印制板面积,同时改善了便携系统的电源寿命。正如前面提到的,集成的程序存储器由于免去了外部总线驱动,因而降低了功耗。采用片内存储器还有另外一个省电的原因。8051架构必须采用一个74373类型的锁存器,以便锁存低字节地址。图3显示采用内部和外部程序存储器时的功耗情况对比。前者采用DS87C520高速微控制器和一个74AC573锁存器,以及一片27C256EPROM,访问时间70ns。第二个系统采用同样的微控制器,工作于内部存储器。两个系统均工作在11.0592MHz,执行一个简单、普通的程序。从图3可以明显看到,高频运行的系统中省掉外部EPROM和锁存器后,可节省多达49mA的电流。
3.2 内部数据存储器
如前所述,采用片内存储器取代外部RAM能够节省电能。80C32衍生产品具有扩充了的临时存储器(256字节),足够小的程序的堆栈操作和数据存储,不必外接RAM。
对于需要更多数据存储器或设置外部堆栈的设计,还需要额外的SRAM。虽然可以找到低功耗的SRAM,在考虑它所带来的功耗时,还应将相关的74373系列锁存器、驱动外部总线的容性损耗等一并考虑在内。
4 时钟源
影响功耗的另一个重要的系统元素是时钟源。标准8051设计通常采用内部振荡器激励一个外部石英晶体产生时钟,或者采用外部晶体振荡器。如果采用外部晶体振荡器,时钟的波形会影响到功耗。如果采用外部晶体振荡器,时钟的波形会影响到功耗。XTAL1引肚子内的输入级用来将外部时钟信号输入8051内核,通常采用互补式驱动器。随着输入时钟在高、低电平之间的跳动,驱动器中的互补对管会有一个短时间的同时开通过程,造成显著的电流浪涌。对于矩 形波来说,高、低状态之间的过渡过程非常短暂,两管同时开通的时间最短。对于上升和下降时间比较长的波形,例如正弦或三角波,过渡过程比较长,驱动器两管同时开通的时间也更长。这将会增加电流和功耗。
图4表示电流消耗和波形的关系。时钟源是一个可编程波形发生器,可以产生正弦波、三角波或方波。图4显示的电流是4个器件的平均值,包括传统的和改进的高速处理核。比较发现电流消耗直接正比于时钟波形的上升(和下降)时间。三角波具有最小的斜率,而矩形波斜率最大。采用矩形波时的电流平均要比三角波低0.75mA。这预示着在用外部时钟振荡器时,采用上升和下降时间更快的振荡器将有利于降低电流功耗。这一点在较低频率下尤为重要,此时器件需要花费更多的时间用于过渡过程。
有些8051衍生产品包含了一个片内的环形振荡器。通常是一串反相器,脉冲在其中传播。它可以提供一个2~4MHz的内部时钟源,驱动器件。由于不需要使用晶体,这种振荡器是功耗很低的时钟源。从DS87C520高速微控制器的特性可以看出,工作于环形振荡器时,能够提供等同于7MHz8051的性能,而功耗仅有3.6mA。虽然环形振荡器没有压电式晶体那样稳定,它们的低拉耗以及可以忽略的上电延迟在功率管理方面占有显要位置。
5 时钟管理
微控制器的工作频率是影响器件功耗最重要的一个因素。虽然系统的时钟频率主要取决于硬件配置,8051还是提供了一些有限的控制手段。这些手段减缓或终止器件全部或部分单元的工作时钟。传统的8051架构采用了两种控制方法:空闲和停机。
5.1 改善停机模式
停机模式是8051设计得所能利用的最低功耗状态。在该模式下,内部振荡器停振,器件中止工作。脱离停机模式通常靠外部复位。某些变种也可以通过外部中断退出停机模式。
停机模式有一个缺点,就是在晶振恢复工作的一个死时间内的功耗问题。晶体振荡器的工作依赖于石英晶体的振动。物理层限性决定了晶体振荡器必须有一个确定的时间,才能达到足够的振荡器幅度来驱动器件工作。这个预热过程不管采用内部振荡器还是外部振荡器都会存在。时间大约在3~12ms,与晶体和振荡器的性能有关。
预热过程对于功耗的作用在于,在此阶段器件不执行任何有用的工作,但仍要消耗功率。如果器件频繁地进入和退出停机模式,或者退出停机模式后只执行很短时间的任务,这种效应会变得格外显著。事实上,如果任务非常短(<5ms),晶振启动期间消耗的能量甚至会超过执行任务本身的消耗。如果采用环形振荡器来实现从停机模式到快速启动,就可避免这种延迟。这将大幅降低退出停机模式时的功率消耗。
screen.width-460)this.width=screen.width-460" vspace=10 border=0>
图5表示两个系统退出停机模式并执行一个短任务时的工作情况。其中一个器件包含一个内置的环形振荡器,另一个使用传统的外部晶振。没有环形振荡器的器件必须经历一个晶振预热期。在此期间器件不断地消耗功率,却没有做任何有用的工作。第二个器件是一片DS87C520高速微控制器,片内包含一个环形振荡器。这就允许器件在退出停机模式时能立即恢复工作。在本例中,程序执行4ms以内,间隔大约为2MHz。正如图5所看到的,当需要退出停机模式执行短任务时,采用环形振荡器可以大幅减少能量消耗。
某些应用中,在退出停机模式后不久,要求时钟具有晶振的稳定度。这种情况下,环形振荡器仍不失其优越性。紧随着停机模式的退出,控制器应该立即启动是晶体振荡器。随后可以在晶振的预热期控制器初始化一些必要的数据或寄存器。多数高速微控制器可以用一个状态位来标示晶体振荡器是否达到稳定。一旦完成了晶振代码的初始化进程,软件可以查询状态位,以决定是否着手高精度定时操作。
另外一个改善停机模式效率的方法是采用中断而不是复位方式来唤醒控制器。这种方式使处理器能够紧接着设置STOP位的指令立即恢复工作,而不是从复位向量重新启动。这样就免去了对复位原因的判断,允许处理器在最短的时间内开始有用的工作。
5.2 空闲模式
空闲模式是早期8051架构使用的第二个时钟管理模式。该模式中止了CPU的运行,但片内的通用定时器保持工作。在功率敏感的应用中,这个定时器被用于周期性地唤醒处理器去执行任务,或者去判断是否该执行某个任务。
由于标准的8051定时器为16位,采用16MHz的时钟频率时,最大定时周期只有31ms。如果需要更长的周期,就需要定时器多次溢出。这会消耗额外的功率,因为处理器必需频繁地恢复全速工作来累积计数,但没有执行任何有用的工作。
对于比较长的周期,最好采用比较长定时周期的内部定时器。有些8051衍生产品包含了一个看门狗定时器,也可被用来唤醒处理器。看门狗定时器可被编程为比较长的定时,可达256个时钟周期。在16MHz的频率下能够提供4.2s的最长延时。假设某应用希望每幅3s从低功耗状态唤醒,去执行任务。如果采用内部定时器去定时,处理器将不得不退出空闲模式96闪而不作有用的工作。如果采用长定时周期的看门狗定时器,则处理器只需要在执行任务的时候退出空闲状态,完成任务后再次到低功耗状态。
还有一个选择就是采用带有实时时钟(RTC)的微处理器。DS87C530高速微处理器内置的RC能够产生周期长达24小时的闹钟信号。由该闹钟产生的内部中断可将处理器从空闲或停机模式中唤醒。利用RTC退出停机模式对于需要长时间挂起的系统来讲是最为有效的方式。
6 功率管理模式
尽管空闲模式通过挂起运行程序而使功耗得以降低,内部定时器仍在以外部时钟的频率连续运行。这会消耗掉数量可观的功率。试想一下,是否可以让定时器工作于基本上接近待机的状态。
一个比较好的办法是降低整个器件的时钟频率。这可以由一个内部的时钟分频器来实现,它将外部时钟频率分频后再送入CPU。这种方案已在DS87C520高速微控制器中实现。该器件使用了两种时钟分频系数:功率管理模式1,输入时钟源被64分频;功率管理模式2,输入时钟源被除以1024分频。这些模式或以通过设置特殊功能寄存器中的对应位来实现。
图6对DS87C520高速微控制器的时钟分频器和时钟控制模式加以对比。图6中,全速模式(除以4)、功率管理模式1(除以64)、功率管理模式2(除以1024)、空闲模式及停机模式下的电流消耗形成鲜明对比。正如所料,停机模式吸收最低的电流,因为所内部时钟都被关掉了。两种功率管理模式消耗的电流比空闲模式还低。这不仅降低了器件的功耗,还说明可以让它以较低的水平持续运行。在传统的8051结构中,任何类型的CPU运行只有两个状态:“全部或者没有”。处理器被迫频繁地运行于最高性能水平,尽管只在很短的时间内得到高性能,这会增加一些不必要的功率浪费。功率管理模式(PMM)的使用,使处理器(如系统)能够根据实际性能需求对其功耗进行最优化管理。
6.1 中断和PMM的使用
采用内部时钟分频器可能会带来的问题是,中断延迟会大大增加;另外,内部定时器的减慢会影响8051串口产生或同步标准波特率的能力。这会严重干扰处理器响应外部激励的能力。解决方案之一就是在外部中断或串行口活动被确认后,自动使处理器恢复到完全运行状态。这种方案已经在DS87C520中得以实现。处理器的这种回切功能使其能够迅速响应外部中断。紧随着中断回答,器件将自动切回到全速(除以4)状态,并且不需要软件参与。
串行口的工作方式十分相似。当在串行口接收脚上检测到下降沿(起始位)后,器件将自动切回到全速运行(除以4)。这个过程紧接着数据传送起始,因而器件能够以全速来正确地接收余下的传送数据。对于传统的8051结构,在低功耗配置中使用串口的唯一办法是利用闲置模式。功率管理模式的使用提供了一种更低功耗的替代方案。
6.2 改进突发工作模式
在低功耗设计中,觉见的工作模式是将处理器从停机模式中唤醒,执行一个突发任务,然后再加到停机模式。在这样的系统中,降低功耗的一个手段是提高工作频率。初看起来,似乎匪夷所思。因为在正常工作期间,高频率系统要比低频率系统消耗更多的功率。然而,系统工作时消耗的静态电流与频率无关。在一个最终设计中,通常评估的是其能耗,以便确定电池工作寿命。这一点在评估一个高性能微控制器时尤为关键,因为它综合地考虑了处理时间和处理功率。对于一个给定系统,如果它具有更小功率与时间乘积,那么它的能耗更低;而不必单独考虑两种参数。很多实例显示,高速微控制器由于运行时间更短,实际能耗更低;而处理时间更长的低速处理器正好与此相反。
这一点可以通过图6提到验证。假定从停机模式恢复后,DS87C520读取一个I/O端口,经过算术运行后将结果从另一端口送出,这个过程需要500个机器周期的CPU时间。按图6所示,电流消耗在10MHz时为12.4mA,30MHz时为34.6mA。表1归纳了在两种速度下执行读任务时的能耗情况。从表1中可以看到,30MHz工作时的效率更高,能耗降低6%以上。
表1 执行一个500机器周期的任务时所消耗的能量和处理器速度对比
时钟频率 | 机器周期 | 所用机器周期 | 总时间 | Icc | 电流时间积 |
10MHz | 400ns | 500 | 200ms | 12.41mA | 2.48mAs |
30MHz | 133ns | 300 | 6.5ms | 34.66mA | 2.30mAs |
6.3 跑跑停停
在很多应用中,停机模式以外的时间并不完全取决于运行速度。很多情况下,处理器需要访问一个具有固定响应时间的外围设备,例如A/D转换器或温控器。此种情况下,处理器将有个突发动作。一般是触发某个过程,随后的一段时间内,则只有很少的或根本没任何操作。在这种时候,一种组合的功率节省技术会更为有效。
可以用一个实例来说明在这样一个系统中,采用具PWM的高速微处理器所带来的好处。设想的DS87C520与一片DS1620数字温度计/温控器相接口。这个器件可使用标准8051串口的工作模式0串行访问。主机处理器在某个时刻通过外部中断将DS87C520从停机模式唤醒,并要求它从DS1620中读取温度数据。获得数据后,DS87C520会将其保存于内部存储器中,备随后传送。DS1620的工作类似于很多A/D转换器:发出一个命令后启动一次转换,然后,经过一定延迟后转换完成,接着,数据就可以被移走了。对于DS1620来讲,转换时间接近于1秒钟。通过查询器件来确定转换是否完成。DS87C520非常适合于此种任务,因为它可以非常迅速地执行启动和运算功能。随后,在等待转换完成期间,微控制器可以将其置于PMM。在传统8051中,转换被启动后,可利用闲置模式将传统8051置于低功耗状态。在这种模式中,可利用内部的16位定时器来测量转换时间。工作于16MHz时,传统8051需要在转换完成之前退出闲置模式多达32次。
本例可被进一步改进。因为DS1620是作为一个同步器件进行访问的,不要求高精度的定时操作。这样,微控制器在启动转换和读取转换结果时,可工作于环形振荡器。由于避免了稳定外部晶振所需的“死时间”,这会进一步节省功率。
screen.width-460)this.width=screen.width-460" vspace=10 border=0>
图7展示了两个8051系统执行上述“跑跑停停”任务时的工作情况。正如图7中所看到的,在紧随着退出停机模式的程序运行中,功率节省非常显著。除了因采用PMM2代替空闲模式所带来的功率节省外,晶体预热时间的省略意味着程序可以更快地返回停机模式。在1秒钟的转换延迟期间,采用环振荡器工作很大程度上减慢了处理器的速度,可节省很多功率。
8051系列微控制器一直是世界最流行的处理器之一。它的简单易用相对较高的性能对很多应用十分理想,包括便携式和手持式产品。Dallas高速微控制器的出现,为现有的8051系统提供了一条改善用电效率、同时又无需再设计的新出路。