Blackfin處理器功耗由內(nèi)部功耗,、外部功耗和實時鐘功耗組成,。內(nèi)部功耗由內(nèi)部動態(tài)電流和靜態(tài)電流引起。外部功耗取決于處理器內(nèi)外設(shè)的使用情況,,在不同的應(yīng)用場合,,片內(nèi)外設(shè)的使用有所不同,外部功耗也會不同,。實時鐘功耗一般處于特定范圍之內(nèi),,工作溫度為25~85℃時,實時鐘功耗范圍為0.067~0.1825mW,。Blackfin系列處理器提供了動態(tài)電源管理功能,,靈活的對時鐘頻率、工作模式及內(nèi)核電壓進(jìn)
行調(diào)整,,以Blackfin533為例闡述Blackfin系列處理器低功耗設(shè)計的具體方法,。
1 時鐘頻率控制
現(xiàn)代DSP芯片中大量使用CMOS FET(Complementary Metal-oxide Semiconductor FET互補(bǔ)金屬氧化物場效應(yīng)管)開關(guān),穩(wěn)定時或者處于完全打開狀態(tài)(很低的負(fù)載),,或者處于完全關(guān)閉狀態(tài),,但是在兩種狀態(tài)轉(zhuǎn)換過程中會產(chǎn)生漏電流,所以開關(guān)頻率很高時,,F(xiàn)ET充放電會引起很大的電源功耗,。因此,通過降低系統(tǒng)時鐘頻率可以有效降低系統(tǒng)功耗,。
Blackfin533通過外部時鐘輸入引腳CLKIN接收外部時鐘源(10~40 MHz)的時鐘輸入,,再通過鎖相環(huán)(PLL),,電路模塊產(chǎn)生內(nèi)核時鐘(CCLK)和系統(tǒng)時鐘(SCLK),通過設(shè)置PLL相關(guān)寄存器實現(xiàn)對CCLK和SCLK的頻率控制,。PLL系統(tǒng)如圖l所示,。
CCLK和SCLK均由VCO(Voltage-ControlledOscillator-壓控振蕩器)輸出的時鐘分頻后得到。VCO輸出時鐘頻率由PLL控制寄存器(PLL_CTL)設(shè)置,,CCLK和SCLK對VCO的分頻因子由PLL分頻寄存器(PLL_DIV)設(shè)置,。PLL_CTL各位說明如表1所示。
對于不同的DF和MSEL值,,VCO輸出相應(yīng)的時鐘頻率,,對應(yīng)關(guān)系如表2所示。
需要注意的是VCO最小輸出時鐘頻率為50 MHz,,最大輸出頻率為內(nèi)核時鐘CCLK頻率的最大值,。對BlackfinBF533,CCLK最大值為600 MHz,,而BF532/531的CCLK最大值為400 MHz,。所以VCO輸出頻率不應(yīng)超出范圍50MHz~CCLK。
通過設(shè)置PLL分頻寄存器PLL_DIV中的CSEL(PLL_DIV的4~5位)確定CCLK,,設(shè)置SSEL(PLL_DIV的0~3位)確定SCLK,,具體對應(yīng)關(guān)系如表3所示。
由于SCLK頻率不能高于CCLK的頻率,,所以在對SSEL參數(shù)設(shè)置時,,需要確定當(dāng)前CCLK的頻率。
假設(shè)外部時鐘輸入CLKIN=27 MHz,,將CCLK設(shè)置為594 MHz(27×22),,SCLK設(shè)置為118.8 MHz(594/5),程序代碼如下
2 工作模式轉(zhuǎn)換
Blackfin533具有4種工作模式:全速,、激活,、睡眠、深度睡眠,,功耗大小關(guān)系為:全速>激活>睡眠>深度睡眠,。不同模式下處理器的內(nèi)核電壓及時鐘設(shè)置不同,如表4所示,。所以靈活調(diào)整系統(tǒng)的工作模式可以有效的降低系統(tǒng)的功耗,。
在轉(zhuǎn)換工作模式時,應(yīng)該明確處理器當(dāng)前的工作模式,,而系統(tǒng)的工作模式由PLL控制寄存器(PLL_CTL)中的PLL_OFF,,BYPASS,STOPCK和PDWN狀態(tài)位共同確定。圖2說明了各種工作模式轉(zhuǎn)換之間的聯(lián)系以及轉(zhuǎn)換條件,。
通過設(shè)置PLL_CTL寄存器實現(xiàn)工作模式的轉(zhuǎn)換,,新的設(shè)置不會立即生效,需要先執(zhí)行下面的一個程序段
從當(dāng)前工作模式轉(zhuǎn)換至另一個工作模式的具體過程簡述如下
(1)設(shè)置喚醒請求,,目的:將處理器喚醒,,使PLL_CTL中新的設(shè)置生效以便進(jìn)入新的工作模式。
(2)按模式轉(zhuǎn)換條件,,設(shè)置PLL_CTL,。
(3)禁止一切中斷,將處理器置入空閑狀態(tài),,等待喚醒請求,。
(4)喚醒后恢復(fù)中斷,PLL_CTL中設(shè)置的新值開始生效,,處理器進(jìn)入新的工作模式,繼續(xù)執(zhí)行其他指令,。
默認(rèn)狀態(tài)下,,所有的中斷都能產(chǎn)生1個喚醒請求,即當(dāng)1個中斷產(chǎn)生時,,處理器內(nèi)核就會收到1個喚醒請求,,如果此時處于空閑狀態(tài),則會退出此狀態(tài),,處理相應(yīng)(中斷)程序,。通過系統(tǒng)中斷喚醒使能寄存器(SIC_IWR)設(shè)置中斷與喚醒請求之間的對應(yīng)關(guān)系,其中24~31位保留,,其他位分別對應(yīng)了不同的中斷源,,如定時器中斷、看門狗定時器中斷,、DMA中斷等,,某一位如果置1,則相應(yīng)中斷發(fā)生時就會產(chǎn)生1個喚醒事件,。系統(tǒng)復(fù)位后,,SIC_IWR中的所有位均為1。
工作模式轉(zhuǎn)換的關(guān)鍵就是對PLL_CTL的設(shè)置,,這就要求確認(rèn)系統(tǒng)當(dāng)前的工作模式,,再根據(jù)圖2所示的轉(zhuǎn)換條件設(shè)置PLL_CTL寄存器。另外必須設(shè)置喚醒請求,,因為它有助于確定處理器何時被喚醒,,進(jìn)入預(yù)期的工作狀態(tài)。
下面是一個從全速模式到激活模式轉(zhuǎn)換的實例:
對喚醒請求進(jìn)行設(shè)置,,本例中利用看門狗定時器中斷來產(chǎn)生這個喚醒請求,。
(1)設(shè)置定時器的計數(shù)值:通過看門狗計數(shù)寄存器(WDOG_CNT)設(shè)置,。
(2)設(shè)置相應(yīng)事件:當(dāng)定時器計數(shù)至O時產(chǎn)生中斷,即看門狗控制寄存器(WDOG_CTL)第3位置1,,其余位為0,。
(3)利用看門狗中斷產(chǎn)生喚醒請求:SIC_IWR寄存器第24位置1,其他位為0,,使能看門狗中斷喚醒請求,。
3 片內(nèi)外設(shè)控制
系統(tǒng)設(shè)計中不是所有外設(shè)都能用到,而系統(tǒng)具體運(yùn)行過程中,,有些外設(shè)也不需要一直工作,。所以,在適當(dāng)?shù)臅r候可以通過禁用不使用的外設(shè)來降低系統(tǒng)的功耗,。Blackfin535有專門的外設(shè)時鐘寄存器(PLL_IOCK),,統(tǒng)一控制所有外設(shè)的時鐘,禁用某外設(shè)只需要將PLL_IOCK中對應(yīng)位置0即可,。Blackfin533/532/531沒有這種統(tǒng)一的時鐘控制寄存器,,只能通過每個外設(shè)的控制寄存器來使能或禁用外設(shè)。
4 內(nèi)核電壓控制
Blackfin系列處理器通過片內(nèi)的調(diào)壓器可以將外部的2.2~3.6 V的供電電壓轉(zhuǎn)換成0.85~1.2 V,,為內(nèi)核供電,。由于功耗與電壓的平方成正比,降低內(nèi)核電壓可有效降低系統(tǒng)功耗,。片內(nèi)的調(diào)壓器需要搭配一定的外部電路才能實現(xiàn)其調(diào)壓功能,,外部電路圖3所示。
VDDEXT為I/O供電電壓,,VDDINT為內(nèi)核供電電壓,,VROUT為外部FET/BJT驅(qū)動,用于控制開關(guān)頻率,。
通過調(diào)壓器控制寄存器(VR_CTL)的VLEV(4~7位)來設(shè)置內(nèi)核電壓值,,VLEV與電壓值的對應(yīng)關(guān)系,如表5所示,。
修改VR_CTL的VLEV值可將內(nèi)核電壓控制在0.8~1.2 V,,也可以將內(nèi)核供電完全關(guān)閉,即將VR_CTL中的FREQ(O~1位)設(shè)置為00,,此時內(nèi)核時鐘和系統(tǒng)時鐘都會停止工作,,而內(nèi)核電壓為0。修改內(nèi)核工作電壓的程序段需要放在對PLL_CTL設(shè)置程序之后執(zhí)行,。