嵌入式系統(tǒng)中的低功耗設(shè)計(jì)
經(jīng)過近幾年的快速發(fā)展,嵌入式系統(tǒng)(embedded system)已經(jīng)成為電子信息產(chǎn)業(yè)中最具增長力的一個(gè)分支。隨著手機(jī)、pda、gps、機(jī)頂盒等新興產(chǎn)品的大量應(yīng)用,嵌入式系統(tǒng)的市場(chǎng)正在以每年30%的速度遞增(idc預(yù)測(cè)),嵌入式系統(tǒng)的設(shè)計(jì)也成為軟硬件工程師越來越關(guān)心的話題。 在嵌入式系統(tǒng)的設(shè)計(jì)中,低功耗設(shè)計(jì)(low-power design)是許多設(shè)計(jì)人員必須面對(duì)的問題,其原因在于嵌入式系統(tǒng)被廣泛應(yīng)用于便攜式和移動(dòng)性較強(qiáng)的產(chǎn)品中去,而這些產(chǎn)品不是一直都有充足的電源供應(yīng),往往是靠電池來供電,所以設(shè)計(jì)人員從每一個(gè)細(xì)節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時(shí)間。事實(shí)上,從全局來考慮低功耗設(shè)計(jì)已經(jīng)成為了一個(gè)越來越迫切的問題?! ∧敲?我們應(yīng)該從哪些方面來考慮低功耗設(shè)計(jì)呢?筆者認(rèn)為應(yīng)從以下幾方面綜合考慮: 處理器的選擇 接口驅(qū)動(dòng)電路設(shè)計(jì) 動(dòng)態(tài)電源管理 電源供給電路的選擇 下面我們分別進(jìn)行討論: 一、處理器的選擇 我們對(duì)一個(gè)嵌入式系統(tǒng)的選型往往是從其cpu和操作系統(tǒng)(os)開始的,一旦這兩者選定,整個(gè)大的系統(tǒng)框架便選定了。我們?cè)谶x擇一個(gè)cpu的時(shí)候,一般更注意其性能的優(yōu)劣(比如時(shí)鐘頻率等)及所提供的接口和功能的多少,往往忽視其功耗特性。但是因?yàn)閏pu是嵌入式系統(tǒng)功率消耗的主要來源---對(duì)于手持設(shè)備來講,它幾乎占據(jù)了除顯示屏以外的整個(gè)系統(tǒng)功耗的一半以上(視系統(tǒng)具體情況而定),所以選擇合適的cpu對(duì)于最后的系統(tǒng)功耗大小有舉足輕重的影響?! ∫话愕那闆r下,我們是在cpu的性能(performance)和功耗(power consumption)方面進(jìn)行比較和選擇。通??梢圆捎妹繄?zhí)行1m次指令所消耗的能量來進(jìn)行衡量,即watt/mips。但是,這僅僅是一個(gè)參考指標(biāo),實(shí)際上各個(gè)cpu的體系結(jié)構(gòu)相差很大,衡量性能的方式也不盡相同,所以,我們還應(yīng)該進(jìn)一步分析一些細(xì)節(jié)?! ∥覀儼裞pu的功率消耗分為兩大部分:內(nèi)核消耗功率pcore和外部接口控制器消耗功率pi/o,總的功率等于兩者之和,即p=pcore+pi/o。對(duì)于pcore,關(guān)鍵在于其供電電壓和時(shí)鐘頻率的高低;對(duì)于pi/o來講,除了留意各個(gè)專門i/o控制器的功耗外,還必須關(guān)注地址和數(shù)據(jù)總線寬度。下面對(duì)兩者分別進(jìn)行討論: 1、cpu供電電壓和時(shí)鐘頻率 我們知道,在數(shù)字集成電路設(shè)計(jì)中,cmos電路的靜態(tài)功耗很低,與其動(dòng)態(tài)功耗相比基本可以忽略不計(jì),故暫不考慮。其動(dòng)態(tài)功耗計(jì)算公式為: pd=ctv2f 式中,pd---cmos芯片的動(dòng)態(tài)功耗 ct----cmos芯片的負(fù)載電容 v----cmos芯片的工作電壓 f-----cmos芯片的工作頻率 由上式可知,cmos電路中的功率消耗是與電路的開關(guān)頻率呈線性關(guān)系,與供電電壓呈二次平方關(guān)系。對(duì)于一顆cpu來講, vcore電壓越高,時(shí)鐘頻率越快,則功率消耗越大。所以,在能夠滿足功能正常的前提下,盡可能選擇低電壓工作的cpu能夠在總體功耗方面得到較好的效果。對(duì)于已經(jīng)選定的cpu來講,降低供電電壓和工作頻率,也是一條節(jié)省功率的可行之路?! ?、總線寬度 我們還經(jīng)常陷入一個(gè)誤區(qū),即:cpu外部總線寬度越寬越好。如果我們僅僅從數(shù)據(jù)傳輸速度上來講,也許這個(gè)觀點(diǎn)是對(duì)的,但如果在一個(gè)對(duì)功耗相當(dāng)敏感的設(shè)計(jì)來說,這個(gè)觀點(diǎn)就不一定正確了?! ⊥瑯右霉絧d=ctv2f ,對(duì)于每一條線(地址等數(shù)據(jù)線)而言,都會(huì)面臨這樣的功率消耗,顯而易見,當(dāng)總線寬度越寬的時(shí)候,功耗自然越大。每條線路的容性負(fù)載都不太一樣,但一般都在4~12pf之間。我們來看下面一個(gè)例子:一片1mbit flash通過8bit和16bit的總線與cpu相連,總線頻率為4mhz ,總線電壓為3.3v。我們可以得到以下結(jié)果: 由上可見,采用16-bit總線和采用8-bit總線會(huì)有3.7mw的功耗差異。當(dāng)然,如果需要大量頻繁地存取數(shù)據(jù)的場(chǎng)合下,用8-bit總線不見得會(huì)經(jīng)濟(jì),因?yàn)樵黾恿俗x寫周期。 另外,從上面的例子我們也可以看到:如果cpu采用內(nèi)置flash的方式,也可大大地降低系統(tǒng)功率消耗?! 《⒔涌隍?qū)動(dòng)電路的低功耗設(shè)計(jì) 接口電路的低功耗設(shè)計(jì),往往是容易被大家所忽略的一個(gè)環(huán)節(jié),在這個(gè)環(huán)節(jié)里,我們除了考慮選用靜態(tài)電流較低的外圍芯片外,還應(yīng)該考慮以下幾個(gè)因素: 上拉電阻/下拉電阻的選取 對(duì)懸空腳的處理 buffer的必要性 通常我們習(xí)慣隨意地確定一個(gè)上拉電阻值,而沒有經(jīng)過仔細(xì)地計(jì)算。現(xiàn)在我們來簡(jiǎn)單計(jì)算一下,如果在一個(gè)3.3v的系統(tǒng)里用4.7kω為上拉電阻,當(dāng)輸出為低的時(shí)候,每只腳上的電流消耗就為0.7ma,如果有10個(gè)這樣的信號(hào)腳時(shí),就會(huì)有7ma電流消耗在這上面。所以我們應(yīng)該在考慮在能夠正常驅(qū)動(dòng)后級(jí)的情況下(即考慮ic的vih或vil),盡可