物聯網與智慧生活風潮興起,帶動市場對高效能且低功耗的32位元微控制器(MCU)需求增溫,因此微控制器業者已積極從制程和中央處理器(CPU)核心選擇,以及電路設計等層面著手,以降低動態與靜態功耗,并兼顧整體運算效能。
傳統的低功耗微控制器(MCU)設計都是以8位元MCU為主,因為8位元內核閾門相對較少,運行或泄露的電流低,售價也相對低廉。然而,許多新興的應用皆需要比8位元內核更大的處理效率。
近年智慧生活的抬頭、物聯網的興起,手持式消費性電子產品與無線功能需求愈來愈高、設計愈來愈復雜,要提高性能的同時又要兼顧低功耗,需要有一高性能、低功耗的主控MCU做為平臺。此外,工業上的智慧化也在展開,如遠端監控、數位化、網路化等。簡言之,云端應用和物聯網需求越來越多,已導致產品功能愈來愈復雜,運算需求愈來愈高。
2009年安謀國際(ARM)發表32位元Cortex-M0內核,提供MCU廠商一個強而有力的平臺,加上制程微縮技術的進步,嵌入式快閃記憶體制程普及化及降價,主要成本來自記憶體大小及類比周邊和輸入輸出(I/O)接腳數量,中央處理器(CPU)內核的成本差異已大幅縮短,更促進高性價比32位元低功耗MCU的快速發展。
運行與靜態耗電量組成MCU功耗
在開始討論低功耗MCU設計前,必須先探討MCU功耗的來源,其主要由靜態功耗及運行功耗兩部分組成。實際的應用,須藉由計算平均功耗,決定最后系統功耗性能指標。
動態功耗與工作電壓和頻率相關
現代MCU已整合相當多的類比周邊,不能單純考量數位電路的動態功耗。MCU運行時的總功耗,由類比周邊功耗和數位周邊的動態功耗相加而得。類比電路的功耗通常由工作電壓及其性能要求指標來決定,如100奈秒傳遞延遲(Propagation Delay)的比較器工作電流可能約為40微安培;當允許傳遞延遲規格為1微秒時,工作電流有機會降到個位數微安培。
數位電路的動態功耗主要來自開關頻率、電壓及等效負載電容,其計算公式如下:
PDynamic(動態功耗)~f(工作頻率)xCL(等效負載電容)xVDD2(工作電壓)
由以上公式可以理解到降低動態功耗最直接的方式,為降低工作電壓及工作頻率,但MCU實際應用面通常要求更寬廣的工作電壓及更高的效能。在降低工作電壓方面,可以選擇更先進的制程,并透過線性穩壓器(LDO)讓CPU內核、數位電路及與接腳輸出入電壓無關的類比周邊在低壓操作;I/O接腳及須與其他外部電路連接的類比周邊,則在較高的系統電壓操作,如此可以兼顧低功耗及寬工作電壓的需求。
在降低工作頻率這項參數上,一個設計優良的32位元MCU更能突顯其效能優勢,除了直覺的每秒可執行多少百萬指令(MIPS)比較之外,32位元匯流排也代表更高的資料存取頻寬,能以更低的工作頻率達到相同的效能,進而降低整體功耗。另外,若MCU內建與操作頻率相關的類比周邊,例如石英晶體振蕩電路、嵌入式快閃記憶體或電流式數位類比轉換器(DAC),其電流消耗與轉換頻率成正比,也要納入低功耗MCU的動態功耗設計考量。
靜態功耗縮減挑戰重重
傳統靜態功耗的定義是指系統時脈源關閉時,數位電路的漏電流,但是在混合訊號低功耗MCU的設計中,要同時考慮下列多種漏電流來源,包含數位電路漏電流、靜態隨機存取記憶體(SRAM)漏電流、待機時已關閉的模擬電路漏電流(例如ADC、嵌入式快閃記憶體)、待機時不關閉的模擬電路工作電流(如LDO、電壓不足偵測(BOD))及I/O接腳的漏電流。
由于時脈源已關閉,影響靜態功耗的主要參數為制程、電壓及溫度。也因此,降低靜態功耗必須選擇超低功耗制程,但是低功耗制程通常伴隨較高的Vt,導致低電壓類比周邊設計困難。另外,以MCU待機電流1微安培的規格,代表數位電路漏電+隨機存取記憶體(RAM)保持電流+LDO工作電流+降壓偵測或重置電路(BOD)工作電流總和必須小于1微安培,對于快閃記憶體、RAM越來越大,及功能越來越多的低功耗MCU設計廠商而言,是十分艱鉅的挑戰。
運行、待機和喚醒時間不容忽視
在系統級要兼顧低功耗及高效能,必須考慮實際應用面的需求,如無線環境感測器可能讓MCU主時脈及CPU關閉,只開啟低頻時脈,定時喚醒周邊電路進行偵測;當符合設定條件的事件發生時,快速啟動CPU進行處理;即使沒有任何事件發生,也必須定時喚醒CPU,維持無線感測器網路的連線。
在遙控器的應用中,則可能完全將所有時脈源都關閉,當使用者按鍵時,快速喚醒時脈源及CPU進行處理。另外,許多應用都會加入一個MCU做為主處理器的輔助處理器,用于監控鍵盤或紅外線輸入、刷新顯示器、控制主處理器電源及智慧電池管理等任務。此時,平均功耗比單純的運行功耗或待機功耗,更具指標性意義。
平均功耗由運行功耗和運行時間、靜態功耗和待機時間,以及不同運行模式之間的切換時間等主要參數組合而成。茲以圖1進行說明。
圖1 不同運行時間電流大小的變化
平均電流(IAVG)=(I1xT1+I2xT2+I3xT3+I4xT4+I5xT5+I6xT6)/(T1+T2+T3+T4+T5+T6)
因為進入待機模式時間很短,忽略此段時間的電流消耗,公式可以簡化為:
平均電流(IAVG)=(I1xT1+I3x 3+I4xT4+I5xT5+I6xT6)/(T1+T3+T4+T5+T6)
由以上公式觀察到,除了降低運行電流及靜態待機電流外,降低運行時間、喚醒時間及高低速運行模式切換時間,亦為降低整機功耗的重要手段。另外,圖1同時指出,低功耗MCU支援動態切換運行時脈頻率是必要的功能。
實現低功耗MCU設計 開發商考量須面面俱到
低功耗MCU設計考量包括制程選擇、低功耗/高效能CPU核心、低功耗數位電路、支援多種工作模式、電源系統、豐富的喚醒機制/快速喚醒時間、低功耗類比周邊與記憶體等,以下將進一步說明之。
制程選擇至關重要
為了達到低功耗的運作,并能有效地在低耗電待機模式下,達到極低的待機功耗,制程的選擇極為重要。在不強調速度極致的某些制程分類,選擇極低元件截止電流制程(圖2)進行邏輯閘制作,并進行數位設計是方法之一。
圖2 不同制程元件截止和晶片待機電流變化
選擇這種策略的額外效益是,通常也能降低動態操作電流,達到較佳的表現。另外,由于高溫大幅增加靜態電流,當溫度由攝氏25度增加到攝氏85度時,一個典型比例約增加十倍的靜態電流。以非低功耗0.18微米制程,開發邏輯閥門數200K、4KB SRAM的32位元MCU為例,在核心電壓1.8伏特、攝氏25度的靜態耗電約為5?10微安培;當溫度升高到攝氏85度時,靜待電流將會飆高到50~100微安培;而若采用低功耗制程,在攝氏85度時,靜態電流僅約10微安培。
選用低功耗/高效能的CPU內核
早期低功耗MCU受限于成本及制程技術,大都選擇8位元CPU內核,但隨著工業智慧化的發展,導致產品功能更加復雜,運算量更高,8位元MCU已逐漸無法滿足效能需求;為了兼顧低功耗高效能,選擇適用的32位元CPU內核乃大勢所趨。
選擇低功耗CPU內核,除了單位頻率耗電流外,還須要綜合考量小容量的低記憶體代碼,相同功能所需的代碼越長,除了增加記憶體成本,也代表更長的運行時間及功耗。另外,由于軟體開發成本在后期將會越來越高,大量的參考代碼及更多的第三方開發商的支持,均可有效降低軟體的開發時間及成本。也因此,選擇一款更多人使用的CPU內核也是重要的考量之一。
控制數位電路時脈
對于一般的同步數位電路設計,要使數位單元有效降低操作電流,透過控制時脈的頻率或截止不需要的時脈跳動,也是重要的方法。低功耗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.768kHz晶振或內部低頻10K電阻電容(RC)振蕩器,通常最大的耗電來源,為嵌入式快閃記憶體及LDO本身的耗電流。若此時的執行程序不大,可以考慮將程序運作于RAM,以降低平均功耗。請注意并不是所有MCU都能支援在RAM執行程序。
.Idle模式
CPU內核停止,時脈源和被啟動的周邊電路持續工作,直到周邊電路符合設定條件,喚醒CPU進行資料處理或控制執行流程。通常高頻的運行模式,CPU及嵌入式快閃記憶體消耗相當大比例的電流,故閑置(Idle)模式能有效降低平均功耗。
.待機RAM保持模式
CPU內核及所有時脈源關閉,內建LDO切換到低耗電模式,但是RAM及I/O接腳持續供電,維持進入待機之前的狀態。
.RTC模式
CPU內核及高頻時脈源關閉,內建LDO切換到低耗電模式,由于此時LDO供電能力降低,僅能提供低耗電的周邊電路運行,如32.768kHz晶振、即時時脈計數器(RTC)、BOD、TN單色LCD直接驅動電路等。
.深層待機模式
CPU內核及所有時脈源關閉,關閉RAM及LDO、BOD等所有周邊電路的電源,僅I/O接腳(或部分I/O接腳)持續供電,由I/O接腳或重置(Reset)接腳喚醒CPU。因為此模式下,RAM的資料已丟失,通常會進行內部電源切割,提供數十個狀態記錄暫存器,做為系統重啟時的初始狀態參考源。此模式的優點是更低的靜態電流,通常僅需100?500奈安培,其缺點是并非所有的應用都可以忍受RAM資料丟失及系統重啟。
電源系統的考量
在多電源系統的應用上,必須考慮低功耗MCU的內部電源規畫或自動切換,以下以市電/備用電池雙電源系統及內建通用序列匯流排(USB)介面,但平常由電池供電的行動裝置來舉例說明。
.市電/備用電池雙電源系統
MCU平常由市電經由交直流轉換電路供電,當市電斷電時,經由連接在備用電源的獨立供電接腳進行供電,同時在MCU內部進行電源切割,并提供一個可靠的備用電源自動切換開關,確保市電正常供電時備用電池不會持續被消耗。
但仔細考慮,其實有兩種狀況可能發生,一種是備用電池僅供電給部分低耗電的周邊電路,如32.768kHz晶振、RTC時脈電路、資料備份暫存器等。當市電來時,MCU將重新啟動;另外一種狀況是當市電斷電時,有可能MCU及部分周邊電路會被喚醒工作,然后再次進入待機模式。智慧型電表就是此類應用的典型代表。在此種應用中,備用電池須要供電給整顆MCU,所以電源自動切換開關必須能承受更高的電流,相對成本也較高。
.內建USB介面行動裝置
此類裝置平時由兩節電池供電或鋰電池供電,工作電壓可能為2.2?3伏特,當連接到USB時,USB介面轉由VBUS供電。此類低功耗MCU如果沒有內建5伏特轉3伏特的USB介面,LDO將會產生下列問題,當連接USB時,必須由外掛的LDO將USB VBUS的5伏特電源轉換為3伏特電源,同時提供給MCU VDD及USB介面電路,但又必須避免LDO輸出的3伏特電源,與離線操作時的電池電源發生沖突,將會須要外加電源管理電路,增加系統成本及復雜度。
豐富的喚醒機制及快速喚醒時間
有許多的系統應用場合,須由外部的單一訊號、鍵盤或甚至串列通訊訊號,激發MCU啟動整體系統的運作。在未被激發的時候,MCU或甚至大部分的整機須處于最低耗電的待機狀態,以延長電池的壽命。
能夠在各式需求下被喚醒,也成為MCU的重要特征。MCU能擁有各式不同的喚醒方式,包括各I/O可做為激發喚醒的通道,或是由內部整合電路(I2C)、通用異步收發器(UART)、串列周邊介面(SPI)的通道做為被外界元件觸發喚醒,或使用內、外部的超低耗電時脈源,透過計時器來計時喚醒。諸多的喚醒機制,只要運用得當,并配合MCU的低耗電操作切換模式,可使MCU幾乎時時處于極低功耗的狀況。
配有快速、高效率內核的MCU,可以在每次喚醒的當下短暫時間里,完成應有的運作與反應,并再次進入深層的低待機模式,以此達到平均耗能下降的目的。但是,若喚醒后開始執行微指令的時間因為某些因素而拖延得很長,將會使降低總體耗電的目標大打折扣,甚至達不到系統反應的要求。因此,有些MCU配合起振時間的改進,及邏輯設計的配合,使得喚醒后執行指令的時間至少降到數個微秒之內。
低功耗類比周邊及記憶體e#
低功耗類比周邊及記憶體
低功耗MCU在運行時,除了CPU內核及被啟動的數位周邊電路在工作外,愈來愈多被整合到內部的類比周邊電路亦是耗電的主要來源。以最簡單的執行序來分析運行功耗,共包含下列耗電來源:CPU內核、時脈振蕩器、嵌入式閃存記憶體及LDO本身的消耗電流。代入以下典型值數據將會更清楚顯示各個部分對耗電的影響:
運行頻率12MHz,MCU電壓3伏特,LDO輸出1.8伏特供給CPU內核、記憶體及其他數位電路;低功耗Cortex-M0內核:600微安培;嵌入式快閃記憶體:1.5毫安培;低功耗12MHz晶振電路:230微安培;LDO本身的靜態消耗電流:70微安培。
總和=0.6+2+0.23+0.07=2.4毫安培,平均功耗約200μA/MHz。其中耗電比例最高的是嵌入式快閃記憶體。若要運行在更高頻率,通常會啟動內建的鎖相回路(PLL)提供更高頻率的時脈源,在1.8伏特供電的典型PLL,12MHz輸入輸出、48MHz工作電流約為1?2毫安培,若不能有效降低PLL耗電,對高頻工作的低功耗MCU將是一大電流負擔。
LDO的最低靜態功耗、32.768kHz晶振電路、BOD及扭轉向列型液晶顯示器(TN LCD)驅動電路的工作電流,都會大大影響到待機或RTC模式的功耗指標。以低功耗應用的熱能表為例,RTC加LCD顯示的功耗要求在3V/8微安培以下,這代表可以預估分配給下列電路的電流預算為:LDO靜態功耗0.5微安培+32.768kHz晶振及RTC電路1微安培+BOD1微安培+TN LCD驅動4微安培+LCD玻璃1微安培+所有數位電路及類比周邊漏電流0.5微安培。這些類比周邊除了低耗電要求,同時必須兼具要求批量生產及溫度變化時的一致性,這對類比設計人員將是一大挑戰。
快速喚醒這個性能指標也會影響到下列類比周邊的穩定時間。當MCU從低耗電的待機模式喚醒時,首先要將LDO快速切換到高供電模式,啟動內部高速RC振蕩器,使能嵌入式快閃記憶體及CPU,以上所有電路的穩定時間總和必須在數個微秒內完成,才能符合快速喚醒的需求。
另外一個容易被忽略的設計是周邊電路啟動電流,因為相當多的可攜式裝置采用CR2032小型鋰電池,瞬間推動力僅有數毫安培,尤其使用一段時間瞬間推動力會更低,當MCU被喚醒時,若周邊電路啟動電流總和太大時,將會導致CR2032輸出電壓驟降,致使MCU重置(Reset)或工作不正常。為了避免此問題,除了降低周邊電路的啟動電流,另一種方法是分時分段啟動周邊電路,不要集中開啟太多耗電的電路。
平均功耗計算范例
為了讓讀者更具體了解平均功耗的計算,以新唐科技的低功耗32位元MCU Nano系列及血糖計應用為例,進行使用年限的預估。
此血糖計范例采用CR2032 230mAh電池,使用方式、運行功耗及靜態功耗如表1所示。
使用年限的計算方式請參考表2。量測時間比例、顯示時間比例及待機時間比例可由表2求得。例如,量測時間比例為六次×0.25分鐘/(60×24)分鐘=0.1%。其余時間比例依此類推。量測平均電流為量測時間比例×(MCU運行耗電流+外部量測電路耗電流+待機(含RTC)耗電流+LCD耗電流+CR2032自放電)。顯示平均電流為顯示時間比例×(待機(含RTC)耗電流+LCD耗電流+CR2032自放電)。待機平均電流為待機時間比例×(待機(含RTC)耗電流+CR2032自放電)。最后計算出使用年限約為2.77年。由于待機時間比例高達99%,故血糖計應用待機電流為延長使用年限最重要的參數。
低功耗MCU開發須兼顧性價比要求
低功耗MCU設計是一個須多面向考慮的復雜工作,本文僅闡述基本設計理念。開發低功耗MCU產品時,不只要挑戰電路設計的高困難度,更要由客戶應用的角度考慮性價比,功能最強的不一定是最好的,往往性價比最適合的產品,才能在市場上取得成功。由于智慧電網、物聯網、遠端控制、自動化管理等低功耗、高效能應用需求量持續增加,在可預見的未來,32位元低功耗MCU將逐漸取代8、16位元低功耗MCU,成為市場主流。
評論