
圖5表示兩個系統(tǒng)退出停機模式并執(zhí)行一個短任務時的工作情況。其中一個器件包含一個內(nèi)置的環(huán)形振蕩器,另一個使用傳統(tǒng)的外部晶振。沒有環(huán)形振蕩器的器件必須經(jīng)歷一個晶振預熱期。在此期間器件不斷地消耗功率,卻沒有做任何有用的工作。第二個器件是一片DS87C520高速微控制器,片內(nèi)包含一個環(huán)形振蕩器。這就允許器件在退出停機模式時能立即恢復工作。在本例中,程序執(zhí)行4ms以內(nèi),間隔大約為2MHz。正如圖5所看到的,當需要退出停機模式執(zhí)行短任務時,采用環(huán)形振蕩器可以大幅減少能量消耗。
某些應用中,在退出停機模式后不久,要求時鐘具有晶振的穩(wěn)定度。這種情況下,環(huán)形振蕩器仍不失其優(yōu)越性。緊隨著停機模式的退出,控制器應該立即啟動是晶體振蕩器。隨后可以在晶振的預熱期控制器初始化一些必要的數(shù)據(jù)或寄存器。多數(shù)高速微控制器可以用一個狀態(tài)位來標示晶體振蕩器是否達到穩(wěn)定。一旦完成了晶振代碼的初始化進程,軟件可以查詢狀態(tài)位,以決定是否著手高精度定時操作。
另外一個改善停機模式效率的方法是采用中斷而不是復位方式來喚醒控制器。這種方式使處理器能夠緊接著設置STOP位的指令立即恢復工作,而不是從復位向量重新啟動。這樣就免去了對復位原因的判斷,允許處理器在最短的時間內(nèi)開始有用的工作。
5.2 空閑模式
空閑模式是早期8051架構(gòu)使用的第二個時鐘管理模式。該模式中止了CPU的運行,但片內(nèi)的通用定時器保持工作。在功率敏感的應用中,這個定時器被用于周期性地喚醒處理器去執(zhí)行任務,或者去判斷是否該執(zhí)行某個任務。
由于標準的8051定時器為16位,采用16MHz的時鐘頻率時,最大定時周期只有31ms。如果需要更長的周期,就需要定時器多次溢出。這會消耗額外的功率,因為處理器必需頻繁地恢復全速工作來累積計數(shù),但沒有執(zhí)行任何有用的工作。
對于比較長的周期,最好采用比較長定時周期的內(nèi)部定時器。有些8051衍生產(chǎn)品包含了一個看門狗定時器,也可被用來喚醒處理器?撮T狗定時器可被編程為比較長的定時,可達256個時鐘周期。在16MHz的頻率下能夠提供4.2s的最長延時。假設某應用希望每幅3s從低功耗狀態(tài)喚醒,去執(zhí)行任務。如果采用內(nèi)部定時器去定時,處理器將不得不退出空閑模式96閃而不作有用的工作。如果采用長定時周期的看門狗定時器,則處理器只需要在執(zhí)行任務的時候退出空閑狀態(tài),完成任務后再次到低功耗狀態(tài)。
還有一個選擇就是采用帶有實時時鐘(RTC)的微處理器。DS87C530高速微處理器內(nèi)置的RC能夠產(chǎn)生周期長達24小時的鬧鐘信號。由該鬧鐘產(chǎn)生的內(nèi)部中斷可將處理器從空閑或停機模式中喚醒。利用RTC退出停機模式對于需要長時間掛起的系統(tǒng)來講是最為有效的方式。
6 功率管理模式
盡管空閑模式通過掛起運行程序而使功耗得以降低,內(nèi)部定時器仍在以外部時鐘的頻率連續(xù)運行。這會消耗掉數(shù)量可觀的功率。試想一下,是否可以讓定時器工作于基本上接近待機的狀態(tài)。
一個比較好的辦法是降低整個器件的時鐘頻率。
這可以由一個內(nèi)部的時鐘分頻器來實現(xiàn),它將外部時鐘頻率分頻后再送入CPU。這種方案已在DS87C520高速微控制器中實現(xiàn)。該器件使用了兩種時鐘分頻系數(shù):功率管理模式1,輸入時鐘源被64分頻;功率管理模式2,輸入時鐘源被除以1024分頻。這些模式或以通過設置特殊功能寄存器中的對應位來實現(xiàn)。
圖6對DS87C520高速微控制器的時鐘分頻器和時鐘控制模式加以對比。圖6中,全速模式(除以4)、功率管理模式1(除以64)、功率管理模式2(除以1024)、空閑模式及停機模式下的電流消耗形成鮮明對比。正如所料,停機模式吸收最低的電流,因為所內(nèi)部時鐘都被關(guān)掉了。兩種功率管理模式消耗的電流比空閑模式還低。這不僅降低了器件的功耗,還說明可以讓它以較低的水平持續(xù)運行。在傳統(tǒng)的8051結(jié)構(gòu)中,任何類型的CPU運行只有兩個狀態(tài):“全部或者沒有”。處理器被迫頻繁地運行于最高性能水平,盡管只在很短的時間內(nèi)得到高性能,這會增加一些不必要的功率浪費。功率管理模式(PMM)的使用,使處理器(如系統(tǒng))能夠根據(jù)實際性能需求對其功耗進行最優(yōu)化管理。
6.1 中斷和PMM的使用
采用內(nèi)部時鐘分頻器可能會帶來的問題是,中斷延遲會大大增加;另外,內(nèi)部定時器的減慢會影響8051串口產(chǎn)生或同步標準波特率的能力。這會嚴重干擾處理器響應外部激勵的能力。解決方案之一就是在外部中斷或串行口活動被確認后,自動使處理器恢復到完全運行狀態(tài)。這種方案已經(jīng)在DS87C520中得以實現(xiàn)。處理器的這種回切功能使其能夠迅速響應外部中斷。緊隨著中斷回答,器件將自動切回到全速(除以4)狀態(tài),并且不需要軟件參與。
串行口的工作方式十分相似。當在串行口接收腳上檢測到下降沿(起始位)后,器件將自動切回到全速運行(除以4)。這個過程緊接著數(shù)據(jù)傳送起始,因而器件能夠以全速來正確地接收余下的傳送數(shù)據(jù)。對于傳統(tǒng)的8051結(jié)構(gòu),在低功耗配置中使用串口的唯一辦法是利用閑置模式。功率管理模式的使用提供了一種更低功耗的替代方案。
6.2 改進突發(fā)工作模式
在低功耗設計中,覺見的工作模式是將處理器從停機模式中喚醒,執(zhí)行一個突發(fā)任務,然后再加到停機模式。在這樣的系統(tǒng)中,降低功耗的一個手段是提高工作頻率。初看起來,似乎匪夷所思。因為在正常工作期間,高頻率系統(tǒng)要比低頻率系統(tǒng)消耗更多的功率。然而,系統(tǒng)工作時消耗的靜態(tài)電流與頻率無關(guān)。在一個最終設計中,通常評估的是其能耗,以便確定電池工作壽命。這一點在評估一個高性能微控制器時尤為關(guān)鍵,因為它綜合地考慮了處理時間和處理功率。對于一個給定系統(tǒng),如果它具有更小功率與時間乘積,那么它的能耗更低;而不必單獨考慮兩種參數(shù)。很多實例顯示,高速微控制器由于運行時間更短,實際能耗更低;而處理時間更長的低速處理器正好與此相反。
這一點可以通過圖6提到驗證。假定從停機模式恢復后,DS87C520讀取一個I/O端口,經(jīng)過算術(shù)運行后將結(jié)果從另一端口送出,這個過程需要500個機器周期的CPU時間。按圖6所示,電流消耗在10MHz時為12.4mA,30MHz時為34.6mA。表1歸納了在兩種速度下執(zhí)行讀任務時的能耗情況。從表1中可以看到,30MHz工作時的效率更高,能耗降低6%以上。
表1 執(zhí)行一個500機器周期的任務時所消耗的能量和處理器速度對比





