最详尽32位MCU低功耗设计考量与经典范例参考
传统的低功耗MCU设计都是以8位MCU为主,因为8位内核阈门相对较少,运行或泄露电流低,售价也相对低廉。但是,许多新兴的应用都需要比8 位元内核更大的处理效率。近年智能生活的抬头、物联网的建立,手持式消费性电子产品与无线功能需求越来越高、设计越来越复杂,要提高性能的同时又要兼顾低功耗,需要有一高性能低功耗的主控MCU来作为平台。另一方面,工业上的智能化也在展开,如远端监控、数位化、网路化等。简单说来,就是人物之连结(云端应用)、物物之连结(物联网) 需求越来越多,导致产品功能越来越复杂,运算量越来越高,2009年ARM发表了32位Cortex-M0内核,提供 MCU 厂商一个强而有力的平台,加上制程微缩技术的进步,嵌入式快闪**体制程普及化及降价,主要成本来自**体大小及类比周边和 IO 管脚数量,CPU内核的成本差异已大幅缩短,更促进了高性价比32位元低功耗MCU的快速发展。 MCU功耗来自何处? 在开始讨论低功耗 MCU 设计前,必须先探讨 MCU功耗的来源,其主要由静态功耗及运行功耗两部分组成。考虑实际的应用,最后决定系统功耗性能指标则必须计算平均功耗。 运行功耗 现代 MCU 已整合相当多的的类比周边,不能单纯考量数字电路的动态功耗。MCU运行时的总功耗由类比周边功耗和数字周边的动态功耗相加而得。类比电路的功耗通常由工作电压及其性能要求指标来决定,例如 100 ns传递延迟 (Propogation Delay)的比较器工作电流可能约为 40 微安,当允许传递延迟规格为 1 μs时,工作电流有机会降到个位数微安。 数字电路的动态功耗主要来自开关频率、电压及等效负载电容,其计算公式如下: PDynamic (动态功耗) ~ f (工作频率) x CL (等效负载电容) x VDD 2 (工作电压) 由以上公式可以理解到降低动态功耗最直接的方式为降低工作电压及工作频率。但MCU实际应用面通常要求更宽广的工作电压及更高的效能。在降低工作电压方面,可以选择更新近的制程,并透过 LDO 让 CPU 内核、数字电路及与管脚输出入电压无关的类比周边在低压操作,IO 管脚及需要与其他外部电路连接的类比周边则在较高的系统电压操作。如此可以兼顾低功耗及宽工作电压的需求。在降低工作频率这项参数上,一个设计优良的32位MCU更能突显其效能优势,除了直觉的 MIPS 比较之外,32 位元汇流排也代表更高的资料存取频宽,能以更低的工作频率达到相同的效能,进而降低整体功耗。另外,如果 MCU 内建与操作频率相关的类比周边,例如石英晶体震荡电路、嵌入式快闪**体或电流式 DAC,其电流消耗与转换频率成正比,也要纳入低功耗 MCU 的动态功耗设计考量。 静态功耗 传统静态功耗的定义是指系统时钟源关闭时数字电路的漏电流。但是在混合信号低功耗 MCU 的设计中要同时考虑下列多种漏电流来源,包含数字电路漏电流、SRAM 漏电流、待机时已关闭的模拟电路漏电流 (例如 ADC,嵌入式快闪**体)、待机时不关闭的模拟电路工作电流 (例如 LDO、BOD) 及 IO 管脚的漏电流。因为时钟源已关闭,影响静态功耗的主要参数为制程、电压及温度。所以降低静态功耗必须选择超低功耗制程,但是低功耗制程通常伴随较高的 Vt,导致低电压类比周边设计困难。另外,以MCU待机电流 1微安的规格,代表数字电路漏电 + RAM 保持电流 + LDO 工作电流 + BOD (降压侦测或重置电路) 工作电流总和必须小于 1微安,对于 Flash,RAM 越来越大及功能越来越多的低功耗 MCU 设计厂商而言,是十分艰巨的挑战。
平均功耗 在系统级要兼顾低功耗及高效能,必须考虑实际应用面的需求,例如无线环境感测器可能让 MCU 主时钟及 CPU 关闭,只开启低频时钟,定时唤醒周边电路进行侦测,当符合设定条件的事件发生时快速启动 CPU 进行处理,即使没有任何事件发生,也必须定时激活 CPU 维持无线感测器网路的连线。在遥控器的应用中,则可能完全将所有时钟源都关闭,当使用者按键时快速唤醒时钟源及 CPU 进行处理。另外,许多应用都会加入一个MCU作为主机处理器的辅助处理器,用于监控键盘或红外线输入、刷新显示器、控制主处理器电源以及智慧电池管理等任务。此时平均功耗比单纯的运行功耗或待机功耗更具指标性意义。 平均功耗由下列主要参数组合而成: 运行功耗及运行时间,静待功耗及待机时间,不同运行模式之间的切换时间。兹以下图进行说明: 平均电流 (I AVG)计算: 因为进入待机模式时间很短,忽略此段时间的电流消耗,公式可以简化为: 由以上公式观察到除了降低运行电流及静态待机电流外,降低运行时间、唤醒时间及高低速运行模式切换时间也是降低整机功耗的重要手段。另外,上图同时指出,低功耗 MCU 支援动态切换运行时钟频率是必要的功能。
低功耗 MCU 设计考量 制程选择 为了达到低功耗的运作,并能有效地在低耗电待机模式下,达到极低的待机功耗,可以透过对制程的选择而站上基本的要求门槛。在不强调速度极致的某些制程分类,选择极低元件截止电流制程(如下图)进行逻辑闸制作,并进行数位设计是方法之一。选择这种策略的额外效益是,通常也能在降低动态操作电流上,达到较佳的表现。另外,由于高温大幅增加静态电流,当温度由摄氏25度增加到摄氏 85度时,一个典型比例约增加 10 倍的静态电流,以非低功耗 0.18 微米制程开发的 32 位元 MCU,逻辑阀门数 200K、4KB SRAM 在核心电压 1.8V、摄氏25度的静态耗电约为 5 ~ 10 微安,当温度升高到摄氏 85度时,静待电流将会飙高到 50 ~100 微安。而低功耗制程在摄氏85度仅约 10微安静态电流。
低功耗高效能的 CPU内核
早期低功耗 MCU 受限于成本及制程技术,大都选择 8 位元 CPU 内核,但随着工业上的智能化也在展开,如远端监控,数位化、网路化等。简单说来,就是人物之连结(云端应用)、物物之连结(物联网) 需求越来越多,导致产品功能越来越复杂,运算量越来越高,8 位元 MCU 已逐渐无法满足效能需求。 为了兼顾低功耗高效能,选择适用的 32 位元 CPU 内核乃大势所趋。 选择低功耗CPU 内核,除了单位频率耗电流外,还需要综合考量紧凑的低**体代码,相同功能所需的代码越长,除了增加**体成本,也代表更长的运行时间及功耗。另外,由于软件开发成本在后期将会越来越高,大量的参考代码及更多的第三方开发商的支持,都可以有效降低软件的开发时间及成本。所以选择一款更多人使用的 CPU 内核也是重要的考量之一ARM Cortex-M0阀门数仅 27K,使用的电量在 1.8V,超低泄漏 180ULL (Ultra LowLeakage) 仅约50μA/MHz。M0 内核采用Thumb2指令集架构,产生出非常紧凑的低**体代码,进一步降低了电源需求。ARM自 2009 年发表了32位元Cortex-M0内核以来,包括 NXP、新唐科技、ST、Freescale等多家国内外 MCU 大厂相继投入Cortex-M0 MCU 开发,不论供货或者品种的齐全度都已十分成熟,投入Cortex-M0的 MCU 开发商也在持续增加中。 低功耗数位电路 对于一般的同步数位电路设计,要使数位单元有效降低操作电流,透过控制时钟的频率或截止不需要的时钟跳动,也是重要的方法。低功耗MCU通常配备丰富的时钟控制单元,可对各别的数位周边单元,依照需求做降频或升频的操作调整,在达到运作能力的同时,用最低的频率来运行。但为了达到更弹性的时钟源配置,可能导致 CPU 内核和周边电路时钟不同步的现象,此时必须仔细考虑电路设计,保证跨时钟领域资料存取的正确性。 另外为了尽量降低 CPU介入处理时间或降低 CPU 工作频率而节省下来的功耗,可以提供 DMA 或周边电路相互触发电路进行资料的传递,例如Timer 定时自动触发 ADC 或 DAC,并透过 DMA 进行资料由 ADC 到 RAM 或者 RAM 到 DAC 的搬移,同时在 ADC 的输入可以增加简单的数字绿波及平滑化电路,如此不须要 CPU 经常介入处理,也不会因为需要即时处理 ADC 或 DAC 事件导致中断程序占用太多时间,降低系统的实时性及稳定性。 支援多种工作模式 为了配合不同的应用需求,并达到系统平均功耗的最小化,低功耗 MCU需要提供多种操作模式,让使用者灵活调配应用,常见的操作模式有下列数种: 正常运行模式:CPU 内核及周边正常工作,能即时改变 CPU 及周边的工作频率 (On the Fly) 或关闭不需要的时钟源以获得最佳的工作效能。 低频工作模式:CPU 内核及周边工作于低频的时钟源,例如 32.768K 晶震或内部低频 10K RC 震荡器。通常此时最大的耗电来源为嵌入式闪存及 LDO 本身的耗电流。如果此时的执行程序不大,可以考虑将程序运作于 RAM 以降低平均功耗。请注意并不是所有 MCU 都能支援在RAM 执行程序。 Idle 模式:CPU 内核停止,时钟源和被致能的周边电路持续工作,直到周边电路符合设定条件唤醒 CPU 进行资料处理或控制执行流程。通常高频的运行模式,CPU 及嵌入式快闪**体消耗相当大比例的电流,故 Idle 模式能有效降低平均功耗。 待机RAM 保持模式:CPU 内核及所有时钟源关闭,内建LDO 切换到低耗电模式,但是RAM 及 IO 管脚持续供电,维持进入待机之前的状态。 RTC 模式:CPU 内核及高频时钟源关闭,内建LDO 切换到低耗电模式,由于此时 LDO 供电能力降低,仅能提供低耗电的周边电路运行,例如 32.768K 晶振、RTC (实时时钟计数器)、BOD (降压侦测或重置电路)、TN 单色LCD 直接驱动电路等。 深层待机模式:CPU 内核及所有时钟源关闭,关闭 RAM 及LDO、BOD 等所有周边电路的电源,仅IO 管脚(或部分IO管脚)持续供电,由IO管脚或重置 (Reset) 管脚唤醒 CPU。因为此模式下,RAM 的资料已丢失,通常会进行内部电源切割,提供数十个状态记录暂存器作为系统重启时的初始状态参考源。此模式的优点是更低的静态电流,通常仅需 100nA ~ 500nA,其缺点是并非所有的应用都可以忍受 RAM 资料丢失及系统重启。
电源系统的考量 在多电源系统的应用上,必须考虑低功耗 MCU 的内部电源规划或自动切换,以下以市电/备用电池双电源系统及内建 USB 介面,但平常由电池供电的行动装置来举例说明。 市电/备用电池双电源系统:MCU 平常由市电经由交直流转换电路供电,当市电断电时,经由连接在备用电源的独立供电管脚进行供电,同时在 MCU 内部进行电源切割,并提供一个可靠的备用电源自动切换开关,确保市电正常供电时备用电池不会持续被消耗。但仔细考虑,其实有两种状况可能发生,一种是备用电池仅供电给部分低耗电的周边电路,例如 32.768K 晶振、RTC 时钟电路、资料备份寄存器等。当市电来时 MCU 将重新启动。另外一种状况是当市电断电时,有可能 MCU 及部分周边电路会被唤醒工作,然后再次进入待机模式。智慧型电表就是此类应用的典型代表。在此种应用中,备用电池需要供电给整颗 MCU,所以电源自动切换开关必须能承受更高的电流,相对成本也较高。 内建 USB 介面行动装置:此类装置平时由两节电池供电或锂电池供电,工作电压可能为 2.2V 到 3V,当连接到 USB 时,USB介面转由 VBUS 供电。此类低功耗 MCU 如果没有内建 5V 转 3V 的 USB 介面 LDO将会产生下列问题,当连接 USB 时必须由外挂的 LDO 将 USB VBUS 的 5V 电源转换为 3V 电源同时提供给 MCU VDD及 USB 介面电路,但又必须避免 LDO 输出的 3V 电源与离线操作时的电池电源发生冲突,将会需要外加电源管理电路,增加系统成本及复杂度。 丰富的唤醒机制及快速唤醒时间 有许多的系统应用场合,需要由外部的单一讯号、键盘或甚至串列通讯信号来激发 MCU 启动整体系统的运作。在未被激发的时候,微控器或甚至大部分的整机需要处于最低耗电的待机状态,以延长电池的寿命。能够在各式需求下被唤醒,也成为微控器的重要特征。MCU 能拥有各式不同的唤醒方式,包括各I/O 可作为激发唤醒的通道,或是由I2C、UART、SPI的通道作为被外界元件触发唤醒,或使用内、外部的超低耗电时钟源,透过 Timer 来计时唤醒。诸多的唤醒机制,只要运用得当,并配合微控器的低耗电操作切换模式,可以使 MCU 几乎时时处于极低功耗的状况。 配有快速、高效率内核的 MCU,可以在每次唤醒的当下短暂时间里,完成应有的运作与反应,并再次进入深层的低待机模式,以此达到平均耗能下降的目的。但是,如果唤醒后开始执行微指令的时间因为某些因素而拖延的很长,将会使降低总体耗电的目标大打折扣,甚至达不到系统反应的要求。因此,有些 MCU,配合起振时间的改进,逻辑设计的配合,使得唤醒后执行指令的时间至少降到数个微秒之内。 结论 低功耗MCU设计是一个需要多面向考虑的复杂工作,本文仅阐述基本设计理念。开发低功耗MCU产品时,不只要挑战电路设计的高困难度,更要由客户应用的角度考虑性价比,功能最强的不一定是最好的。往往性价比最适合的才能在市场上取得成功。由于智能电网、物联网、远端控制、自动化管理等低功耗高效能应用需求量持续增加,在可以预见的未来,32位元低功耗MCU将逐渐取代8/16位元低功耗MCU,成为市场主流。
|