<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 單片機系統的低功耗設計策略

單片機系統的低功耗設計策略

——
作者:清華大學(xué) 陳萌萌 邵貝貝 時(shí)間:2007-11-05 來(lái)源:?jiǎn)纹瑱C及嵌入式系統應用 收藏

  摘要:嵌入式系統的需要全面分析各方面因素,統籌規劃。在設計之初,各個(gè)因素往往是相互制約、相互影響的,一個(gè)降低系統功耗的措施有時(shí)會(huì )帶來(lái)其他方面的“負效應”。因此,降低系統整體功耗,需要仔細分析和計算。本文從硬件和兩個(gè)方面,闡述一個(gè)以單片機為核心的嵌入式系統時(shí)所需考慮的一些問(wèn)題。

  關(guān)鍵詞:

  在嵌入式應用中,系統的功耗越來(lái)越受到人們的重視,這一點(diǎn)對于需要電池供電的便攜式系統尤其明顯。降低系統功耗,延長(cháng)電池的壽命,就是降低系統的運行成本。對于以單片機為核心的嵌入式應用,系統功耗的最小化需要從軟、兩方面入手。

  隨著(zhù)越來(lái)越多的嵌入式應用使用了實(shí)時(shí)操作系統,如何在操作系統層面上降低系統功耗也成為一個(gè)值得關(guān)注的問(wèn)題。限于篇幅,本文僅從兩個(gè)方面討論。

1 硬件設計

  選用具有低功耗特性的單片機可以大大降低系統功耗??梢詮墓╇婋妷?、單片機內部結構設計、系統時(shí)鐘設計和等幾方面考察一款單片機的低功耗特性。

1.1 選用盡量簡(jiǎn)單的CPU內核

  在選擇CPU內核時(shí)切忌一味追求性能。8位機夠用,就沒(méi)有必要選用16位機,選擇的原則應該是“夠用就好”?,F在單片機的運行速度越來(lái)越快,但性能的提升往往帶來(lái)功耗的增加。一個(gè)復雜的CPU集成度高、功能強,但片內晶體管多,總漏電流大,即使進(jìn)入STOP狀態(tài),漏電流也變得不可忽視;而簡(jiǎn)單的CPU內核不僅功耗低,成本也低。

1.2 選擇低電壓供電的系統

  降低單片機的供電電壓可以有效地降低其功耗。當前,單片機從與TTL兼容的5 V供電降低到3.3 V、3 V、2 V乃至1.8 V供電。供電電壓降下來(lái),要歸功于半導體工藝的發(fā)展。從原來(lái)的3 μm工藝到現在的0.25、0.18、0.13 μm工藝, CMOS電路的門(mén)限電平閾值不斷降低。低電壓供電可以大大降低系統的工作電流,但是由于晶體管的尺寸不斷減小,管子的漏電流有增大的趨勢,這也是對降低功耗不利的一個(gè)方面。

  目前,單片機系統的電源電壓仍以5 V為主,而過(guò)去5年中,3 V供電的單片機系統數量增加了1倍,2 V供電的系統也在不斷增加。再過(guò)五年,低電壓供電的單片機數量可能會(huì )超過(guò)5 V電壓供電的單片機。如此看來(lái),供電電壓降低將是未來(lái)單片機發(fā)展的一個(gè)重要趨勢。

1.3 選擇帶有的系統

  低功耗模式指的是系統的等待和停止模式。處于這類(lèi)模式下的單片機功耗將大大小于運行模式下的功耗。過(guò)去傳統的單片機,在運行模式下有wait和stop兩條指令,可以使單片機進(jìn)入等待或停止狀態(tài),以達到省電的目的。

  等待模式下,CPU停止工作,但系統時(shí)鐘并不停止,單片機的外圍I/O模塊也不停止工作;系統功耗一般降低有限,相當于工作模式的50%~70%。

  停止模式下,系統時(shí)鐘也將停止,由外部事件中斷重新啟動(dòng)時(shí)鐘系統時(shí)鐘,進(jìn)而喚醒CPU繼續工作,CPU消耗電流可降到μA級。在停止模式下,CPU本身實(shí)際上已經(jīng)不消耗什么電流,要想進(jìn)一步減小系統功耗,就要盡量將單片機的各個(gè)I/O模塊關(guān)掉。隨著(zhù)I/O模塊的逐個(gè)關(guān)閉,系統的功耗越來(lái)越小,進(jìn)入停止模式的深度也越來(lái)越深。進(jìn)入深度停止模式無(wú)異于關(guān)機,這時(shí)的單片機耗電可以小于20 nA。其中特別要提示的是,片內RAM停止供電后,RAM中存儲的數據會(huì )丟失,也就是說(shuō),喚醒CPU后要重新對系統作初始化。因此在讓系統進(jìn)入深度停止狀態(tài)前,要將重要系統參數保存在非易失性存儲器中,如EEPROM中。深度停止模式關(guān)掉了所有的I/O,可能的喚醒方式也很有限,一般只能是復位或IRQ中斷等。

  保留的I/O模塊越多,系統允許的喚醒中斷源也就越多。單片機的功耗將根據保留喚醒方式的不同,降至1μA至幾十μA之間。例如,用戶(hù)可以保留外部鍵盤(pán)中斷,保留異步串行口(SCI)接收數據中斷等來(lái)喚醒CPU。保留的喚醒方式越多,系統耗電也就會(huì )多一些。其他可能的喚醒方式還有實(shí)時(shí)鐘喚醒、看門(mén)狗喚醒等。停機狀態(tài)較淺的情況下,外部晶振電路還是工作的。

  圖1以Freescale的HCS08單片機為例,給出不同運行模式下的系統功耗。HCS08是8位單片機,有多個(gè)系列,各系列I/O模塊數目有所不同,但低功耗模式下的電流消耗大致相同。

  圖1HCS08單片機各模式下的耗電

  以R系列單片機為例:在室溫(25℃)下,不包括I/O口的負載,以2 V供電,將可編程鎖相環(huán)時(shí)鐘設為16 MHz(總線(xiàn)時(shí)鐘8 MHz),典型電流值為2.6 mA,當溫度升高到85℃時(shí),供電電流也升高到3.6 mA;而采用3 V供電,這一組數據升高至3.8 mA和4.8 mA。用2 V供電,直接使用外部晶振2 MHz(總線(xiàn)時(shí)鐘1 MHz)時(shí),典型運行電流降至450 μA。在等待狀態(tài)下,因時(shí)鐘并沒(méi)有停止,耗電情況和時(shí)鐘頻率有很大關(guān)系,節省的功耗有限;而進(jìn)入輕度停止(stop3),以外部中斷喚醒,電流消耗在0. 5 μA左右。在中度停止態(tài)(stop2),功耗可進(jìn)一步降低。使用內部1 kHz的時(shí)鐘,保持1個(gè)運行的時(shí)鐘,周期性喚醒CPU,所增加的電流約為0.3 μA。在深度停止態(tài)(stop1),RAM的數據也不再保留,只能通過(guò)外部復位重啟系統,此時(shí)的電流消耗可降到20 nA。以上數據都是在室溫下測量所得。當環(huán)境溫度升高到85℃時(shí),電流消耗可能增加3~5倍。

1.4選擇合適的時(shí)鐘方案

  時(shí)鐘的選擇對于系統功耗相當敏感,設計者需要注意兩個(gè)方面的問(wèn)題:

  第一是系統總線(xiàn)頻率應當盡量低。單片機內部的總電流消耗可分為兩部分——運行電流和漏電流。理想的CMOS開(kāi)關(guān)電路,在保持輸出狀態(tài)不變時(shí),是不消耗功率的。例如,典型的CMOS反相器電路,如圖2所示,當輸入端為零時(shí),輸出端為1,P晶體管導通,N晶體管截止,沒(méi)有電流流過(guò)。而實(shí)際上,由于N晶體管存在一定漏電流,且隨集成度提高,管基越薄,漏電流會(huì )加大。溫度升高,CMOS翻轉閾電壓會(huì )降低,而漏電流則隨環(huán)境溫度的增高變大。在單片機運行時(shí),開(kāi)關(guān)電路不斷由“1”變“0”、由“0”變“1”,消耗的功率是由單片機運行引起的,我們稱(chēng)之為“運行電流”。如圖2所示,在兩只晶體管互相變換導通、截止狀態(tài)時(shí),由于兩只管子的開(kāi)關(guān)延遲時(shí)間不可能完全一致,在某一瞬間會(huì )有兩只管子同時(shí)導通的情況,此時(shí)電源到地之間會(huì )有一個(gè)瞬間較大的電流,這是單片機運行電流的主要來(lái)源??梢钥闯?,運行電流幾乎是和單片機的時(shí)鐘頻率成正比的,因此盡量降低系統時(shí)鐘的運行頻率可以有效地降低系統功耗。

  圖2典型的CMOS反相器

  第二是時(shí)鐘方案,也就是是否使用鎖相環(huán)、使用外部晶振還是內部晶振等問(wèn)題。新一代的單片機,如飛思卡爾的HCS08系列單片機,片內帶有內部晶振,可以直接作為時(shí)鐘源。使用片內晶振的優(yōu)點(diǎn)是可以省掉片外晶振,降低系統的硬件成本;缺點(diǎn)是片內晶振的精度不高(誤差一般在25%左右,即使校準之后也可能有2%的相對誤差),而且會(huì )增加系統的功耗。

  現代單片機普遍采用鎖相環(huán)技術(shù),使單片機的時(shí)鐘頻率可由程序控制。鎖相環(huán)允許用戶(hù)在片外使用頻率較低的晶振,可以很大地減小板級噪聲;而且,由于時(shí)鐘頻率可由程序控制,系統時(shí)鐘可以在一個(gè)很寬的范圍內調整,總線(xiàn)頻率往往能升得很高。但是,使用鎖相環(huán)也會(huì )帶來(lái)額外的功率消耗。

  單就時(shí)鐘方案來(lái)講,使用外部晶振且不使用鎖相環(huán)是功率消耗最小的一種。

2 應用軟件方面的考慮

  之所以使用“應用軟件”的說(shuō)法,是為了區分于“系統軟件”或者“實(shí)時(shí)操作系統”。軟件對于一個(gè)低功耗系統的重要性常常被人們忽略。一個(gè)重要的原因是,軟件上的缺陷并不像硬件那樣容易發(fā)現,同時(shí)也沒(méi)有一個(gè)嚴格的標準來(lái)判斷一個(gè)軟件的低功耗特性。盡管如此,設計者仍需盡量將應用的低功耗特性反映在軟件中,以避免那些“看不見(jiàn)”的功耗損失。

2.1 用“中斷”代替“查詢(xún)”

  一個(gè)程序使用中斷方式還是查詢(xún)方式對于一些簡(jiǎn)單的應用并不那么重要,但在其低功耗特性上卻相去甚遠。使用中斷方式,CPU可以什么都不做,甚至可以進(jìn)入等待模式或停止模式;而查詢(xún)方式下,CPU必須不停地訪(fǎng)問(wèn)I/O寄存器,這會(huì )帶來(lái)很多額外的功耗。

2.2 用“宏”代替“子程序”

  程序員必須清楚,讀RAM會(huì )比讀Flash帶來(lái)更大的功耗。正是因為如此,低功耗性能突出的ARM在CPU設計上僅允許一次子程序調用。因為CPU進(jìn)入子程序時(shí),會(huì )首先將當前CPU寄存器推入堆棧(RAM),在離開(kāi)時(shí)又將CPU寄存器彈出堆棧,這樣至少帶來(lái)兩次對RAM的操作。因此,程序員可以考慮用宏定義來(lái)代替子程序調用。對于程序員,調用一個(gè)子程序還是一個(gè)宏在程序寫(xiě)法上并沒(méi)有什么不同,但宏會(huì )在編譯時(shí)展開(kāi),CPU只是順序執行指令,避免了調用子程序。唯一的問(wèn)題似乎是代碼量的增加。目前,單片機的片內Flash越來(lái)越大,對于一些不在乎程序代碼量大一些的應用,這種做法無(wú)疑會(huì )降低系統的功耗。

2.3 盡量減少CPU的運算量

  減少CPU運算的工作可以從很多方面入手:將一些運算的結果預先算好,放在Flash中,用查表的方法替代實(shí)時(shí)的計算,減少CPU的運算工作量,可以有效地降低CPU的功耗(很多單片機都有快速有效的查表指令和尋址方式,用以?xún)?yōu)化查表算法);不可避免的實(shí)時(shí)計算,算到精度夠了就結束,避免“過(guò)度”的計算;盡量使用短的數據類(lèi)型,例如,盡量使用字符型的8位數據替代16位的整型數據,盡量使用分數運算而避免浮點(diǎn)數運算等。

2.4 讓I/O模塊間歇運行

  不用的I/O模塊或間歇使用的I/O模塊要及時(shí)關(guān)掉,以節省電能。RS232的驅動(dòng)需要相當的功率,可以用單片機的一個(gè)I/O引腳來(lái)控制,在不需要通信時(shí),將驅動(dòng)關(guān)掉。不用的I/O引腳要設置成輸出或設置成輸入,用上拉電阻拉高。因為如果引腳沒(méi)有初始化,可能會(huì )增大單片機的漏電流。特別要注意有些簡(jiǎn)單封裝的單片機沒(méi)有把個(gè)別I/O引腳引出來(lái),對這些看不見(jiàn)的I/O引腳也不應忘記初始化。

3 結論

  一個(gè)成功的低功耗設計應該是硬件設計和軟件設計的結合。從硬件設計開(kāi)始,就應該充分意識到一個(gè)低功耗應用的特性,選擇一款合適的單片機,通過(guò)對其特性的了解,設計系統方案;在軟件設計上,要考慮到低功耗編程的特殊性,并盡量使用單片機的低功耗模式。

  限于篇幅,僅僅討論了低功耗設計中的一些常見(jiàn)問(wèn)題,更多的問(wèn)題只能靠設計者去實(shí)際分析和解決了。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>