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