嵌入式系統設計中的低功耗技術
摘要: 為了探討嵌入式系統的低功耗技術降低嵌入式系統的功率消耗, 文中從硬件和軟件兩個方面對嵌入式系統設計的低功耗問題進行了分析和研究。
0 引言
隨著科學的發展和微電子技術的不斷創新,嵌入式系統的應用越來越多, 并已廣泛滲透到各個領域。嵌入式系統是以應用為中心, 以電子技術和計算機技術為基礎, 軟硬件可剪裁, 能適應應用系統對功能、可靠性、穩定性、成本、體積、功耗等多方面嚴格要求的專用計算機系統。
在嵌入式系統的設計中, 低功耗設計技術成為許多設計人員逐漸關注的問題, 其原因在于嵌入式系統已被越來越多的應用在便攜式和移動性較強的產品中, 而這些產品往往要靠電池來供電。實際上, 這些年來, 有關電池的儲能密度并沒有得到大的進步。而對于便攜設備, 尤其是手持消費品而言, 如果單靠提高電池容量來提高續航能力, 似乎并不完全切合實際。因此, 為提高設備性能, 設計人員更需要從每一個細節考慮降低硬件系統本身的能耗。從而盡可能地延長電池的使用時間。事實上, 低功耗設計也已經成為一個越來越迫切的問題, 因而應該從硬件和軟件兩個方面來考慮嵌入式系統中的低功耗設計。
1 硬件的低功耗設計
1.1 硬件電路器件
由于現在絕大部分電路均采用集成電路CMOS工藝技術, 這與以前的TTL工藝相比, 本身就已經起到了降低電子元器件和整體系統功耗的作用, 因此, 應該繼續多采用CMOS集成電路工藝技術。另外, 由于采用CMOS集成工藝技術,其電路靜態功耗很小(可忽略不計), 而動態功耗較大, 因為動態功耗是指電路高低電平翻轉時產生的功耗, 在電路高低電平翻轉跳變沿期間, 電流很大, 存在較大功耗, 所以, 降低硬件電路功耗主要是降低電路動態功耗。動態功耗公式為:
其中, P代表CMOS芯片的動態功耗, C代表CMOS芯片的負載電容, V和f分別代表CMOS芯片的工作電壓和工作頻率。由公式可知, COMS硬件集成電路的功耗與工作電壓和工作頻率之間有密切的關系。因此, 使用CMOS系列電路時, 其不用的輸入端不要懸空, 因為懸空的輸入端可能存在感應信號, 并可能造成高低電平的轉換。同時, 由于轉換器件的功耗很大, 故應盡量采用輸出為高的原則。
1.2 低功耗外圍器件的選用
完成同樣的功能, 電路的實現形式有多種。例如, 盡可能地將嵌入式系統的內部存儲器RAM轉換為外部的閃存FLASH, 因為在同樣條件下,讀內部RAM比讀外部FLASH會帶來更大的功耗。也可以利用分立元件、小規模集成電路, 大規模集成電路甚至單片實現。通常使用的元器件數量越少, 系統的功耗越低。因此, 應盡量使用集成度高的器件, 以減少電路中使用元件的個數, 減少整機的功耗。
1.3 微處理器的選擇
嵌入式微處理器的功率消耗在嵌入式系統中占有相當大的部分, 所以, 選擇合適的處理器,對于嵌入式系統的整體功耗具有很大影響。微處理器的功耗主要分為兩部分: 內核功耗Pcore和外部接口控制器功耗Pio, 總功耗等于兩者之和, 即P=Pcore+Pio。對于Pcore, 其關鍵在于供電電壓和時鐘頻率的高低; 而對于Pio, 除了各個專門I/O控制器的功耗外, 還有地址/數據總線寬度, 因為總線寬度越寬, 處理能力越大, 功耗也越大。所以降低功耗, 必需讓總線位數變窄。
要降低微處理器內核的Pcore功耗, 就必須想法降低處理器的工作電壓和時鐘頻率, 其中降低微處理器的工作電壓是很有效的途徑, 也是未來發展的趨勢, 目前許多的嵌入式微處理器的工作電壓可降至2 V以下。并且高效率的處理器都提供有多種時鐘頻率和工作電壓的選擇, 以便于最大限度地節約功耗。此外, 在進行系統設計時,在工作電壓相差不大和系統處理能力許可的情況下, 還應盡可能降低微處理器的時鐘頻率, 現以起到節能的作用。以SAMSUNG S3C2410 (32 位ARM 920T內核) 為例, 它就提供了四種工作模式: 正常模式、空閑模式、休眠模式、關機模式。各種模式下的功耗如表1所列。
表1 不同工作模式的時鐘頻率與功耗對比表
由表1可知, CPU在全速運行的時候, 比在空閑或者休眠時消耗的功率大得多。省電的原則就是讓正常運行模式遠比空閑、休眠模式少占用時間。在類似PDA的設備中, 系統在全速運行時遠比空閑的時候少, 所以, 可以通過設置, 使CPU盡可能工作在空閑狀態, 使用時再通過相應的中斷喚醒CPU, 以恢復到正常工作模式來處理響應的事件, 然后再進入空閑模式。因此, 設計系統時, 如果處理能力許可, 可盡量降低處理器的時鐘頻率。
也可以動態改變處理器的時鐘頻率以降低功耗, 比如可關閉不需要的外設控制器, 并在CPU空閑時降低時鐘頻率; 而在處于工作狀態時, 再提高時鐘頻率以加快運行速度。
1.4 多CPU系統
盡管現在已有各種可在不過多加重功耗負擔的前提下提高性能的技術, 但用一個芯片來處理多種任務, 已不是一個較好的選擇。一是因為這些功能對芯片處理功能的要求可能各不相同, 二是因為一個負擔著多任務的芯片需要很高的速度, 這樣, 降低功耗就變得很困難, 這就使得多CPU 系統(MPCore) 成為一個必然的趨勢。多CPU 系統的一個明顯的優勢是可針對不同的任務處理需要, 用不同的CPU 來各盡其職, 以將自身的優勢充分發揮, 從而給予系統最優化的性能表現。另一個優勢是對功耗的控制: 假如用單CPU來完成所有的功能, 則不可避免地需要一個很高的CPU 速度, 從而造成很高的功耗, 浪費很多能源。多CPU 系統可以根據不同的任務來合理地啟動、停止相應的CPU 以完成任務, 而在不需要的時候處于停歇狀態, 從而最大限度地控制功耗。
1.5 分區/分時供電技術
對于一個嵌入式系統來說, 系統的工作量隨時都在改變, 不可能所有的組件任何時刻都在工作, 故可采用分區/分時供電技術來降低功耗,可利用開關控制電源供電單元, 在某一部分電路處于休眠狀態時, 關閉此部分電路的供電電源,僅對工作部分組件供電。其供電原理如圖1所示。
圖1 分區分時技術原理圖。
2 軟件的低功耗設計
2.1 優化編譯器
在嵌入式系統設計中, 軟件起著引導硬件活動的主導作用, 也對系統的能量消耗有很大的影響。過去幾年的研究主要是針對硬件部分, 而現在, 研究設計人員則更注重通過優化軟件部分來降低系統功耗。要想對軟件進行優化, 必須選擇正確的編譯方法, 以降低程序執行的功耗。編譯器的作用就是將由高級語言編寫的程序(如C/C++等), 翻譯成能夠在目標機上執行的程序。同時, 也使得程序的可讀性和可維護性得到保證,提高了軟件開發的效率。另外, 將程序移植到新的目標機上, 也只要用相應的編譯器對程序進行重新編譯即可, 而不必重新編寫程序。但是, 在某些情況下, 這樣會影響程序的執行性能。編譯器的有效性以及它所生成的代碼效率, 可以與匯編語言代碼相比較得出。事實上, 在一個程序中, 每一條指令都將激活微處理器中的某些硬件部件, 因此, 正確選擇指令可以降低處理器的功耗。通過優化編譯器可以進行有效的軟件低功率化, 從而生成效率更高的代碼, 以降低嵌入式設備的功耗。
2.2 采用軟件代替硬件電路
一般的硬件電路都存在功耗, 所以, 可以把具有數據運算處理功能的硬件電路用軟件來實現, 例如濾波電路, 指數、對數運算電路、抗干擾電路等。但是, 任何事情都不是絕對的, 部分硬件電路到底能否通過軟件來實現, 此外, 還要考慮處理大量的軟件數據, 需要提高處理器的性能和功耗等, 同時要考慮這是否合算。
2.3 中斷驅動技術設計
把整個嵌入式系統軟件設計成多個事件來處理, 而在系統上電初始化時, 主程序只進行系統的初始化(包括寄存器、外部設備等), 初始化完成后, 進入低功耗狀態, 然后把CPU控制的設備都接到中斷輸入端上。當外設發生了一個事件,即產生中斷信號, 使CPU退出節電狀態而進入事件處理, 事件處理完成后, 繼續進入節電狀態。
在嵌入式程序設計時, 一個程序到底使用中斷方式還是查詢方式, 對于一些簡單的應用并不那么重要, 但在其低功耗特性上卻相去甚遠。使用中斷方式, 微控制器可以什么都不做, 甚至可以進入等待模式或停止模式; 而在查詢方式下, 微控制器必須不停地訪問寄存器, 這會帶來很多額外的功耗, 所以, 用軟件進行設計時, 除非系統本身已要求采用查詢方式, 否則應盡可能采用中斷方式進行編程。
2.4 定時器延時程序的采用
當軟件設計中需要用到延時程序時, 設計人員應多使用定時器延時方法來進行設計。這是因為, 通常嵌入式處理器進入待機模式后, CPU會停止工作, 而定時器可以正常工作, 由于定時器的功耗很低, 故當處理器調用延時程序后, 嵌入式系統便可進入待機模式, 此時定時器可以繼續工作, 定時時間一旦結束, 即可喚醒CPU重新進入工作, 這樣不但降低了CPU功耗, 還提高了CPU的工作效率。而如果采用查詢方式, 則CPU會不斷地對系統進行查詢, 由于CPU時刻工作,這樣不但效率低下, 同時處理器功耗也很大。
2.5 算法優化
優化算法多出現在嵌入式DSP中, 采用大量現成的公式和計算方法, 可以節省系統內部運算的時間, 減少功耗; 另外, 在嵌入式系統允許的誤差情況下, 也可以近似用比較簡單的函數來取代復雜函數進行運算, 從而減少功率消耗。
3 結束語
嵌入式系統的設計涉及到硬件設計和軟件設計兩個方面, 在實際系統應用時, 低功耗的設計并非是單方面的因素, 需要綜合考慮各種可能的原因、條件和狀態, 應把硬件設計和軟件設計綜合起來進行考慮, 并對細節進行認真的分析, 同時對多種可能的方案和方法進行計算和總結, 這樣才可能取得較為滿意的效果, 最終達到降低系統功耗的目的。
c++相關文章:c++教程
評論