改善8051系統用電效率的微控制器 作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢(xún) 收藏 摘要:一種改進(jìn)架構的高性能8051設計、外圍功能集成、選用合適的時(shí)鐘源以降低功耗;并介紹節省電能的軟件技術(shù)及采用待機模式降低功耗的技巧。關(guān)鍵詞:停機模式 空閑模式 功率管理模式 便攜式產(chǎn)品的功能和性能日新月異。消費者對產(chǎn)品性能的要求也越來(lái)越高,需要更強大的運算能力支持;另一方面,希望產(chǎn)品具有更低的功耗。 盡管已經(jīng)出現了很多功耗處理器,但它們的性能通常很有限。Dallas公司的系列高速微控制器在性能和功耗之間取得了一個(gè)很好的折衷,采用了8051架構——世界上最流行的微控制器之一。簡(jiǎn)單易用、豐富的I/O資源使這種微控制器深受設計者的喜愛(ài),并被廣泛接受。它的流行勢頭已蔓延到了便攜式領(lǐng)域,在很多應用中都有其用武之地。 本文旨在探討使用8051控制器時(shí),如何降低功率的消耗,重點(diǎn)介紹一種改進(jìn)架構的高性能8051設計。 1 時(shí)鐘頻率 任何微控制器設計中,決定功耗的一個(gè)首要因素就是系統的時(shí)鐘頻率?;パa金屬氧化物半導體(CMOS)工藝的器件功耗直接正比于時(shí)鐘頻率。因此,從省電的角度考慮,將處理器運行于盡可能低的頻率比較有利。 圖1表示一個(gè)普通的8051微控制器的典型功率曲線(xiàn),一個(gè)被所有便攜系統設計得所熟知的關(guān)系。一般來(lái)講,電流隨頻率的變化曲線(xiàn)為線(xiàn)性,具有一定的DC偏移。這個(gè)靜態(tài)電流由片由的靜態(tài)電路所消耗,例如比較器、運算放大器等。其數值一般很?。?1mA),是一個(gè)不可忽略的固定吸收電流。 任何功率受限的設計都應該考慮采用盡可能慢的運行速度。決定最低系統頻率,也就是最低功耗的,有很多因素,包括期望得到的系統性能、中斷響應延盡等。不管采用什么標準,最終目標是相同的:使器件的工作頻率盡可能地靠近應用的需求。 2 高速內核 要降低基于8051系統的功率消耗,最直接的辦法就是改善微控制器的效率。8051最初的設計采用了一個(gè)12時(shí)鐘周期、每機器周期兩次取指的架構。然而,高速微控制器采用的是每機器周期4個(gè)、甚至1個(gè)時(shí)鐘的內核。它們具有更高的運算效率,執行一個(gè)指令需要很少的時(shí)鐘周期,具有更快的運行速度和更高的時(shí)鐘頻率。 盡管高速核的優(yōu)勢通??紤]其處理能力,它們在降低功耗方面有很重要的意義。當處理器的運行指令經(jīng)過(guò)優(yōu)化后,執行同一任務(wù)所需的時(shí)間很短。很多便攜式產(chǎn)品工作在猝發(fā)模式,其特點(diǎn)是只很短的活動(dòng)時(shí)間,例如記錄環(huán)境數據或掃描一個(gè)條碼,而在隨后的很長(cháng)時(shí)間內都處于非活動(dòng)狀態(tài)。減少處理器的活動(dòng)時(shí)間可以相應地降低功耗。 效率提升帶來(lái)的另一個(gè)好處是,獲得相同的性能所需的時(shí)鐘頻率可以更低。如果一個(gè)經(jīng)過(guò)重新設計的內核采用4時(shí)鐘機器周期而非12時(shí)鐘,這就意味著(zhù)完成同樣的工作,只需更低的晶振頻率。由于功率正比于晶振頻率,這樣,不必犧牲性能即可降低功耗。 圖2顯示三種微控制器以同樣的速度完成同一任務(wù)時(shí)的功耗情況。其中兩種是標準80C3X的衍生產(chǎn)品:一種是工作于每機器周期12個(gè)外部時(shí)鐘方式;另外一種是DS80C320微控制器,工作于4時(shí)鐘機器周期。測出各個(gè)器件的消耗電流,然后進(jìn)行對比,保守地估計DS80C320具有250%(2.5倍)的速度提升。正如圖2所顯示的,每周期時(shí)鐘數減少后的處理器內核工作于同樣的吞吐率時(shí),消耗的電流顯著(zhù)降低,高速運行時(shí)尤其顯著(zhù)。 3 集成化 將外圍功能集成于芯片內部是節省電能的方法之一。在向芯片外部驅動(dòng)一個(gè)信號時(shí),每周期時(shí)鐘數減少后的處理器內核工作于同樣的吞吐率時(shí),以便驅動(dòng)外部負載和補償DC損耗。開(kāi)關(guān)功率是數字信號過(guò)渡過(guò)程中消耗的功能。開(kāi)關(guān)功率可根據下面的公式估算: PSW∝CV2/T (1) 其中C是接收門(mén)輸入電容和連線(xiàn)電容的總和,T是時(shí)鐘信號周期。一個(gè)CMOS門(mén)的典型輸入電容為10pF。盡管很難精確計算出系統的開(kāi)關(guān)功率,但有一點(diǎn)是顯然的,每個(gè)額外的外部負載或引腳都會(huì )給微控制器造成額外的功耗。 基于微控制器的系統通常都會(huì )有一定數量的外圍器件,例如從餐部的UART和上電昨位電路到看門(mén)狗定時(shí)器。8051系列的優(yōu)勢之一便是將大量的外圍功能集成于片內。除了減少元件數量、簡(jiǎn)化設計外,外圍功能的集成化也有利于降低功耗??梢哉J為任何外圍器件的核心功能消耗的功率是相同的,與它位于處理器的內部還是外部沒(méi)有關(guān)系。然而,將功能放在片內無(wú)疑節省了驅動(dòng)外部總線(xiàn)所需的開(kāi)關(guān)功率。 3.1 內部程序存儲器 8051另外一個(gè)通常不被視作外設功能單元是程序存儲器。所有8051的衍生產(chǎn)品都包含了不同容量的片內程序存儲器。這是許多系統設計所期望的,以便減少外圍元件數量和印制板面積,同時(shí)改善了便攜系統的電源壽命。正如前面提到的,集成的程序存儲器由于免去了外部總線(xiàn)驅動(dòng),因而降低了功耗。采用片內存儲器還有另外一個(gè)省電的原因。8051架構必須采用一個(gè)74373類(lèi)型的鎖存器,以便鎖存低字節地址。圖3顯示采用內部和外部程序存儲器時(shí)的功耗情況對比。前者采用DS87C520高速微控制器和一個(gè)74AC573鎖存器,以及一片27C256EPROM,訪(fǎng)問(wèn)時(shí)間70ns。第二個(gè)系統采用同樣的微控制器,工作于內部存儲器。兩個(gè)系統均工作在11.0592MHz,執行一個(gè)簡(jiǎn)單、普通的程序。從圖3可以明顯看到,高頻運行的系統中省掉外部EPROM和鎖存器后,可節省多達49mA的電流。 3.2 內部數據存儲器 如前所述,采用片內存儲器取代外部RAM能夠節省電能。80C32衍生產(chǎn)品具有擴充了的臨時(shí)存儲器(256字節),足夠小的程序的堆棧操作和數據存儲,不必外接RAM。 對于需要更多數據存儲器或設置外部堆棧的設計,還需要額外的SRAM。雖然可以找到低功耗的SRAM,在考慮它所帶來(lái)的功耗時(shí),還應將相關(guān)的74373系列鎖存器、驅動(dòng)外部總線(xiàn)的容性損耗等一并考慮在內。 4 時(shí)鐘源 影響功耗的另一個(gè)重要的系統元素是時(shí)鐘源。標準8051設計通常采用內部振蕩器激勵一個(gè)外部石英晶體產(chǎn)生時(shí)鐘,或者采用外部晶體振蕩器。如果采用外部晶體振蕩器,時(shí)鐘的波形會(huì )影響到功耗。如果采用外部晶體振蕩器,時(shí)鐘的波形會(huì )影響到功耗。XTAL1引肚子內的輸入級用來(lái)將外部時(shí)鐘信號輸入8051內核,通常采用互補式驅動(dòng)器。隨著(zhù)輸入時(shí)鐘在高、低電平之間的跳動(dòng),驅動(dòng)器中的互補對管會(huì )有一個(gè)短時(shí)間的同時(shí)開(kāi)通過(guò)程,造成顯著(zhù)的電流浪涌。對于矩 形波來(lái)說(shuō),高、低狀態(tài)之間的過(guò)渡過(guò)程非常短暫,兩管同時(shí)開(kāi)通的時(shí)間最短。對于上升和下降時(shí)間比較長(cháng)的波形,例如正弦或三角波,過(guò)渡過(guò)程比較長(cháng),驅動(dòng)器兩管同時(shí)開(kāi)通的時(shí)間也更長(cháng)。這將會(huì )增加電流和功耗。 圖4表示電流消耗和波形的關(guān)系。時(shí)鐘源是一個(gè)可編程波形發(fā)生器,可以產(chǎn)生正弦波、三角波或方波。圖4顯示的電流是4個(gè)器件的平均值,包括傳統的和改進(jìn)的高速處理核。比較發(fā)現電流消耗直接正比于時(shí)鐘波形的上升(和下降)時(shí)間。三角波具有最小的斜率,而矩形波斜率最大。采用矩形波時(shí)的電流平均要比三角波低0.75mA。這預示著(zhù)在用外部時(shí)鐘振蕩器時(shí),采用上升和下降時(shí)間更快的振蕩器將有利于降低電流功耗。這一點(diǎn)在較低頻率下尤為重要,此時(shí)器件需要花費更多的時(shí)間用于過(guò)渡過(guò)程。 有些8051衍生產(chǎn)品包含了一個(gè)片內的環(huán)形振蕩器。通常是一串反相器,脈沖在其中傳播。它可以提供一個(gè)2~4MHz的內部時(shí)鐘源,驅動(dòng)器件。由于不需要使用晶體,這種振蕩器是功耗很低的時(shí)鐘源。從DS87C520高速微控制器的特性可以看出,工作于環(huán)形振蕩器時(shí),能夠提供等同于7MHz8051的性能,而功耗僅有3.6mA。雖然環(huán)形振蕩器沒(méi)有壓電式晶體那樣穩定,它們的低拉耗以及可以忽略的上電延遲在功率管理方面占有顯要位置。 5 時(shí)鐘管理 微控制器的工作頻率是影響器件功耗最重要的一個(gè)因素。雖然系統的時(shí)鐘頻率主要取決于硬件配置,8051還是提供了一些有限的控制手段。這些手段減緩或終止器件全部或部分單元的工作時(shí)鐘。傳統的8051架構采用了兩種控制方法:空閑和停機。5.1 改善停機模式 停機模式是8051設計得所能利用的最低功耗狀態(tài)。在該模式下,內部振蕩器停振,器件中止工作。脫離停機模式通??客獠繌臀?。某些變種也可以通過(guò)外部中斷退出停機模式。 停機模式有一個(gè)缺點(diǎn),就是在晶振恢復工作的一個(gè)死時(shí)間內的功耗問(wèn)題。晶體振蕩器的工作依賴(lài)于石英晶體的振動(dòng)。物理層限性決定了晶體振蕩器必須有一個(gè)確定的時(shí)間,才能達到足夠的振蕩器幅度來(lái)驅動(dòng)器件工作。這個(gè)預熱過(guò)程不管采用內部振蕩器還是外部振蕩器都會(huì )存在。時(shí)間大約在3~12ms,與晶體和振蕩器的性能有關(guān)。 預熱過(guò)程對于功耗的作用在于,在此階段器件不執行任何有用的工作,但仍要消耗功率。如果器件頻繁地進(jìn)入和退出停機模式,或者退出停機模式后只執行很短時(shí)間的任務(wù),這種效應會(huì )變得格外顯著(zhù)。事實(shí)上,如果任務(wù)非常短(<5ms),晶振啟動(dòng)期間消耗的能量甚至會(huì )超過(guò)執行任務(wù)本身的消耗。如果采用環(huán)形振蕩器來(lái)實(shí)現從停機模式到快速啟動(dòng),就可避免這種延遲。這將大幅降低退出停機模式時(shí)的功率消耗。圖5表示兩個(gè)系統退出停機模式并執行一個(gè)短任務(wù)時(shí)的工作情況。其中一個(gè)器件包含一個(gè)內置的環(huán)形振蕩器,另一個(gè)使用傳統的外部晶振。沒(méi)有環(huán)形振蕩器的器件必須經(jīng)歷一個(gè)晶振預熱期。在此期間器件不斷地消耗功率,卻沒(méi)有做任何有用的工作。第二個(gè)器件是一片DS87C520高速微控制器,片內包含一個(gè)環(huán)形振蕩器。這就允許器件在退出停機模式時(shí)能立即恢復工作。在本例中,程序執行4ms以?xún)?,間隔大約為2MHz。正如圖5所看到的,當需要退出停機模式執行短任務(wù)時(shí),采用環(huán)形振蕩器可以大幅減少能量消耗。 某些應用中,在退出停機模式后不久,要求時(shí)鐘具有晶振的穩定度。這種情況下,環(huán)形振蕩器仍不失其優(yōu)越性。緊隨著(zhù)停機模式的退出,控制器應該立即啟動(dòng)是晶體振蕩器。隨后可以在晶振的預熱期控制器初始化一些必要的數據或寄存器。多數高速微控制器可以用一個(gè)狀態(tài)位來(lái)標示晶體振蕩器是否達到穩定。一旦完成了晶振代碼的初始化進(jìn)程,軟件可以查詢(xún)狀態(tài)位,以決定是否著(zhù)手高精度定時(shí)操作。 另外一個(gè)改善停機模式效率的方法是采用中斷而不是復位方式來(lái)喚醒控制器。這種方式使處理器能夠緊接著(zhù)設置STOP位的指令立即恢復工作,而不是從復位向量重新啟動(dòng)。這樣就免去了對復位原因的判斷,允許處理器在最短的時(shí)間內開(kāi)始有用的工作。 5.2 空閑模式 空閑模式是早期8051架構使用的第二個(gè)時(shí)鐘管理模式。該模式中止了CPU的運行,但片內的通用定時(shí)器保持工作。在功率敏感的應用中,這個(gè)定時(shí)器被用于周期性地喚醒處理器去執行任務(wù),或者去判斷是否該執行某個(gè)任務(wù)。 由于標準的8051定時(shí)器為16位,采用16MHz的時(shí)鐘頻率時(shí),最大定時(shí)周期只有31ms。如果需要更長(cháng)的周期,就需要定時(shí)器多次溢出。這會(huì )消耗額外的功率,因為處理器必需頻繁地恢復全速工作來(lái)累積計數,但沒(méi)有執行任何有用的工作。 對于比較長(cháng)的周期,最好采用比較長(cháng)定時(shí)周期的內部定時(shí)器。有些8051衍生產(chǎn)品包含了一個(gè)看門(mén)狗定時(shí)器,也可被用來(lái)喚醒處理器??撮T(mén)狗定時(shí)器可被編程為比較長(cháng)的定時(shí),可達256個(gè)時(shí)鐘周期。在16MHz的頻率下能夠提供4.2s的最長(cháng)延時(shí)。假設某應用希望每幅3s從低功耗狀態(tài)喚醒,去執行任務(wù)。如果采用內部定時(shí)器去定時(shí),處理器將不得不退出空閑模式96閃而不作有用的工作。如果采用長(cháng)定時(shí)周期的看門(mén)狗定時(shí)器,則處理器只需要在執行任務(wù)的時(shí)候退出空閑狀態(tài),完成任務(wù)后再次到低功耗狀態(tài)。 還有一個(gè)選擇就是采用帶有實(shí)時(shí)時(shí)鐘(RTC)的微處理器。DS87C530高速微處理器內置的RC能夠產(chǎn)生周期長(cháng)達24小時(shí)的鬧鐘信號。由該鬧鐘產(chǎn)生的內部中斷可將處理器從空閑或停機模式中喚醒。利用RTC退出停機模式對于需要長(cháng)時(shí)間掛起的系統來(lái)講是最為有效的方式。 6 功率管理模式 盡管空閑模式通過(guò)掛起運行程序而使功耗得以降低,內部定時(shí)器仍在以外部時(shí)鐘的頻率連續運行。這會(huì )消耗掉數量可觀(guān)的功率。試想一下,是否可以讓定時(shí)器工作于基本上接近待機的狀態(tài)。 一個(gè)比較好的辦法是降低整個(gè)器件的時(shí)鐘頻率。這可以由一個(gè)內部的時(shí)鐘分頻器來(lái)實(shí)現,它將外部時(shí)鐘頻率分頻后再送入CPU。這種方案已在DS87C520高速微控制器中實(shí)現。該器件使用了兩種時(shí)鐘分頻系數:功率管理模式1,輸入時(shí)鐘源被64分頻;功率管理模式2,輸入時(shí)鐘源被除以1024分頻。這些模式或以通過(guò)設置特殊功能寄存器中的對應位來(lái)實(shí)現。 圖6對DS87C520高速微控制器的時(shí)鐘分頻器和時(shí)鐘控制模式加以對比。圖6中,全速模式(除以4)、功率管理模式1(除以64)、功率管理模式2(除以1024)、空閑模式及停機模式下的電流消耗形成鮮明對比。正如所料,停機模式吸收最低的電流,因為所內部時(shí)鐘都被關(guān)掉了。兩種功率管理模式消耗的電流比空閑模式還低。這不僅降低了器件的功耗,還說(shuō)明可以讓它以較低的水平持續運行。在傳統的8051結構中,任何類(lèi)型的CPU運行只有兩個(gè)狀態(tài):“全部或者沒(méi)有”。處理器被迫頻繁地運行于最高性能水平,盡管只在很短的時(shí)間內得到高性能,這會(huì )增加一些不必要的功率浪費。功率管理模式(PMM)的使用,使處理器(如系統)能夠根據實(shí)際性能需求對其功耗進(jìn)行最優(yōu)化管理。 6.1 中斷和PMM的使用 采用內部時(shí)鐘分頻器可能會(huì )帶來(lái)的問(wèn)題是,中斷延遲會(huì )大大增加;另外,內部定時(shí)器的減慢會(huì )影響8051串口產(chǎn)生或同步標準波特率的能力。這會(huì )嚴重干擾處理器響應外部激勵的能力。解決方案之一就是在外部中斷或串行口活動(dòng)被確認后,自動(dòng)使處理器恢復到完全運行狀態(tài)。這種方案已經(jīng)在DS87C520中得以實(shí)現。處理器的這種回切功能使其能夠迅速響應外部中斷。緊隨著(zhù)中斷回答,器件將自動(dòng)切回到全速(除以4)狀態(tài),并且不需要軟件參與。 串行口的工作方式十分相似。當在串行口接收腳上檢測到下降沿(起始位)后,器件將自動(dòng)切回到全速運行(除以4)。這個(gè)過(guò)程緊接著(zhù)數據傳送起始,因而器件能夠以全速來(lái)正確地接收余下的傳送數據。對于傳統的8051結構,在低功耗配置中使用串口的唯一辦法是利用閑置模式。功率管理模式的使用提供了一種更低功耗的替代方案。 6.2 改進(jìn)突發(fā)工作模式 在低功耗設計中,覺(jué)見(jiàn)的工作模式是將處理器從停機模式中喚醒,執行一個(gè)突發(fā)任務(wù),然后再加到停機模式。在這樣的系統中,降低功耗的一個(gè)手段是提高工作頻率。初看起來(lái),似乎匪夷所思。因為在正常工作期間,高頻率系統要比低頻率系統消耗更多的功率。然而,系統工作時(shí)消耗的靜態(tài)電流與頻率無(wú)關(guān)。在一個(gè)最終設計中,通常評估的是其能耗,以便確定電池工作壽命。這一點(diǎn)在評估一個(gè)高性能微控制器時(shí)尤為關(guān)鍵,因為它綜合地考慮了處理時(shí)間和處理功率。對于一個(gè)給定系統,如果它具有更小功率與時(shí)間乘積,那么它的能耗更低;而不必單獨考慮兩種參數。很多實(shí)例顯示,高速微控制器由于運行時(shí)間更短,實(shí)際能耗更低;而處理時(shí)間更長(cháng)的低速處理器正好與此相反。 這一點(diǎn)可以通過(guò)圖6提到驗證。假定從停機模式恢復后,DS87C520讀取一個(gè)I/O端口,經(jīng)過(guò)算術(shù)運行后將結果從另一端口送出,這個(gè)過(guò)程需要500個(gè)機器周期的CPU時(shí)間。按圖6所示,電流消耗在10MHz時(shí)為12.4mA,30MHz時(shí)為34.6mA。表1歸納了在兩種速度下執行讀任務(wù)時(shí)的能耗情況。從表1中可以看到,30MHz工作時(shí)的效率更高,能耗降低6%以上。表1 執行一個(gè)500機器周期的任務(wù)時(shí)所消耗的能量和處理器速度對比 時(shí)鐘頻率機器周期所用機器周期總時(shí)間Icc電流時(shí)間積10MHz400ns500200ms12.41mA2.48mAs30MHz133ns3006.5ms34.66mA2.30mAs6.3 跑跑停停 在很多應用中,停機模式以外的時(shí)間并不完全取決于運行速度。很多情況下,處理器需要訪(fǎng)問(wèn)一個(gè)具有固定響應時(shí)間的外圍設備,例如A/D轉換器或溫控器。此種情況下,處理器將有個(gè)突發(fā)動(dòng)作。一般是觸發(fā)某個(gè)過(guò)程,隨后的一段時(shí)間內,則只有很少的或根本沒(méi)任何操作。在這種時(shí)候,一種組合的功率節省技術(shù)會(huì )更為有效。 可以用一個(gè)實(shí)例來(lái)說(shuō)明在這樣一個(gè)系統中,采用具PWM的高速微處理器所帶來(lái)的好處。設想的DS87C520與一片DS1620數字溫度計/溫控器相接口。這個(gè)器件可使用標準8051串口的工作模式0串行訪(fǎng)問(wèn)。主機處理器在某個(gè)時(shí)刻通過(guò)外部中斷將DS87C520從停機模式喚醒,并要求它從DS1620中讀取溫度數據。獲得數據后,DS87C520會(huì )將其保存于內部存儲器中,備隨后傳送。DS1620的工作類(lèi)似于很多A/D轉換器:發(fā)出一個(gè)命令后啟動(dòng)一次轉換,然后,經(jīng)過(guò)一定延遲后轉換完成,接著(zhù),數據就可以被移走了。對于DS1620來(lái)講,轉換時(shí)間接近于1秒鐘。通過(guò)查詢(xún)器件來(lái)確定轉換是否完成。DS87C520非常適合于此種任務(wù),因為它可以非常迅速地執行啟動(dòng)和運算功能。隨后,在等待轉換完成期間,微控制器可以將其置于PMM。在傳統8051中,轉換被啟動(dòng)后,可利用閑置模式將傳統8051置于低功耗狀態(tài)。在這種模式中,可利用內部的16位定時(shí)器來(lái)測量轉換時(shí)間。工作于16MHz時(shí),傳統8051需要在轉換完成之前退出閑置模式多達32次。 本例可被進(jìn)一步改進(jìn)。因為DS1620是作為一個(gè)同步器件進(jìn)行訪(fǎng)問(wèn)的,不要求高精度的定時(shí)操作。這樣,微控制器在啟動(dòng)轉換和讀取轉換結果時(shí),可工作于環(huán)形振蕩器。由于避免了穩定外部晶振所需的“死時(shí)間”,這會(huì )進(jìn)一步節省功率。圖7展示了兩個(gè)8051系統執行上述“跑跑停?!比蝿?wù)時(shí)的工作情況。正如圖7中所看到的,在緊隨著(zhù)退出停機模式的程序運行中,功率節省非常顯著(zhù)。除了因采用PMM2代替空閑模式所帶來(lái)的功率節省外,晶體預熱時(shí)間的省略意味著(zhù)程序可以更快地返回停機模式。在1秒鐘的轉換延遲期間,采用環(huán)振蕩器工作很大程度上減慢了處理器的速度,可節省很多功率。 8051系列微控制器一直是世界最流行的處理器之一。它的簡(jiǎn)單易用相對較高的性能對很多應用十分理想,包括便攜式和手持式產(chǎn)品。Dallas高速微控制器的出現,為現有的8051系統提供了一條改善用電效率、同時(shí)又無(wú)需再設計的新出路。
評論