低功耗MCU設(shè)計(jì)理念
MCU功耗來(lái)自何處
在開始討論低功耗MCU設(shè)計(jì)前,必須先探討MCU功耗的來(lái)源,其主要由靜態(tài)功耗及運(yùn)行功耗兩部分組成??紤]實(shí)際的應(yīng)用,最后決定系統(tǒng)功耗性能指針則必須計(jì)算平均功耗。
運(yùn)行功耗
現(xiàn)代 MCU 已整合相當(dāng)多的的模擬外圍,不能單純考慮數(shù)字電路的動(dòng)態(tài)功耗。MCU 運(yùn)行時(shí)的總功耗由模擬外圍功耗和數(shù)字外圍的動(dòng)態(tài)功耗相加而得。模擬電路的功耗通常由工作電壓及其性能要求指針來(lái)決定,例如 100 ns 傳遞延遲 (Propogation Delay) 的比較器工作電流可能約為 40 微安,當(dāng)允許傳遞延遲規(guī)格為 1 μs 時(shí),工作電流有機(jī)會(huì)降到個(gè)位數(shù)微安。
數(shù)字電路的動(dòng)態(tài)功耗主要來(lái)自開關(guān)頻率、電壓及等效負(fù)載電容,其計(jì)算公式如下:
PDynamIC(動(dòng)態(tài)功耗) ~ f (工作頻率) x CL (等效負(fù)載電容) x VDD2 (工作電壓)
由以上公式可以理解到降低動(dòng)態(tài)功耗最直接的方式為降低工作電壓及工作頻率。但 MCU 實(shí)際應(yīng)用面通常要求更寬廣的工作電壓及更高的效能。在降低工作電壓方面,可以選擇更新近的制程,并透過(guò) LDO 讓 CPU 內(nèi)核、數(shù)字電路及與管腳輸出入電壓無(wú)關(guān)的模擬外圍在低壓操作,IO 管腳及需要與其他外部電路連接的模擬外圍則在較高的系統(tǒng)電壓操作。如此可以兼顧低功耗及寬工作電壓的需求。在降低工作頻率這項(xiàng)參數(shù)上,一個(gè)設(shè)計(jì)優(yōu)良的 32 位 MCU更能突顯其效能優(yōu)勢(shì),除了直覺(jué)的 MIPS 比較之外,32 位總線也代表更高的數(shù)據(jù)存取帶寬,能以更低的工作頻率達(dá)到相同的效能,進(jìn)而降低整體功耗。另外,如果 MCU 內(nèi)建與操作頻率相關(guān)的模擬外圍,例如石英晶體震蕩電路、嵌入式閃存或電流式DAC,其電流消耗與轉(zhuǎn)換頻率成正比,也要納入低功耗 MCU 的動(dòng)態(tài)功耗設(shè)計(jì)考慮。
靜態(tài)功耗
傳統(tǒng)靜態(tài)功耗的定義是指系統(tǒng)時(shí)鐘源關(guān)閉時(shí)數(shù)字電路的漏電流。但是在混合信號(hào)低功耗 MCU 的設(shè)計(jì)中要同時(shí)考慮下列多種漏電流來(lái)源,包含數(shù)字電路漏電流、SRAM 漏電流、待機(jī)時(shí)已關(guān)閉的仿真電路漏電流 (例如 ADC,嵌入式閃存)、待機(jī)時(shí)不關(guān)閉的仿真電路工作電流 (例如 LDO、BOD) 及 IO 管腳的漏電流。因?yàn)闀r(shí)鐘源已關(guān)閉,影響靜態(tài)功耗的主要參數(shù)為制程、電壓及溫度。所以降低靜態(tài)功耗必須選擇超低功耗制程,但是低功耗制程通常伴隨較高的 Vt,導(dǎo)致低電壓模擬外圍設(shè)計(jì)困難。另外,以MCU待機(jī)電流 1微安的規(guī)格,代表數(shù)字電路漏電 + RAM 保持電流 + LDO 工作電流 + BOD (降壓偵測(cè)或重置電路) 工作電流總和必須小于 1微安,對(duì)于 Flash,RAM 越來(lái)越大及功能越來(lái)越多的低功耗 MCU 設(shè)計(jì)廠商而言,是十分艱巨的挑戰(zhàn)。
平均功耗
在系統(tǒng)級(jí)要兼顧低功耗及高效能,必須考慮實(shí)際應(yīng)用面的需求,例如無(wú)線環(huán)境傳感器可能讓 MCU 主時(shí)鐘及 CPU 關(guān)閉,只開啟低頻時(shí)鐘,定時(shí)喚醒外圍電路進(jìn)行偵測(cè),當(dāng)符合設(shè)定條件的事件發(fā)生時(shí)快速啟動(dòng) CPU 進(jìn)行處理,即使沒(méi)有任何事件發(fā)生,也必須定時(shí)激活 CPU 維持無(wú)線傳感器網(wǎng)絡(luò)的聯(lián)機(jī)。在遙控器的應(yīng)用中,則可能完全將所有時(shí)鐘源都關(guān)閉,當(dāng)用戶按鍵時(shí)快速喚醒時(shí)鐘源及 CPU 進(jìn)行處理。另外,許多應(yīng)用都會(huì)加入一個(gè) MCU 作為主機(jī)處理器的協(xié)處理器,用于監(jiān)控鍵盤或紅外線輸入、刷新顯示器、控制主處理器電源以及智能電池管理等任務(wù)。此時(shí)平均功耗比單純的運(yùn)行功耗或待機(jī)功耗更具指標(biāo)性意義。
平均功耗由下列主要參數(shù)組合而成: 運(yùn)行功耗及運(yùn)行時(shí)間,靜待功耗及待機(jī)時(shí)間,不同運(yùn)行模式之間的切換時(shí)間。茲以下圖進(jìn)行說(shuō)明:
平均電流 (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)
因?yàn)檫M(jìn)入待機(jī)模式時(shí)間很短,忽略此段時(shí)間的電流消耗,公式可以簡(jiǎn)化為:
均電流 (IAVG) =(I1 x T1+I3 x T3+I4 x T4+I5 x T5+I6 x T6)/(T1+T3+T4+T5+T6)
由以上公式觀察到除了降低運(yùn)行電流及靜態(tài)待機(jī)電流外,降低運(yùn)行時(shí)間、喚醒時(shí)間及高低速運(yùn)行模式切換時(shí)間也是降低整機(jī)功耗的重要手段。另外,上圖同時(shí)指出,低功耗 MCU 支持動(dòng)態(tài)切換運(yùn)行時(shí)鐘頻率是必要的功能。
低功耗 MCU 設(shè)計(jì)考慮
制程選擇
為了達(dá)到低功耗的運(yùn)作,并能有效地在低耗電待機(jī)模式下,達(dá)到極低的待機(jī)功耗,可以透過(guò)對(duì)制程的選擇而站上基本的要求門坎。在不強(qiáng)調(diào)速度極致的某些制程分類,選擇極低組件截止電流制程 (如下圖) 進(jìn)行邏輯閘制作,并進(jìn)行數(shù)字設(shè)計(jì)是方法之一。選擇這種策略的額外效益是,通常也能在降低動(dòng)態(tài)操作電流上,達(dá)到較佳的表現(xiàn)。 另外,由于高溫大幅增加靜態(tài)電流,當(dāng)溫度由攝氏 25度增加到攝氏 85度時(shí),一個(gè)典型比例約增加 10 倍的靜態(tài)電流,以非低功耗 0.18 微米制程開發(fā)的 32 位 MCU,邏輯閥門數(shù) 200K、4KB SRAM 在核心電壓 1.8V、攝氏25度的靜態(tài)耗電約為 5 ~ 10 微安,當(dāng)溫度升高到攝氏 85度時(shí),靜待電流將會(huì)飆高到 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ǎn)單說(shuō)來(lái),就是人物之連結(jié) (云端應(yīng)用)、物物之連結(jié) (物聯(lián)網(wǎng)) 需求越來(lái)越多,導(dǎo)致產(chǎn)品功能越來(lái)越復(fù)雜,運(yùn)算量越來(lái)越高,8 位 MCU 已逐漸無(wú)法滿足效能需求。 為了兼顧低功耗高效能,選擇適用的 32 位 CPU 內(nèi)核乃大勢(shì)所趨。
選擇低功耗 CPU 內(nèi)核,除了單位頻率耗電流外,還需要綜合考慮緊湊的低內(nèi)存代碼,相同功能所需的代碼越長(zhǎng),除了增加內(nèi)存成本,也代表更長(zhǎng)的運(yùn)行時(shí)間及功耗。另外,由于軟件開發(fā)成本在后期將會(huì)越來(lái)越高,大量的參考代碼及更多的第三方開發(fā)商的支持,都可以有效降低軟件的開發(fā)時(shí)間及成本。所以選擇一款更多人使用的 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)核以來(lái),包括 NXP、新唐科技、ST、Freescale 等多家國(guó)內(nèi)外 MCU 大廠相繼投入 CortexTM-M0 MCU 開發(fā),不論供貨或者品種的齊全度都已十分成熟,投入 CortexTM-M0 的 MCU 開發(fā)商也在持續(xù)增加中。
低功耗數(shù)字電路
對(duì)于一般的同步數(shù)字電路設(shè)計(jì),要使數(shù)字單元有效降低操作電流,透過(guò)控制時(shí)鐘的頻率或截止不需要的時(shí)鐘跳動(dòng),也是重要的方法。低功耗MCU通常配備豐富的時(shí)鐘控制單元,可對(duì)各別的數(shù)字外圍單元,依照需求做降頻或升頻的操作調(diào)整,在達(dá)到運(yùn)作能力的同時(shí),用最低的頻率來(lái)運(yùn)行。但為了達(dá)到更彈性的時(shí)鐘源配置,可能導(dǎo)致 CPU 內(nèi)核和外圍電路時(shí)鐘不同步的現(xiàn)象,此時(shí)必須仔細(xì)考慮電路設(shè)計(jì),保證跨時(shí)鐘領(lǐng)域數(shù)據(jù)存取的正確性。
另外為了盡量降低 CPU 介入處理時(shí)間或降低 CPU 工作頻率而節(jié)省下來(lái)的功耗,可以提供DMA或外圍電路相互觸發(fā)電路進(jìn)行數(shù)據(jù)的傳遞,例如 Timer 定時(shí)自動(dòng)觸發(fā) ADC 或 DAC,并透過(guò) DMA 進(jìn)行數(shù)據(jù)由 ADC 到 RAM 或者 RAM 到 DAC 的搬移,同時(shí)在 ADC 的輸入可以增加簡(jiǎn)單的數(shù)字綠波及平滑化電路,如此不須要 CPU 經(jīng)常介入處理,也不會(huì)因?yàn)樾枰獙?shí)時(shí)處理 ADC 或 DAC 事件導(dǎo)致中斷程序占用太多時(shí)間,降低系統(tǒng)的實(shí)時(shí)性及穩(wěn)定性。
支持多種工作模式
為了配合不同的應(yīng)用需求,并達(dá)到系統(tǒng)平均功耗的最小化,低功耗 MCU需要提供多種操作模式,讓用戶靈活調(diào)配應(yīng)用,常見(jiàn)的操作模式有下列數(shù)種:
正常運(yùn)行模式:CPU 內(nèi)核及外圍正常工作,能實(shí)時(shí)改變 CPU 及外圍的工作頻率 (On the Fly) 或關(guān)閉不需要的時(shí)鐘源以獲得最佳的工作效能。
低頻工作模式:CPU 內(nèi)核及外圍工作于低頻的時(shí)鐘源,例如 32.768K 晶震或內(nèi)部低頻 10K RC 震蕩器。通常此時(shí)最大的耗電來(lái)源為嵌入式閃存及 LDO 本身的耗電流。如果此時(shí)的執(zhí)行程序不大,可以考慮將程序運(yùn)作于 RAM 以降低平均功耗。請(qǐng)注意并不是所有 MCU 都能支持在 RAM 執(zhí)行程序。
Idle 模式:CPU 內(nèi)核停止,時(shí)鐘源和被致能的外圍電路持續(xù)工作,直到外圍電路符合設(shè)定條件喚醒 CPU 進(jìn)行數(shù)據(jù)處理或控制執(zhí)行流程。通常高頻的運(yùn)行模式,CPU 及嵌入式閃存消耗相當(dāng)大比例的電流,故 Idle 模式能有效降低平均功耗。
待機(jī)RAM 保持模式:CPU 內(nèi)核及所有時(shí)鐘源關(guān)閉,內(nèi)建LDO 切換到低耗電模式,但是RAM 及 IO 管腳持續(xù)供電,維持進(jìn)入待機(jī)之前的狀態(tài)。
RTC 模式:CPU 內(nèi)核及高頻時(shí)鐘源關(guān)閉,內(nèi)建LDO 切換到低耗電模式,由于此時(shí) LDO 供電能力降低,僅能提供低耗電的外圍電路運(yùn)行,例如 32.768K晶振、RTC (實(shí)時(shí)時(shí)鐘計(jì)數(shù)器)、BOD (降壓偵測(cè)或重置電路)、TN 單色LCD直接驅(qū)動(dòng)電路等。
深層待機(jī)