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