系統(tǒng)設(shè)計(jì)中低功耗的探討
1 引言
節(jié)能是二十一世紀(jì)生活中最大的一個話題。電源儲備的概念并不僅僅用于嵌入式便攜設(shè)備, 幾乎對于所有產(chǎn)品都是一個重要部分。說到低功耗,大部分人都會想到MSP430單片機(jī),想到如何使微處理器進(jìn)入休眠模式。毫無疑問,在嵌入式產(chǎn)品中,很難有和MSP430相匹敵的產(chǎn)品。在進(jìn)行低功耗處理的時候,人們第一個想到的肯定是如何使微處理器進(jìn)入功耗最低的工作模式。這種做法是完全正確的,但是在整個嵌入式系統(tǒng)中,處理微處理器還有其他的部分,特別是在一些數(shù)據(jù)傳輸和工控領(lǐng)域中。
現(xiàn)在我在一個做的一個跟節(jié)能有關(guān)的項(xiàng)目使我改變了以前對低功耗的一些認(rèn)識,糾正了一些原則性的錯誤。在一個系統(tǒng)中要做到低功耗,首先考慮的應(yīng)該是讓不工作的部件全部休眠或者停止,不單單是微處理器。更重要的應(yīng)該想辦法讓那些功耗大,而且使用的次數(shù)不是很多的部件停止工作。最后才考慮單片機(jī)系統(tǒng)本身的功耗問題。
2 實(shí)際問題
有一個使用使太陽能供電的系統(tǒng),其能耗對系統(tǒng)來說至關(guān)重要。在這個系統(tǒng)中有一個進(jìn)行遠(yuǎn)程通信使用的調(diào)制解調(diào)裝置,待機(jī)功耗就要去到500mw。如果一天24小時都讓這個家伙工作,那么太陽能的電池不用一天就讓它吃光了。然而,這種調(diào)制解調(diào)器又沒有休眠模式,況且?guī)缀鯉滋觳攀褂靡淮握{(diào)制解調(diào)器。如果不解決這個問題,就算將單片機(jī)系統(tǒng)停止工作也降低不了系統(tǒng)的功耗。最后我們決定,在平時空閑的時候干脆不給調(diào)制解調(diào)器供電,讓它停止工作算了,可是問題是有呼叫到來的時候,調(diào)制解調(diào)器沒有供電,不能建立連接哦。盡管有各種各樣的問題,但是要降低系統(tǒng)的功耗,就必須要解決這個問題。
我想說的是,在進(jìn)行低功耗的系統(tǒng)設(shè)計(jì)中,對于大功耗的部件和設(shè)備要毫不留情,該出手時就出手。它們聽話固然好拉,通過單片機(jī)IO控制就可以讓他們睡覺或者起來,或者關(guān)閉和開啟,如果不聽話的,就算斷電也要做的了,誰叫他們吃的多,不干活,還不聽話。
3 低功耗的一些知識(來自日電電子網(wǎng)站)
3.1 功耗機(jī)制
目前大多數(shù)微控制器都使用CMOS電路,這里的介紹主要針對這類情況。內(nèi)部電路的基礎(chǔ),變壓器,包括兩個晶體管:一個P-ch晶體管和一個N-ch晶體管,上下結(jié)構(gòu),如下圖(a)所示。在圖(b)中,頂部的P-ch晶體管狀態(tài)為ON,而底部的N-ch晶體管狀態(tài)為OFF,這樣輸出為 "H"。在圖(c)中,頂部的P-ch晶體管狀態(tài)為OFF,而底部的N-ch晶體管狀態(tài)為ON,這樣輸出為"L"。在這些狀態(tài)中,OFF狀態(tài)的晶體管進(jìn)入高阻抗?fàn)顟B(tài),這樣很少有電流流過。換句話說,如果這種狀態(tài)一直持續(xù)下去,功耗就可以忽略。
再看另一種情況,當(dāng)信號變化時電流的流動。如圖(d)所示,如果添加了負(fù)載電容(實(shí)際上配線電容總是被添加), 為了給電容充電,需要額外的電流。[!--empirenews.page--]
用水的概念來比喻電流的概念,考慮變壓器,象閥一樣操作。從頂部倒入水,由閥控制水流。可以把閥的狀態(tài)比作變壓器的狀態(tài)。在變壓器的"H"狀態(tài)中,頂部的閥被打開,底部的閥被關(guān)閉;在變壓器的"L"狀態(tài)中,頂部的閥被關(guān)閉,底部的閥被打開。當(dāng)狀態(tài)由"H"變?yōu)?quot;L"時,水的總量 如上圖(d)所示添加了負(fù)載電容后,閥右邊顯示的水量增加,進(jìn)而增加了流動的水量。
3.2 待機(jī)功能
在大多數(shù)應(yīng)用中,微控制器不需要一直操作;有些時候是空閑的(如,當(dāng)微控制器等待輸入或等待定時器設(shè)置的時間到時)。在這段時間微控制器的操作是浪費(fèi)功率。這就是為什么現(xiàn)在的微控制器都有待機(jī)功能,即在不需要使用微控制器時停止其操作。該功能有不同的名稱,包括"睡眠",根據(jù)是否停止操作,可以劃分成不同的模式。
多數(shù)情況下有三種模式,具有以下功能。大多數(shù)微控制器一般具有(a)和(c)模式。
(a) HALT模式 (只停止執(zhí)行CPU指令)
(b) IDLE模式 (也停止時鐘)
(c) STOP模式 (停止時鐘振蕩,即停止了大部分功能)
盡管以前僅考慮操作期間的性能,但現(xiàn)在待機(jī)期間的性能已成為許多設(shè)備設(shè)計(jì)中需要關(guān)注的問題。特別是隨著移動設(shè)備應(yīng)用的增多,使得制造商重點(diǎn)關(guān)注設(shè)備不工作期間的性能。這一問題越來越受到重視。
3.3 HALT模式
在最早的微控制器中該功能就已經(jīng)普遍使用了,實(shí)際上就是通過1條指令來停止指令的執(zhí)行。在早期的微控制器中,該功能僅僅是使微控制器等待中斷輸入,與降低操作電流沒有關(guān)系。然而,自從引入了CMOS電路,通過停止CPU指令的執(zhí)行就可以降低操作電流,因此HALT已成為待機(jī)模式的一種,用于節(jié)電。
在這種模式中,只停止CPU操作;其它電路都繼續(xù)工作。因此電流只占正常操作電流的一小部分。 不過內(nèi)部的外圍功能是可操作的,而且一旦釋放待機(jī)模式,CPU就馬上恢復(fù)操作(立即喚醒),這在要求高速響應(yīng)的情況下是有優(yōu)勢的。[!--empirenews.page--]
3.4 IDLE模式
不象HALT模式只停止CPU操作,在IDLE模式中,提供給其它部分的時鐘也停止操作。這就意味著IDLE模式中的操作電流可以降低到不足HALT模式中的1/10。時鐘自身的振蕩繼續(xù),這樣操作電流仍然比STOP模式中的要大。但是由于時鐘一直振蕩,因此如果從外部輸入待機(jī)釋放信號,則可以立即恢復(fù)操作。
3.5 STOP模式
在STOP模式中,由于停止了系統(tǒng)操作時鐘的振蕩,操作電流可以降低到幾十個微安范圍。STOP模式的缺點(diǎn)是,當(dāng)釋放待機(jī)模式時,必須恢復(fù)時鐘振蕩,而正常操作要等到時鐘振蕩穩(wěn)定后才能恢復(fù)(這就象人早晨起床后由于低血壓不能正常行動一樣)。因此,當(dāng)待機(jī)模式釋放和操作完成之間的時間要求有限時,不能使用STOP模式。
3.6 怎樣計(jì)算功耗
要計(jì)算功耗,我們首先看一下使用待機(jī)功能時如何估計(jì)功耗(操作電流)。
基本上,功耗主要通過每種模式(微控制器正在操作)中電流的平均時間來計(jì)算。由于操作電流隨微控制器(設(shè)備)不同而變化,因此在大多數(shù)情況下不需要這樣嚴(yán)格計(jì)算功耗。在下面的例子中,如果高速操作期間操作電流為I1,高速模式中時間長度為t1,待機(jī)操作期間的操作電流為I2,待機(jī)模式中的時間長度為t2,低速操作期間操作電流為I3,低速模式中的時間長度為t3,則消耗的平均電流為:
平均電流 = (I1 * t1 + I2 * t2 + I3 * t3) / (t1 + t2 + t3)
3.7待機(jī)釋放時的電流
在使用待機(jī)功能時,尤其是STOP模式時,一定要注意在釋放待機(jī)模式后時鐘振蕩恢復(fù)時穩(wěn)定振蕩所需的時間。這個時間段很短,但是由于啟動時鐘振蕩時電流很大,因此必須考慮同樣情況下正常操作時的電流。微控制器一旦停止操作就試圖重新啟動。
3.8待機(jī)釋放觸發(fā)器
中斷使系統(tǒng)從待機(jī)模式返回正常操作狀態(tài)(待機(jī)釋放)。有幾種不同的中斷,包括內(nèi)部中斷如基于定時器的中斷、由外部中斷請求信號觸發(fā)的中斷,以及由外設(shè)串行通信結(jié)束觸發(fā)的中斷。用于釋放待機(jī)模式的中斷根據(jù)使用的待機(jī)功能的不同而有所不同。內(nèi)部中斷不能用于釋放STOP模式,必須使用外部中斷請求信號。但是,由于有些外部中斷請求信號只能在時鐘操作時使用,所以要特別小心。[!--empirenews.page--]
3.9看門狗定時器
看門狗定時器是最難和待機(jī)模式結(jié)合的。在兩種主要的情況下會出現(xiàn)問題。一是當(dāng)看門狗定時器正在操作時(即使CPU已進(jìn)入待機(jī)模式)。在這種情況下,必須釋放待機(jī)模式,留有足夠的時間將看門狗定時器清零。
另一種情況是,在待機(jī)模式中,當(dāng)看門狗定時器的計(jì)數(shù)時鐘停止操作時。在這種情況下,待機(jī)釋放時序不會出現(xiàn)大問題,需要注意的是系統(tǒng)要使用看門狗定時器的功能來防止死鎖。
因此,需要預(yù)先仔細(xì)檢查在待機(jī)模式中看門狗定時器會出現(xiàn)什么問題。
3.10當(dāng)系統(tǒng)使用組合的操作時鐘時出現(xiàn)的問題
許多新的微控制器具有使用內(nèi)部振蕩器(根據(jù)設(shè)備不同,有多種振蕩器,有些可以停止,有些不能停止)操作的時鐘。在這些微控制器中,使用的待機(jī)模式和進(jìn)入待機(jī)模式的方式隨微控制器的操作時鐘的不同而有所變化。例如,當(dāng)系統(tǒng)以主時鐘操作時,通過執(zhí)行STOP指令可以停止主時鐘振蕩,但是如果系統(tǒng)以其它時鐘操作,則不能使用STOP指令。在這種情況下,必須通過寄存器設(shè)置來控制待機(jī)模式。
同樣,當(dāng)切換時鐘時,必須結(jié)合時鐘振蕩來控制待機(jī)模式。如果在系統(tǒng)以子時鐘操作時指定主時鐘的振蕩來恢復(fù),并且立即將操作時鐘從子時鐘切換到主時鐘,則可能會產(chǎn)生掛起,因?yàn)橄到y(tǒng)試圖使用的操作時鐘沒有正常振蕩。(如果由于執(zhí)行STOP指令停止時鐘振蕩,則通過中斷釋放待機(jī)模式時所需的振蕩穩(wěn)定時間可由硬件保證,但是如果已經(jīng)通過程序設(shè)置了振蕩,則必須通過軟件保證所需的振蕩穩(wěn)定時間。)