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