MCU功耗來自何處
在開始討論低功耗MCU設(shè)計前,必須先探討MCU功耗的來源,其主要由靜態(tài)功耗及運行功耗兩部分組成??紤]實際的應(yīng)用,最后決定系統(tǒng)功耗性能指針則必須計算平均功耗。
運行功耗
現(xiàn)代 MCU 已整合相當(dāng)多的的模擬外圍,不能單純考慮數(shù)字電路的動態(tài)功耗。MCU 運行時的總功耗由模擬外圍功耗和數(shù)字外圍的動態(tài)功耗相加而得。模擬電路的功耗通常由工作電壓及其性能要求指針來決定,例如 100 ns 傳遞延遲 (Propogation Delay) 的比較器工作電流可能約為 40 微安,當(dāng)允許傳遞延遲規(guī)格為 1 μs 時,工作電流有機會降到個位數(shù)微安。
數(shù)字電路的動態(tài)功耗主要來自開關(guān)頻率、電壓及等效負(fù)載電容,其計算公式如下:
PDynamic (動態(tài)功耗) ~ f (工作頻率) x CL (等效負(fù)載電容) x VDD2 (工作電壓)
由以上公式可以理解到降低動態(tài)功耗最直接的方式為降低工作電壓及工作頻率。但 MCU 實際應(yīng)用面通常要求更寬廣的工作電壓及更高的效能。在降低工作電壓方面,可以選擇更新近的制程,并透過 LDO 讓 CPU 內(nèi)核、數(shù)字電路及與管腳輸出入電壓無關(guān)的模擬外圍在低壓操作,IO 管腳及需要與其他外部電路連接的模擬外圍則在較高的系統(tǒng)電壓操作。如此可以兼顧低功耗及寬工作電壓的需求。在降低工作頻率這項參數(shù)上,一個設(shè)計優(yōu)良的 32 位 MCU更能突顯其效能優(yōu)勢,除了直覺的 MIPS 比較之外,32 位總線也代表更高的數(shù)據(jù)存取帶寬,能以更低的工作頻率達(dá)到相同的效能,進(jìn)而降低整體功耗。另外,如果 MCU 內(nèi)建與操作頻率相關(guān)的模擬外圍,例如石英晶體震蕩電路、嵌入式閃存或電流式 DAC,其電流消耗與轉(zhuǎn)換頻率成正比,也要納入低功耗 MCU 的動態(tài)功耗設(shè)計考慮。
靜態(tài)功耗
傳統(tǒng)靜態(tài)功耗的定義是指系統(tǒng)時鐘源關(guān)閉時數(shù)字電路的漏電流。但是在混合信號低功耗 MCU 的設(shè)計中要同時考慮下列多種漏電流來源,包含數(shù)字電路漏電流、SRAM 漏電流、待機時已關(guān)閉的仿真電路漏電流 (例如 ADC,嵌入式閃存)、待機時不關(guān)閉的仿真電路工作電流 (例如 LDO、BOD) 及 IO 管腳的漏電流。因為時鐘源已關(guān)閉,影響靜態(tài)功耗的主要參數(shù)為制程、電壓及溫度。所以降低靜態(tài)功耗必須選擇超低功耗制程,但是低功耗制程通常伴隨較高的 Vt,導(dǎo)致低電壓模擬外圍設(shè)計困難。另外,以MCU待機電流 1微安的規(guī)格,代表數(shù)字電路漏電 + RAM 保持電流 + LDO 工作電流 + BOD (降壓偵測或重置電路) 工作電流總和必須小于 1微安,對于 Flash,RAM 越來越大及功能越來越多的低功耗 MCU 設(shè)計廠商而言,是十分艱巨的挑戰(zhàn)。
平均功耗
在系統(tǒng)級要兼顧低功耗及高效能,必須考慮實際應(yīng)用面的需求,例如無線環(huán)境傳感器可能讓 MCU 主時鐘及 CPU 關(guān)閉,只開啟低頻時鐘,定時喚醒外圍電路進(jìn)行偵測,當(dāng)符合設(shè)定條件的事件發(fā)生時快速啟動 CPU 進(jìn)行處理,即使沒有任何事件發(fā)生,也必須定時激活 CPU 維持無線傳感器網(wǎng)絡(luò)的聯(lián)機。在遙控器的應(yīng)用中,則可能完全將所有時鐘源都關(guān)閉,當(dāng)用戶按鍵時快速喚醒時鐘源及 CPU 進(jìn)行處理。另外,許多應(yīng)用都會加入一個 MCU 作為主機處理器的協(xié)處理器,用于監(jiān)控鍵盤或紅外線輸入、刷新顯示器、控制主處理器電源以及智能電池管理等任務(wù)。此時平均功耗比單純的運行功耗或待機功耗更具指標(biāo)性意義。
平均功耗由下列主要參數(shù)組合而成: 運行功耗及運行時間,靜待功耗及待機時間,不同運行模式之間的切換時間。茲以下圖進(jìn)行說明:
平均電流 (IAVG) =(I1 x T1+I2 x T2+I3 x T3+I4 x T4+I5 x T5+I6 x T6)/(T1+T2+T3+T4+T5+T6)
因為進(jìn)入待機模式時間很短,忽略此段時間的電流消耗,公式可以簡化為:
均電流 (IAVG) =(I1 x T1+I3 x T3+I4 x T4+I5 x T5+I6 x T6)/(T1+T3+T4+T5+T6)
由以上公式觀察到除了降低運行電流及靜態(tài)待機電流外,降低運行時間、喚醒時間及高低速運行模式切換時間也是降低整機功耗的重要手段。另外,上圖同時指出,低功耗 MCU 支持動態(tài)切換運行時鐘頻率是必要的功能。
低功耗 MCU 設(shè)計考慮
制程選擇
為了達(dá)到低功耗的運作,并能有效地在低耗電待機模式下,達(dá)到極低的待機功耗,可以透過對制程的選擇而站上基本的要求門坎。在不強調(diào)速度極致的某些制程分類,選擇極低組件截止電流制程 (如下圖) 進(jìn)行邏輯閘制作,并進(jìn)行數(shù)字設(shè)計是方法之一。選擇這種策略的額外效益是,通常也能在降低動態(tài)操作電流上,達(dá)到較佳的表現(xiàn)。 另外,由于高溫大幅增加靜態(tài)電流,當(dāng)溫度由攝氏 25度增加到攝氏 85度時,一個典型比例約增加 10 倍的靜態(tài)電流,以非低功耗 0.18 微米制程開發(fā)的 32 位 MCU,邏輯閥門數(shù) 200K、4KB SRAM 在核心電壓 1.8V、攝氏25度的靜態(tài)耗電約為 5 ~ 10 微安,當(dāng)溫度升高到攝氏 85度時,靜待電流將會飆高到 50 ~100 微安。而低功耗制程在攝氏85度僅約 10微安靜態(tài)電流。
低功耗高效能的 CPU 內(nèi)核
早期低功耗 MCU 受限于成本及制程技術(shù),大都選擇 8 位 CPU 內(nèi)核,但隨著工業(yè)上的智能化也在展開,如遠(yuǎn)程監(jiān)控,數(shù)字化、網(wǎng)絡(luò)化等。簡單說來,就是人物之連結(jié) (云端應(yīng)用)、物物之連結(jié) (物聯(lián)網(wǎng)) 需求越來越多,導(dǎo)致產(chǎn)品功能越來越復(fù)雜,運算量越來越高,8 位 MCU 已逐漸無法滿足效能需求。 為了兼顧低功耗高效能,選擇適用的 32 位 CPU 內(nèi)核乃大勢所趨。
選擇低功耗 CPU 內(nèi)核,除了單位頻率耗電流外,還需要綜合考慮緊湊的低內(nèi)存代碼,相同功能所需的代碼越長,除了增加內(nèi)存成本,也代表更長的運行時間及功耗。另外,由于軟件開發(fā)成本在后期將會越來越高,大量的參考代碼及更多的第三方開發(fā)商的支持,都可以有效降低軟件的開發(fā)時間及成本。所以選擇一款更多人使用的 CPU 內(nèi)核也是重要的考慮之一ARM CortexTM-M0 閥門數(shù)僅 27K,使用的電量在 1.8V,超低泄漏 180ULL (Ultra Low Leakage) 僅約 50μA/MHz.M0 內(nèi)核采用 Thumb2 指令集架構(gòu),產(chǎn)生出非常緊湊的低內(nèi)存代碼,進(jìn)一步降低了電源需求。ARM 自 2009 年發(fā)表了 32 位 CortexTM-M0 內(nèi)核以來,包括 NXP、新唐科技、ST、Freescale 等多家國內(nèi)外 MCU 大廠相繼投入 CortexTM-M0 MCU 開發(fā),不論供貨或者品種的齊全度都已十分成熟,投入 CortexTM-M0 的 MCU 開發(fā)商也在持續(xù)增加中。
低功耗數(shù)字電路
對于一般的同步數(shù)字電路設(shè)計,要使數(shù)字單元有效降低操作電流,透過控制時鐘的頻率或截止不需要的時鐘跳動,也是重要的方法。低功耗MCU通常配備豐富的時鐘控制單元,可對各別的數(shù)字外圍單元,依照需求做降頻或升頻的操作調(diào)整,在達(dá)到運作能力的同時,用最低的頻率來運行。但為了達(dá)到更彈性的時鐘源配置,可能導(dǎo)致 CPU 內(nèi)核和外圍電路時鐘不同步的現(xiàn)象,此時必須仔細(xì)考慮電路設(shè)計,保證跨時鐘領(lǐng)域數(shù)據(jù)存取的正確性。
另外為了盡量降低 CPU 介入處理時間或降低 CPU 工作頻率而節(jié)省下來的功耗,可以提供 DMA 或外圍電路相互觸發(fā)電路進(jìn)行數(shù)據(jù)的傳遞,例如 Timer 定時自動觸發(fā) ADC 或 DAC,并透過 DMA 進(jìn)行數(shù)據(jù)由 ADC 到 RAM 或者 RAM 到 DAC 的搬移,同時在 ADC 的輸入可以增加簡單的數(shù)字綠波及平滑化電路,如此不須要 CPU 經(jīng)常介入處理,也不會因為需要實時處理 ADC 或 DAC 事件導(dǎo)致中斷程序占用太多時間,降低系統(tǒng)的實時性及穩(wěn)定性。
支持多種工作模式
為了配合不同的應(yīng)用需求,并達(dá)到系統(tǒng)平均功耗的最小化,低功耗 MCU需要提供多種操作模式,讓用戶靈活調(diào)配應(yīng)用,常見的操作模式有下列數(shù)種:
正常運行模式:CPU 內(nèi)核及外圍正常工作,能實時改變 CPU 及外圍的工作頻率 (On the Fly) 或關(guān)閉不需要的時鐘源以獲得最佳的工作效能。
低頻工作模式:CPU 內(nèi)核及外圍工作于低頻的時鐘源,例如 32.768K 晶震或內(nèi)部低頻 10K RC 震蕩器。通常此時最大的耗電來源為嵌入式閃存及 LDO 本身的耗電流。如果此時的執(zhí)行程序不大,可以考慮將程序運作于 RAM 以降低平均功耗。請注意并不是所有 MCU 都能支持在 RAM 執(zhí)行程序。
Idle 模式:CPU 內(nèi)核停止,時鐘源和被致能的外圍電路持續(xù)工作,直到外圍電路符合設(shè)定條件喚醒 CPU 進(jìn)行數(shù)據(jù)處理或控制執(zhí)行流程。通常高頻的運行模式,CPU 及嵌入式閃存消耗相當(dāng)大比例的電流,故 Idle 模式能有效降低平均功耗。[!--empirenews.page--]
待機RAM 保持模式:CPU 內(nèi)核及所有時鐘源關(guān)閉,內(nèi)建LDO 切換到低耗電模式,但是RAM 及 IO 管腳持續(xù)供電,維持進(jìn)入待機之前的狀態(tài)。
RTC 模式:CPU 內(nèi)核及高頻時鐘源關(guān)閉,內(nèi)建LDO 切換到低耗電模式,由于此時 LDO 供電能力降低,僅能提供低耗電的外圍電路運行,例如 32.768K 晶振、RTC (實時時鐘計數(shù)器)、BOD (降壓偵測或重置電路)、TN 單色LCD 直接驅(qū)動電路等。
深層待機模式:CPU 內(nèi)核及所有時鐘源關(guān)閉,關(guān)閉 RAM 及LDO、BOD 等所有外圍電路的電源,僅IO 管腳(或部分IO管腳)持續(xù)供電,由IO管腳或重置 (Reset) 管腳喚醒 CPU.因為此模式下,RAM 的數(shù)據(jù)已丟失,通常會進(jìn)行內(nèi)部電源切割,提供數(shù)十個狀態(tài)記錄緩存器作為系統(tǒng)重啟時的初始狀態(tài)參考源。此模式的優(yōu)點是更低的靜態(tài)電流,通常僅需 100nA ~ 500nA,其缺點是并非所有的應(yīng)用都可以忍受 RAM 數(shù)據(jù)丟失及系統(tǒng)重啟。
電源系統(tǒng)的考慮
在多電源系統(tǒng)的應(yīng)用上,必須考慮低功耗 MCU 的內(nèi)部電源規(guī)劃或自動切換,以下以市電/備用電池雙電源系統(tǒng)及內(nèi)建 USB 接口,但平常由電池供電的行動裝置來舉例說明。
市電/備用電池雙電源系統(tǒng):MCU 平常由市電經(jīng)由交直流轉(zhuǎn)換電路供電,當(dāng)市電斷電時,經(jīng)由連接在備用電源的獨立供電管腳進(jìn)行供電,同時在 MCU 內(nèi)部進(jìn)行電源切割,并提供一個可靠的備用電源自動切換開關(guān),確保市電正常供電時備用電池不會持續(xù)被消耗。但仔細(xì)考慮,其實有兩種狀況可能發(fā)生,一種是備用電池僅供電給部分低耗電的外圍電路,例如 32.768K 晶振、RTC 時鐘電路、數(shù)據(jù)備份寄存器等。當(dāng)市電來時 MCU 將重新啟動。另外一種狀況是當(dāng)市電斷電時,有可能 MCU 及部分外圍電路會被喚醒工作,然后再次進(jìn)入待機模式。智能型電表就是此類應(yīng)用的典型代表。在此種應(yīng)用中,備用電池需要供電給整顆 MCU,所以電源自動切換開關(guān)必須能承受更高的電流,相對成本也較高。
內(nèi)建 USB 接口行動裝置:此類裝置平時由兩節(jié)電池供電或鋰電池供電,工作電壓可能為 2.2V 到 3V,當(dāng)連接到 USB 時,USB接口轉(zhuǎn)由 VBUS 供電。此類低功耗 MCU 如果沒有內(nèi)建 5V 轉(zhuǎn) 3V 的 USB 接口 LDO 將會產(chǎn)生下列問題,當(dāng)連接 USB 時必須由外掛的 LDO 將 USB VBUS 的 5V 電源轉(zhuǎn)換為 3V 電源同時提供給 MCU VDD 及 USB 接口電路,但又必須避免 LDO 輸出的 3V 電源與脫機操作時的電池電源發(fā)生沖突,將會需要外加電源管理電路,增加系統(tǒng)成本及復(fù)雜度。
豐富的喚醒機制及快速喚醒時間
有許多的系統(tǒng)應(yīng)用場合,需要由外部的單一訊號、鍵盤或甚至串行通訊信號來激發(fā) MCU 啟動整體系統(tǒng)的運作。在未被激發(fā)的時候,微控器或甚至大部分的整機需要處于最低耗電的待機狀態(tài),以延長電池的壽命。能夠在各式需求下被喚醒,也成為微控器的重要特征。MCU 能擁有各式不同的喚醒方式,包括各I/O 可作為激發(fā)喚醒的通道,或是由I2C、UART、SPI的信道作為被外界組件觸發(fā)喚醒,或使用內(nèi)、外部的超低耗電時鐘源,透過 Timer 來計時喚醒。諸多的喚醒機制,只要運用得當(dāng),并配合微控器的低耗電操作切換模式,可以使 MCU 幾乎時時處于極低功耗的狀況。
配有快速、高效率內(nèi)核的 MCU,可以在每次喚醒的當(dāng)下短暫時間里,完成應(yīng)有的運作與反應(yīng),并再次進(jìn)入深層的低待機模式,以此達(dá)到平均耗能下降的目的。但是,如果喚醒后開始執(zhí)行微指令的時間因為某些因素而拖延的很長,將會使降低總體耗電的目標(biāo)大打折扣,甚至達(dá)不到系統(tǒng)反應(yīng)的要求。因此,有些 MCU,配合起振時間的改進(jìn),邏輯設(shè)計的配合,使得喚醒后執(zhí)行指令的時間至少降到數(shù)個微秒之內(nèi)。
低功耗模擬外圍及內(nèi)存
低功耗 MCU 在運行時除了 CPU 內(nèi)核及被致能的數(shù)字外圍電路在工作外,越來越多被整合到內(nèi)部的模擬外圍電路也是耗電的主要來源。以最簡單的 while (1); 執(zhí)行序來分析運行功耗,共包含下列耗電來源: CPU 內(nèi)核、時鐘振蕩器、嵌入式閃存內(nèi)存、及 LDO 本身的消耗電流。代入以下典型值數(shù)據(jù)將會更清楚顯示各個部分對耗電的影響:
運行頻率 12MHz,MCU 電壓 3V,LDO 輸出 1.8V 供給 CPU 內(nèi)核、內(nèi)存及其他數(shù)字電路
低功耗 CortexTM-M0內(nèi)核:600 μA
嵌入式閃存內(nèi)存:1.5 mA
低功耗12MHz 晶震電路:230 μA
LDO本身的靜態(tài)消耗電流:70 μA
總和 = 0.6 + 2 + 0.23 + 0.07 = 2.4 mA,平均功耗約 200μA/MHz
其中耗電比例最高的是嵌入式閃存內(nèi)存。如果要運行在更高頻率,通常會啟動內(nèi)建的 PLL 提供更高頻率的時鐘源,在 1.8V 供電的典型 PLL,12MHz 輸入輸出 48 MHz工作電流約為 1 ~ 2mA,如果不能有效降低 PLL 耗電,對高頻工作的低功耗 MCU 將是一大電流負(fù)擔(dān)。
LDO 的最低靜態(tài)功耗、32.768 kHz 晶振電路、BOD 及 TN LCD 驅(qū)動電路的工作電流,都會大大影響到待機或 RTC 模式的功耗指針。以低功耗應(yīng)用的熱能表為例,RTC 加 LCD 顯示的功耗要求在 3V/8μA 以下,這代表可以預(yù)估分配給下列電路的電流預(yù)算為:LDO 靜態(tài)功耗 0.5μA + 32.768 kHz 晶振及RTC電路 1μA + BOD 1μA + TN LCD 驅(qū)動 4μA + LCD 玻璃 1μA + 所有數(shù)字電路及模擬外圍漏電流 0.5μA.這些模擬外圍除了低耗電要求,同時必須兼具要求批量生產(chǎn)及溫度變化時的一致性,這對模擬設(shè)計人員將是一大挑戰(zhàn)。
快速喚醒這個性能指針也會影響到下列模擬外圍的穩(wěn)定時間。當(dāng) MCU 從低耗電的待機模式喚醒時,首先要將 LDO 快速切換到高供電模式,啟動內(nèi)部高速 RC 震蕩器,使能嵌入式閃存及 CPU,以上所有電路的穩(wěn)定時間總和必須在數(shù)個微秒內(nèi)完成,才能符合快速喚醒的需求。
另外一個容易被忽略的設(shè)計是外圍電路啟動電流,因為相當(dāng)多的便攜設(shè)備采用 CR2032 小型鋰電池,瞬間推動力僅有數(shù) mA,尤其使用一段時間瞬間推動力會更低,當(dāng) MCU 被喚醒時果外圍電路啟動電流總和太大時,將會導(dǎo)致 CR2032 輸出電壓驟降而導(dǎo)致 MCU 重置 (Reset) 或工作不正常。為了避免此問題,除了降低外圍電路的啟動電流,另一種方法是分時分段啟動外圍電路,不要集中開啟太多耗電的電路。
平均功耗計算范例
為了讓讀者更具體了解平均功耗的計算,以新唐科技的低功耗 32位 MCU Nano 系列及血糖計應(yīng)用為例,進(jìn)行使用年限的預(yù)估。新唐的 Nano 系列低功耗 32位 MCU 的 CPU 內(nèi)核為 CortexTM-M0,具有 200uA/MHz 低運行功耗、待機電流僅需1uA、7uS快速喚醒、多重時鐘訊號來源及多種工作模式,多達(dá) 128 KB Flash、16K SRAM 及 12位 ADC、12位 DAC、SPI、I2C、I2S、UART、LCD、Touch Key 等豐富外圍,符合低功耗、高性能 MCU 應(yīng)用需求。
此血糖計范例采用 CR2032 230 mAh 電池,使用方式、運行功耗及靜態(tài)功耗如下表所示。
使用年限的計算方式請參考下表。量測時間比例、顯示時間比例及待機時間比例可由上表求得。例如,量測時間比例為 “6 次 x 0.25 分鐘 / (60 x 24) 分鐘 = 0.1%”.其余時間比例依此類推。量測平均電流為 “量測時間比例 x (MCU運行耗電流 +外部量測電路耗電流 +待機(含RTC)耗電流 + LCD 耗電流 + CR2032 自放電)”.顯示平均電流為 “顯示時間比例 x (待機(含RTC)耗電流 + LCD 耗電流 + CR2032 自放電)”.待機平均電流為 “待機時間比例 x (待機(含RTC)耗電流 + CR2032 自放電)”.最后計算出使用年限約為 2.77年。由于待機時間比例高達(dá) 99%,故血糖計應(yīng)用待機電流為延長使用年限最重要的參數(shù)。
結(jié)論
低功耗MCU設(shè)計是一個需要多面向考慮的復(fù)雜工作,本文僅闡述基本設(shè)計理念。開發(fā)低功耗 MCU 產(chǎn)品時,不只要挑戰(zhàn)電路設(shè)計的高困難度,更要由客戶應(yīng)用的角度考慮性價比,功能最強的不一定是最好的。往往性價比最適合的才能在市場上取得成功。由于智能電網(wǎng)、物聯(lián)網(wǎng)、遠(yuǎn)程控制、自動化管理等低功耗高效能應(yīng)用需求量持續(xù)增加,在可以預(yù)見的未來,32位低功耗MCU將逐漸取代8/16位低功耗MCU,成為市場主流。