本文結(jié)合MSP430系列微處理器,,詳細(xì)論述了通過控制改變MCU的時(shí)鐘頻率來降低功耗的設(shè)計(jì)方法,。
1 功耗產(chǎn)生的原因
在CMOS電路中,,功耗損失主要包括靜態(tài)功耗損失和動(dòng)態(tài)功耗損失兩部分,。其中靜態(tài)功耗主要是由反偏PN結(jié)的漏電流和晶體管的亞閾值電流引起的,其最主要的形式就是漏電損失,。其實(shí)CMOS電路理論上不會(huì)有靜電功耗損失,,因?yàn)閺墓?yīng)電源到地面沒有直接的路徑,,但實(shí)際上晶體管總會(huì)有漏電電流的出現(xiàn),從而出現(xiàn)漏電損失,。在0.18μm工藝水平之下,,其在功耗中所占比重大約為5%~10%,一般可以忽略(但是隨著工藝的提高,,供電電壓的降低,,又使其所占比重逐漸上升)。這樣,,在CMOS電路中,,動(dòng)態(tài)功耗就成了這個(gè)系統(tǒng)功耗的主要組成部分,約占整體功耗的90%以上,。定量地分析電路的動(dòng)態(tài)功耗,,可用以下公式表示:
其中:C為負(fù)載電容;VDD為電源電壓;?琢為翻轉(zhuǎn)幾率,即每個(gè)時(shí)鐘周期中發(fā)生的充放電周期個(gè)數(shù);fCLK為時(shí)鐘頻率,。從這個(gè)公式可以看到如何降低動(dòng)態(tài)功耗從而降低整個(gè)CMOS電路的功耗,。即可以減小翻轉(zhuǎn)的負(fù)載電容,降低電源電壓,,減小節(jié)點(diǎn)的翻轉(zhuǎn)幾率,,或者降低時(shí)鐘頻率。本文將主要圍繞如何動(dòng)態(tài)降低時(shí)鐘頻率實(shí)現(xiàn)低功耗設(shè)計(jì),。
2 動(dòng)態(tài)時(shí)鐘低功耗管理原理
MCU系統(tǒng)設(shè)計(jì)是個(gè)很復(fù)雜的過程,,在一些條件下可能會(huì)用到整個(gè)系統(tǒng)的所有硬件資源,但是在一些應(yīng)用中可能只需要其中很少的一部分硬件資源;在某些應(yīng)用中可能需要很高的時(shí)鐘頻率,,而在其他應(yīng)用中卻可以工作在很低的工作頻率中,。例如:當(dāng)任務(wù)量很大時(shí),MCU滿負(fù)荷工作,,則需要較高的時(shí)鐘頻率,,功耗較大;當(dāng)任務(wù)量很小時(shí),MCU負(fù)荷較輕,,所需時(shí)鐘頻率較低,,功耗就可以相應(yīng)降低。動(dòng)態(tài)配置系統(tǒng)的時(shí)鐘頻率就是以不犧牲系統(tǒng)的性能為前提,,動(dòng)態(tài)地管理系統(tǒng)的工作頻率來降低MCU的功耗,。
3 低功耗動(dòng)態(tài)時(shí)鐘實(shí)現(xiàn)
圖1為MSP430系列MCU基礎(chǔ)時(shí)鐘模塊。
MSP430基礎(chǔ)時(shí)鐘模塊包含以下3個(gè)時(shí)鐘輸入源,。
(1)LFXT1CLK 低頻時(shí)鐘源:由LFXT1振蕩器產(chǎn)生(如圖2所示),。通過軟件將狀態(tài)寄存器中OSCOff復(fù)位后,LFXT1開始工作,即系統(tǒng)采用低頻工作,。如果LFXT1CLK沒有用作SMCLK或MCLK信號(hào),,則可以用軟件將OSCOff置位,禁止LFXT1工作,。
(2)XT2CLK高頻時(shí)鐘源:由XT2振蕩器產(chǎn)生,。它產(chǎn)生時(shí)鐘信號(hào)XT2CLK,其工作特性與LFXT1振蕩器工作在高頻模式時(shí)類似,??珊?jiǎn)單地通過軟件設(shè)置XT2振蕩器是否工作,當(dāng)XT2CLK沒有用作SMCLK或MCLK信號(hào)時(shí),,關(guān)閉XT2,,選擇其他時(shí)鐘源。
(3)DCOCLK 數(shù)字控制RC振蕩器,。由集成在時(shí)鐘模塊中的DCO振蕩器產(chǎn)生,。DCO振蕩器是一個(gè)RC振蕩器,頻率可以通過軟件調(diào)節(jié),,其控制邏輯如圖3所示,。當(dāng)振蕩器LFXT1、XT2被禁止或失效時(shí),,DCO振蕩器被自動(dòng)選作MCLK的時(shí)鐘源,。因此由振蕩器失效引起的系統(tǒng)中斷請(qǐng)求可以得到響應(yīng),甚至在CPU關(guān)閉的情況下也能得到處理,。
由基礎(chǔ)時(shí)鐘模塊可以提供系統(tǒng)所需的3種時(shí)鐘信號(hào),,即:ACLK、MCLK,、SMCLK。其中輔助時(shí)鐘ACLK是LFXT1CLK信號(hào)經(jīng)1,、2,、4、8分頻后得到的,。ACLK可由軟件選作各個(gè)外圍模塊的時(shí)鐘信號(hào),,一般用于低速外設(shè);系統(tǒng)主時(shí)鐘MCLK可由軟件選擇來自LFXT1CLK、XT2CLK,、DCOCLK三者之一,,然后經(jīng)1、2,、4,、8分頻得到。MCLK主要用于CPU和系統(tǒng)。子系統(tǒng)時(shí)鐘SMCLK可由軟件選擇來自LFXT1CLK和DCOCLK,,或者XT2CLK和DCOCLK,,然后經(jīng)1、2,、4,、8分頻得到,主要用于高速外設(shè)模塊,。系統(tǒng)可以根據(jù)實(shí)際需要通過軟件來選擇合適的系統(tǒng)時(shí)鐘頻率,,這三種不同頻率的時(shí)鐘輸出給不同的模塊,從而合理利用系統(tǒng)的電源,,實(shí)現(xiàn)整個(gè)系統(tǒng)的超低功耗,,這一點(diǎn)對(duì)于電池供電的系統(tǒng)來講至關(guān)重要。在具體應(yīng)用中,,CPU及各個(gè)時(shí)鐘源的工作狀態(tài)如表1,。
4 動(dòng)態(tài)時(shí)鐘應(yīng)用實(shí)例
通過MSP430外接32768Hz晶體構(gòu)建超低功耗實(shí)時(shí)時(shí)鐘,結(jié)構(gòu)如圖4,。
部分代碼如下:
setc
Dadc.b SEC
cmp.b #060h,,SEC
jlo CLKend
clr.b SEC
dadc.b MIN
cmp.b #060h,MIN
jlo CLKend
clr.b MIN
CLKend;
令MSP430 CPU工作在突發(fā)狀態(tài),,大部分時(shí)間處于LMP3狀態(tài),,只有程序代碼中單位時(shí)間到之后,才出發(fā)一個(gè)極短暫的運(yùn)行,,運(yùn)行期間電流消耗250?滋A左右,。經(jīng)計(jì)算指令執(zhí)行時(shí)間得到,在1s時(shí)間段內(nèi)程序運(yùn)行時(shí)間僅為100μs,,系統(tǒng)平均電流約為0.83μA,,可見其工作功耗相當(dāng)?shù)汀?/p>
本文通過分析MSP430系列MCU的動(dòng)態(tài)時(shí)鐘配置,介紹了通過動(dòng)態(tài)改變MCU系統(tǒng)時(shí)鐘來達(dá)到低功耗設(shè)計(jì),。在實(shí)際應(yīng)用中,,通過軟件設(shè)置合理地使用時(shí)鐘源,可以有效實(shí)現(xiàn)低功耗設(shè)計(jì),。