低功耗MCU设计考虑
3.1 工艺选择
为了达到低功耗的运作,并能有效地在低耗电待机模式下达到极低的待机功耗,可以通过对工艺的选择而达到基本的要求门槛。在不强调速度极致的某些工艺分类,选择极低组件截止电流工艺(如下图)进行逻辑门制作,并进行数字设计是方法之一。选择这种策略的额外效益是,通常也能在降低动态工作电流上,达到较好的表现。另外,由于高温大幅增加静态电流,当温度由摄氏25度增加到摄氏85度时,一个典型比例约增加10倍的静态电流,以非低功耗0.18微米工艺开发的32位MCU,逻辑门数200K、4KB SRAM在核心电压1.8V、摄氏25度的静态耗电约为5~10微安,当温度升高到摄氏85度时,静态待机电流将会飙升到50~100微安。而低功耗工艺在摄氏85度仅约10微安静态电流。
3.2 低功耗高性能的CPU内核
早期低功耗MCU受限于成本及工艺技术,大都选择8位CPU内核,但随着工业上的智能化也在展开,如远程监控,数字化、网络化等。简单说来,就是人物连接(云端应用)、物物连接(物联网)的需求越来越多,导致产品功能越来越复杂,计算量越来越高,8位MCU已逐渐无法满足性能需求。为了兼顾低功耗高性能,选择适用的32位CPU内核是大势所趋。
选择低功耗CPU内核,除了单位频率耗电流外,还需要综合考虑紧凑的低内存代码,相同功能所需的代码越长,除了增加内存成本,也代表更长的运行时间及功耗。另外,由于软件开发成本在后期将会越来越高,大量的参考代码及更多的第三方开发商的支持,都可以有效降低软件的开发时间及成本。所以选择一款更多人使用的CPU内核也是重要的考虑之一,ARM Cortex-M0逻辑门数仅27K,使用的电量在1.8V,超低泄漏180ULL (Ultra Low Leakage)仅约50μA/MHz。M0内核采用Thumb2指令集架构,产生出非常紧凑的低内存代码,进一步降低了电源需求。ARM自2009年发表了32位Cortex-M0内核以来,包括NXP、新唐科技、ST、Freescale等多家国内外MCU大厂相继投入Cortex-M0 MCU开发,不论供货或者品种的齐全度都已十分成熟,投入Cortex-M0的MCU开发商也在持续增加中。
3.3 低功耗数字电路
对于一般的同步数字电路设计,要使数字单元有效降低工作电流,通过控制时钟的频率或截止不需要的时钟跳动,也是重要的方法。低功耗MCU通常配备丰富的时钟控制单元,可对个别的数字外设单元依照需求做降频或升频的工作调整,在达到工作能力的同时,用最低的频率来运行。但为了达到更弹性的时钟源配置,可能导致CPU内核和外围电路时钟不同步的现象,此时必须仔细考虑电路设计,保证跨时钟领域数据存取的正确性。
另外,为了尽量降低CPU介入处理的时间或降低CPU工作频率而节省下来的功耗,可以提供DMA或外围电路相互触发电路进行数据的传递,例如Timer定时自动触发ADC或DAC,并通过DMA进行数据由ADC到RAM或者RAM到DAC的搬移,同时在ADC的输入可以增加简单的数字滤波及平滑化电路,这样可不需要CPU经常介入处理,也不会因为需要实时处理ADC或DAC事件导致中断程序占用太多时间,降低系统的实时性及稳定性。
3.4 支持多种工作模式
为了配合不同的应用需求,并达到系统平均功耗的最小化,低功耗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数据丢失及系统重启。
3.5 电源系统的考虑
在多电源系统的应用上,必须考虑低功耗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电源与脱机工作时的电池电源发生冲突,将会需要外加电源管理电路,增加系统成本及复杂度。
3.6 丰富的唤醒机制及快速唤醒时间
有许多的系统应用场合,需要由外部的单一信号、键盘或甚至串行通信信号来激发MCU启动整体系统的运作。在未被激发的时候,微控制器或甚至大部分的整机需要处于最低耗电的待机状态,以延长电池的寿命。能够在各种需求下被唤醒,也成为微控制器的重要特征。MCU能拥有各式不同的唤醒方式,包括各I/O可作为激发唤醒的通道,或是由I2C、UART、SPI的信道作为被外界组件触发唤醒,或使用内、外部的超低耗电时钟源,通过Timer来计时唤醒。诸多的唤醒机制,只要运用得当,并配合微控制器的低功耗工作切换模式,可以使MCU几乎时时处于极低功耗的状况。
配有快速、高效率内核的MCU,可以在每次唤醒的当下短暂时间里,完成应有的工作与反应,并再次进入深层的低待机模式,以此达到平均耗能下降的目的。但是,如果唤醒后开始执行微指令的时间因为某些因素而拖延得很长,将会使降低总体耗电的目标大打折扣,甚至达不到系统反应的要求。因此,有些MCU,配合起振时间的改进,逻辑设计的配合,使得唤醒后执行指令的时间至少降到数个微秒之内。
3.7 低功耗模拟外设及内存
低功耗MCU在运行时除了CPU内核及被使能的数字外围电路在工作外,越来越多被集成到内部的模拟外围电路也是耗电的主要来源。以最简单的while (1);执行语句来分析运行功耗,共包含下列耗电来源:CPU内核、时钟振荡器、嵌入式闪存内存、及LDO本身的消耗电流。代入以下典型值数据将会更清楚显示各个部分对耗电的影响:
● 工作频率12MHz,MCU电压3V,LDO输出1.8V供给CPU内核、内存及其他数字电路
● 低功耗Cortex-M0内核:600μA
● 嵌入式闪存内存:1.5mA
● 低功耗12MHz晶振电路:230μA
● LDO本身的静态消耗电流:70μA
● 总和 = 0.6 + 2 + 0.23 + 0.07 = 2.4mA,平均功耗约200μA/MHz
其中耗电比例最高的是嵌入式闪存内存。如果要工作在更高频率,通常会启动内置的PLL提供更高频率的时钟源,在1.8V供电的典型PLL,12MHz输入输出48MHz工作电流约为1~2mA,如果不能有效降低PLL耗电,对高频工作的低功耗MCU将是一大电流负担。
LDO的最低静态功耗、32.768kHz晶振电路、BOD及TN LCD驱动电路的工作电流,都会大大影响到待机或RTC模式的功耗指针。以低功耗应用的热能表为例,RTC加LCD显示的功耗要求在3V/8μA以下,这代表可以预估分配给下列电路的电流预算为:LDO静态功耗0.5μA + 32.768kHz晶振及RTC电路1μA + BOD 1μA + TN LCD驱动4μA + LCD玻璃1μA + 所有数字电路及模拟外设漏电流0.5μA。这些模拟外设除了低耗电要求,同时必须兼具要求批量生产及温度变化时的一致性,这对模拟设计人员将是一大挑战。
快速唤醒这个性能指针也会影响到下列模拟外设的稳定时间。当MCU从低耗电的待机模式唤醒时,首先要将LDO快速切换到高供电模式,启动内部高速RC振荡器,使能嵌入式闪存及CPU,以上所有电路的稳定时间总和必须在数个微秒内完成,才能符合快速唤醒的需求。
另外一个容易被忽略的设计是外围电路启动电流,因为相当多的便携设备采用CR2032小型锂电池,瞬间推动力仅有数mA,尤其使用一段时间瞬间推动力会更低,当MCU被唤醒时果外围电路启动电流总和太大时,将会导致CR2032输出电压骤降而导致MCU重置(Reset)或工作不正常。为了避免此问题,除了降低外围电路的启动电流,另一种方法是分时分段启动外围电路,不要集中开启太多耗电的电路。
低功耗MCU设计考虑
3.1 工艺选择
为了达到低功耗的运作,并能有效地在低耗电待机模式下达到极低的待机功耗,可以通过对工艺的选择而达到基本的要求门槛。在不强调速度极致的某些工艺分类,选择极低组件截止电流工艺(如下图)进行逻辑门制作,并进行数字设计是方法之一。选择这种策略的额外效益是,通常也能在降低动态工作电流上,达到较好的表现。另外,由于高温大幅增加静态电流,当温度由摄氏25度增加到摄氏85度时,一个典型比例约增加10倍的静态电流,以非低功耗0.18微米工艺开发的32位MCU,逻辑门数200K、4KB SRAM在核心电压1.8V、摄氏25度的静态耗电约为5~10微安,当温度升高到摄氏85度时,静态待机电流将会飙升到50~100微安。而低功耗工艺在摄氏85度仅约10微安静态电流。
3.2 低功耗高性能的CPU内核
早期低功耗MCU受限于成本及工艺技术,大都选择8位CPU内核,但随着工业上的智能化也在展开,如远程监控,数字化、网络化等。简单说来,就是人物连接(云端应用)、物物连接(物联网)的需求越来越多,导致产品功能越来越复杂,计算量越来越高,8位MCU已逐渐无法满足性能需求。为了兼顾低功耗高性能,选择适用的32位CPU内核是大势所趋。
选择低功耗CPU内核,除了单位频率耗电流外,还需要综合考虑紧凑的低内存代码,相同功能所需的代码越长,除了增加内存成本,也代表更长的运行时间及功耗。另外,由于软件开发成本在后期将会越来越高,大量的参考代码及更多的第三方开发商的支持,都可以有效降低软件的开发时间及成本。所以选择一款更多人使用的CPU内核也是重要的考虑之一,ARM Cortex-M0逻辑门数仅27K,使用的电量在1.8V,超低泄漏180ULL (Ultra Low Leakage)仅约50μA/MHz。M0内核采用Thumb2指令集架构,产生出非常紧凑的低内存代码,进一步降低了电源需求。ARM自2009年发表了32位Cortex-M0内核以来,包括NXP、新唐科技、ST、Freescale等多家国内外MCU大厂相继投入Cortex-M0 MCU开发,不论供货或者品种的齐全度都已十分成熟,投入Cortex-M0的MCU开发商也在持续增加中。
3.3 低功耗数字电路
对于一般的同步数字电路设计,要使数字单元有效降低工作电流,通过控制时钟的频率或截止不需要的时钟跳动,也是重要的方法。低功耗MCU通常配备丰富的时钟控制单元,可对个别的数字外设单元依照需求做降频或升频的工作调整,在达到工作能力的同时,用最低的频率来运行。但为了达到更弹性的时钟源配置,可能导致CPU内核和外围电路时钟不同步的现象,此时必须仔细考虑电路设计,保证跨时钟领域数据存取的正确性。
另外,为了尽量降低CPU介入处理的时间或降低CPU工作频率而节省下来的功耗,可以提供DMA或外围电路相互触发电路进行数据的传递,例如Timer定时自动触发ADC或DAC,并通过DMA进行数据由ADC到RAM或者RAM到DAC的搬移,同时在ADC的输入可以增加简单的数字滤波及平滑化电路,这样可不需要CPU经常介入处理,也不会因为需要实时处理ADC或DAC事件导致中断程序占用太多时间,降低系统的实时性及稳定性。
3.4 支持多种工作模式
为了配合不同的应用需求,并达到系统平均功耗的最小化,低功耗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数据丢失及系统重启。
3.5 电源系统的考虑
在多电源系统的应用上,必须考虑低功耗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电源与脱机工作时的电池电源发生冲突,将会需要外加电源管理电路,增加系统成本及复杂度。
3.6 丰富的唤醒机制及快速唤醒时间
有许多的系统应用场合,需要由外部的单一信号、键盘或甚至串行通信信号来激发MCU启动整体系统的运作。在未被激发的时候,微控制器或甚至大部分的整机需要处于最低耗电的待机状态,以延长电池的寿命。能够在各种需求下被唤醒,也成为微控制器的重要特征。MCU能拥有各式不同的唤醒方式,包括各I/O可作为激发唤醒的通道,或是由I2C、UART、SPI的信道作为被外界组件触发唤醒,或使用内、外部的超低耗电时钟源,通过Timer来计时唤醒。诸多的唤醒机制,只要运用得当,并配合微控制器的低功耗工作切换模式,可以使MCU几乎时时处于极低功耗的状况。
配有快速、高效率内核的MCU,可以在每次唤醒的当下短暂时间里,完成应有的工作与反应,并再次进入深层的低待机模式,以此达到平均耗能下降的目的。但是,如果唤醒后开始执行微指令的时间因为某些因素而拖延得很长,将会使降低总体耗电的目标大打折扣,甚至达不到系统反应的要求。因此,有些MCU,配合起振时间的改进,逻辑设计的配合,使得唤醒后执行指令的时间至少降到数个微秒之内。
3.7 低功耗模拟外设及内存
低功耗MCU在运行时除了CPU内核及被使能的数字外围电路在工作外,越来越多被集成到内部的模拟外围电路也是耗电的主要来源。以最简单的while (1);执行语句来分析运行功耗,共包含下列耗电来源:CPU内核、时钟振荡器、嵌入式闪存内存、及LDO本身的消耗电流。代入以下典型值数据将会更清楚显示各个部分对耗电的影响:
● 工作频率12MHz,MCU电压3V,LDO输出1.8V供给CPU内核、内存及其他数字电路
● 低功耗Cortex-M0内核:600μA
● 嵌入式闪存内存:1.5mA
● 低功耗12MHz晶振电路:230μA
● LDO本身的静态消耗电流:70μA
● 总和 = 0.6 + 2 + 0.23 + 0.07 = 2.4mA,平均功耗约200μA/MHz
其中耗电比例最高的是嵌入式闪存内存。如果要工作在更高频率,通常会启动内置的PLL提供更高频率的时钟源,在1.8V供电的典型PLL,12MHz输入输出48MHz工作电流约为1~2mA,如果不能有效降低PLL耗电,对高频工作的低功耗MCU将是一大电流负担。
LDO的最低静态功耗、32.768kHz晶振电路、BOD及TN LCD驱动电路的工作电流,都会大大影响到待机或RTC模式的功耗指针。以低功耗应用的热能表为例,RTC加LCD显示的功耗要求在3V/8μA以下,这代表可以预估分配给下列电路的电流预算为:LDO静态功耗0.5μA + 32.768kHz晶振及RTC电路1μA + BOD 1μA + TN LCD驱动4μA + LCD玻璃1μA + 所有数字电路及模拟外设漏电流0.5μA。这些模拟外设除了低耗电要求,同时必须兼具要求批量生产及温度变化时的一致性,这对模拟设计人员将是一大挑战。
快速唤醒这个性能指针也会影响到下列模拟外设的稳定时间。当MCU从低耗电的待机模式唤醒时,首先要将LDO快速切换到高供电模式,启动内部高速RC振荡器,使能嵌入式闪存及CPU,以上所有电路的稳定时间总和必须在数个微秒内完成,才能符合快速唤醒的需求。
另外一个容易被忽略的设计是外围电路启动电流,因为相当多的便携设备采用CR2032小型锂电池,瞬间推动力仅有数mA,尤其使用一段时间瞬间推动力会更低,当MCU被唤醒时果外围电路启动电流总和太大时,将会导致CR2032输出电压骤降而导致MCU重置(Reset)或工作不正常。为了避免此问题,除了降低外围电路的启动电流,另一种方法是分时分段启动外围电路,不要集中开启太多耗电的电路。
举报