嵌入式系統 的低功耗設計

admin @ 2014-03-26 , reply:0

摘要:通過對幾個方面的分析較為全面地介紹了嵌入式系統的低功耗設計方法。其中涉及到了CMOS器件功耗的理論分析,線性穩壓和DC to DC的電路介紹, 並以實際的晶元和電路比較進行了功耗分析,較為綜合地總結了低功耗設計的若干方法和技巧。

關鍵詞:低功耗設計(Low-Power Design)、動態電源管理(DPM)、線性穩壓(Linear Regulator)、DC to DC、 LDO(Low Drop-Out)

經過近幾年的快速發展,嵌入式系統(Embedded system)已經成為電子信息產業中最具增長力的一個分支。隨著手機、PDA、GPS、機頂盒等新興產品的大量應用,嵌入式系統的市場正在以每年30% 的速度遞增(IDC預測),嵌入式系統的設計也成為軟硬體工程師越來越關心的話題。

在嵌入式系統的設計中,低功耗設計(Low-Power Design)是許多設計人員必須面對的問題,其原因在於嵌入式系統被廣泛應用於攜帶型和移動性較強的產品中去,而這些產品不是一直都有充足的電源供應,往往是靠電池來供電,所以設計人員從每一個細節來考慮降低功率消耗,從而儘可能地延長電池使用時間。事實上,從全局來考慮低功耗設計已經成為了一個越來越迫切的問題。

那麼,我們應該從哪些方面來考慮低功耗設計呢?筆者認為應從以下幾方面綜合考慮:

  1. 處理器的選擇
  2. 介面驅動電路設計
  3. 動態電源管理
  4. 電源供給電路的選擇
下面我們分別進行討論:

一、處理器的選擇

我們對一個嵌入式系統的選型往往是從其CPU和操作系統(OS)開始的,一旦這兩者選定,整個大的系統框架便選定了。我們在選擇一個CPU 的時候,一般更注意其性能的優劣(比如時鐘頻率等)及所提供的介面和功能的多少,往往忽視其功耗特性。但是因為CPU是嵌入式系統功率消耗的主要來源-- -對於手持設備來講,它幾乎佔據了除顯示屏以外的整個系統功耗的一半以上(視系統具體情況而定),所以選擇合適的CPU對於最後的系統功耗大小有舉足輕重的影響。

一般的情況下,我們是在CPU的性能(Performance)和功耗(Power Consumption)方面進行比較和選擇。通常可以採用每執行1M次指令所消耗的能量來進行衡量,即Watt/MIPS。但是,這僅僅是一個參考指標,實際上各個CPU的體系結構相差很大,衡量性能的方式也不盡相同,所以,我們還應該進一步分析一些細節。

我們把CPU的功率消耗分為兩大部分:內核消耗功率PCORE和外部介面控制器消耗功率PI/O,總的功率等於兩者之和,即P= PCORE+PI/O。對於PCORE,關鍵在於其供電電壓和時鐘頻率的高低;對於PI/O來講,除了留意各個專門I/O控制器的功耗外,還必須關注地址和數據匯流排寬度。下面對兩者分別進行討論:

1、CPU供電電壓和時鐘頻率

我們知道,在數字集成電路設計中,CMOS電路的靜態功耗很低,與其動態功耗相比基本可以忽略不計,故暫不考慮。其動態功耗計算公式為:

Pd=CTV2f

式中,Pd---CMOS晶元的動態功耗
CT----CMOS晶元的負載電容
V----CMOS晶元的工作電壓
f-----CMOS晶元的工作頻率

由上式可知,CMOS電路中的功率消耗是與電路的開關頻率呈線性關係,與供電電壓呈二次平方關係。對於一顆CPU來講,Vcore電壓越高,時鐘頻率越快,則功率消耗越大。所以,在能夠滿足功能正常的前提下,儘可能選擇低電壓工作的CPU能夠在總體功耗方面得到較好的效果。對於已經選定的 CPU來講,降低供電電壓和工作頻率,也是一條節省功率的可行之路。

2、匯流排寬度

我們還經常陷入一個誤區,即:CPU外部匯流排寬度越寬越好。如果我們僅僅從數據傳輸速度上來講,也許這個觀點是對的,但如果在一個對功耗相當敏感的設計來說,這個觀點就不一定正確了。

同樣引用公式Pd=CTV2f ,對於每一條線(地址等數據線)而言,都會面臨這樣的功率消耗,顯而易見,當匯流排寬度越寬的時候,功耗自然越大。每條線路的容性負載都不太一樣,但一般都在4~12PF之間。我們來看下面一個例子:一片1Mbit Flash通過8bit和16bit的 匯流排與CPU相連,匯流排頻率為4MHZ ,匯流排電壓為3.3V。我們可以得到以下結果:

由上可見,採用16-bit匯流排和採用8-bit匯流排會有3.7mw的功耗差異。

當然,如果需要大量頻繁地存取數據的場合下,用8-bit匯流排不見得會經濟,因為增加了讀寫周期。

另外,從上面的例子我們也可以看到:如果CPU採用內置Flash的方式,也可大大地降低系統功率消耗。

二、介面驅動電路的低功耗設計

介面電路的低功耗設計,往往是容易被大家所忽略的一個環節,在這個環節里,我們除了考慮選用靜態電流較低的外圍晶元外,還應該考慮以下幾個因素:

  1. 上拉電阻/下拉電阻的選取
  2. 對懸空腳的處理
  3. Buffer的必要性
通常我們習慣隨意地確定一個上拉電阻值,而沒有經過仔細地計算。現在我們來簡單計算一下,如果在一個3.3V的系統里用4.7KΩ為上拉電阻,當輸出為低的時候,每隻腳上的電流消耗就為0.7mA,如果有10個這樣的信號腳時,就會有7mA電流消耗在這上面。所以我們應該在考慮在能夠正常驅動后級的情況下(即考慮IC的VIH或VIL),儘可能選取更大的阻值。現在很多應用設計中的上拉電阻值甚至高達幾百KΩ。另外,當一個信號在多數情況下時為低的時候,我們也可以考慮用下拉電阻以節省功率。

CMOS器件的懸空腳也應該引起我們的重視。因為CMOS懸空的輸入端的輸入阻抗極高,很可能感應一些電荷導致器件被高壓擊穿,而且還會導致輸入端信號電平隨機變化,導致CPU在休眠時不斷地被喚醒,從而無法進入休眠狀態或其他莫名其妙的故障,所以正確的方法是將未使用到的輸入端接到VCC或地。

Buffer有很多功能,如電平轉換,增加驅動能力,數據傳輸的方向控制等等,但如果僅僅基於驅動能力的考慮增加Buffer的話,我們就應該慎重考慮了,因為過驅動會導致更多的能量被白白浪費掉。所以我們應該仔細檢查晶元的最大輸出電流IOH和IOL是否足以驅動下級IC,如果可以通過選取合適的前後級晶元來避免Buffer的使用,對於能量來講是一個很大的節約。

三、動態電源管理(DPM)

所謂動態的電源管理就是在系統運行期間通過對系統的時鐘或電壓的動態控制來達到節省功率的目的,這種動態控制是與系統的運行狀態密切相關的,這個工作往往通過軟體來實現。

1、選取不同工作模式

如前所述,系統時鐘對於功耗大小有非常明顯的影響。所以我們除了著重於滿足性能的需求外,還必須考慮如何動態地設置時鐘來達到功率的最大程度節約。CPU內部的各種頻率都是通過外部晶振頻率經由內部鎖相環(PLL)倍頻式后產生的。於是,是否可以通過內部寄存器設置各種工作頻率的高低成為控制功耗的一個關鍵因素。現在很多CPU都有多種工作模式,我們可以通過控制CPU進入不同的模式來達到省電的目的。

我們以SAMSUNG S3C2410X (32bit ARM 920T內核)為例,它提供了四種工作模式:正常模式、空閑模式、休眠模式、關機模式,各種模式的功耗如下:

由上圖可見,CPU在全速運行的時候比在空閑或者休眠的時候消耗的功率大得多。省電的原則就是讓正常運行模式遠比空閑、休眠模式少佔用時間。在類似PDA的設備中,系統在全速運行的時候遠比空閑的時候少,所以我們可以通過設置使CPU儘可能工作在空閑狀態,然後通過相應的中斷喚醒CPU,恢復到正常工作模式,處理響應的事件,然後再進入空閑模式。

2、關閉不需要的外設控制器

一般來講,CPU都提供各種各樣的介面控制器,如I2C、I2S、LCD、Flash、Timer、UART、SPI、USB等等,但這些控制器在一個設計里一般不會全部都用到,所以我們對於這些不用的控制器往往任其處於各種狀態而不用花心思去管。但是,當你想儘可能節省功耗的情況下,則必須關注它們的狀態,因為如果不將其關閉,即使它們沒有處於工作狀態,但是仍然會消耗電流。仍以S3C2410X來講:

從上表我們可以看到,通過設置寄存器我們可以有選擇地關閉不需要的功能模塊,以達到節省電的目的,比如在我們的實際應用中,ADC、 I2C、I2S和SPI都沒有用到,通過CLKCON寄存器的設置,我們可以節省2mA的電流。當然,也可以動態關閉一些仍然需要的外設控制器來進一步節省能量。如在空閑模式下,CPU 內核停止運行,我們還可以進一步關閉一些其他的外設控制器,如USB,SDI,FLASH等,只要保證喚醒CPU的I/O控制器正常工作即可,如通過 UART喚醒,則UART控制器不能被關閉。等到CPU被喚醒后,再將USB、SDI、Flash等控制器再打開。

上面兩種方式只是動態電源管理的最為簡單的實現。在這兩種方式中,一種是通過改變了系統的時鐘頻率,另一種是通過控制外設控制器的開關來達到節約能量的目的。在最近的研究中,已經有人把目光投入到了同時動態改變處理器的電壓和頻率來進一步節省功率,如IBM和MontaVista合作進行的嵌入式系統的動態電源管理的研究。這是一個更為複雜、也更為系統的工程,它涉及了從硬體到操作系統以及應用層的有關內容。

四、電源供給電路

在數字電路設計中,工程師往往習慣於採用最簡單的方式來完成電源的設計,但在對功耗要求嚴格的情況下,我們就必須對採用何種電壓變換結構仔細考慮一番再做決定。

通常來講,我們有以下幾種進行電壓轉換的方式:

  1. 線性穩壓(Linear Regulator)
  2. DC to DC
  3. LDO(Low Drop-Out)
其中LDO本質上還是一種線性穩壓,主要用於壓差較小的場合。所以我們將其合併為線性穩壓來談。

對於線性穩壓來說,其特點時電路結構簡單,所需元件數量少,輸入和輸出壓差可以很大,但其致命弱點就是效率低,功耗高。其效率η完全取決於輸出電壓大小。下圖是線性穩壓器LM7805的輸出電流大小相對壓差的曲線圖。

由圖中可見,壓差越大,可提供的最大輸出電流越小。假設採用LM7805,輸入12V,輸出電壓為5V,壓差為7V, 輸出的電流為1A的情況下,我們可以計算出消費在線性穩壓器上的功率為P=ΔV*IOUT=7*1=7w,效率僅為η=5×1/(5*1+7*1)= 41.7%,由這個結果我們可以看出,有一大半功率消耗在IC本身上。

DC to DC電路的特點是效率高,升降壓靈活,但缺點時電路相對複雜,干擾較大。一般常見的由Boost和Buck兩種電路,前者用於升壓,後者用於降壓,示意圖如下:

這兩種電路的核心是通過MOS管的開關來控制電感和電容間的能量轉換。調節MOS管柵極脈衝信號的占空比可以控制MOS管的導通和關閉,從而改變輸出電壓的高低。

下圖是一個從12V轉換到5V的DC to DC電路圖,其控制IC採用國家半導體(NS)的LM2596,實際是採用Buck電路,其MOSFET和相關的控制電路位於晶元內部,其轉換效率圖如下:

由轉換效率圖可見,當輸入為12v,輸出為5v時,轉換效率約為82%,為線性穩壓器轉換效率的一倍。LM2596的開關頻率為固定的 130KHZ,如果我們提升器件的開關頻率,如採用NS的LM2676時(260KHZ開關頻率),在同樣的應用條件下,效率可達88%以上。

從上面的論述中我們可見,在適當的情況下使用DC-DC的電壓轉換線路,可以有效地節約能量,降低整機功耗。

參考文獻:
1、 Dynamic Power Management for Embedded System, Version 1.1 November 19, 2002, IBM& MontaVista Software
2、 Low Power Design , Dec 28 2001, Mike Willey & Kris Stafford, www. embedded.com
3、 System Level Power-Performance Trade-Offs in Embedded Systems Using Voltage and Frequency Scaling of Off-Chip Buses and Memory, Kiran Puttaswamy, Kyu-Won Choi, Jun Cheol Park等

作者:車健
副總
上海博泰電腦科技有限公司




[admin via 研發互助社區 ] 嵌入式系統 的低功耗設計已經有3132次圍觀

http://www.cocdig.com/docs/show-post-45169.html