低功耗嵌入式系統(tǒng)的設(shè)計(jì)考量:一般設(shè)計(jì)考量
d. 審慎使用I/O:
避免在系統(tǒng)中隨機(jī)分配控制器I/O引腳。如果引腳隨機(jī)分布在不同端口,則需要對(duì)每個(gè)端口單獨(dú)處理,這樣會(huì)增加控制它們所需的寄存器寫入數(shù)。為解決這一問題,可以按最小端口數(shù)對(duì)輸入引腳和輸出引腳進(jìn)行分組,從而實(shí)現(xiàn)以最小的寄存器寫入數(shù)完成讀取與寫入。
在引腳用于驅(qū)動(dòng)LED和其它類似負(fù)載的地方,應(yīng)使用引腳的開漏驅(qū)動(dòng)模式,這些負(fù)載的一端固定在VDD或接地上。這種驅(qū)動(dòng)模式可降低通過I/O引腳的漏電流,因此可降低功耗。
e. 選擇正確的外設(shè):
在系統(tǒng)設(shè)計(jì)中應(yīng)使用支持低功耗模式、在工作模式下支持低功耗的外設(shè)組件,以降低設(shè)計(jì)的總體功耗。
f. 審慎使用系統(tǒng)時(shí)鐘:
定義系統(tǒng)時(shí)鐘的行為有助于降低系統(tǒng)功耗。遵循通用系統(tǒng)時(shí)鐘相關(guān)設(shè)計(jì)實(shí)踐可幫助在幾乎每個(gè)系統(tǒng)中實(shí)現(xiàn)低功耗。
● 在系統(tǒng)中使用低頻率時(shí)鐘降低動(dòng)態(tài)功耗。
● 在執(zhí)行計(jì)算密集型任務(wù)時(shí)提升系統(tǒng)時(shí)鐘,可通過縮短完成任務(wù)的時(shí)間,降低平均功耗。
● 優(yōu)先使用系統(tǒng)時(shí)鐘,而非外部時(shí)鐘。
● 在CPU等待通信傳輸完成時(shí),應(yīng)關(guān)閉CPU,只開啟通信模塊的時(shí)鐘。在完成該任務(wù)后,它可獲得一個(gè)中斷信號(hào),恢復(fù)代碼執(zhí)行。
g. 電流門控:
一般情況下,熱敏電阻等無源傳感器工作在分壓器模式下,因此一直都在消耗系統(tǒng)電流。為降低這種情況下的功耗,我們可以在通過采樣傳感器網(wǎng)絡(luò)獲得相關(guān)數(shù)據(jù)之前為其提供電源,并在數(shù)據(jù)采樣完成后切斷電源。這在傳感器需要定期讀取的情況下才有用。
但當(dāng)傳感器必須保持工作狀態(tài)才能檢測(cè)環(huán)境中的異?,F(xiàn)象時(shí),CPU可在整個(gè)傳感過程中保持低功耗模式。CPU一旦收到傳感器的中斷/數(shù)據(jù)信息,就會(huì)恢復(fù)工作模式。類似邏輯可用于讀取開關(guān)狀態(tài),以判斷它是處于開啟還是關(guān)閉狀態(tài)。
2. 固件考量:
a. 減少函數(shù)調(diào)用:
每次函數(shù)調(diào)用都將涉及多重冗余運(yùn)算,比如堆棧上的添加與取出運(yùn)算(用于重新加載程序的計(jì)數(shù)器和寄存器)。這些運(yùn)算的每一次工作都會(huì)耗用多個(gè)時(shí)鐘周期,應(yīng)盡量避免。對(duì)于簡(jiǎn)短函數(shù)而言,函數(shù)調(diào)用可采用能夠布置內(nèi)聯(lián)代碼的宏命令替換。這有助于減少CPU加載,進(jìn)而降低相同運(yùn)算所需的功耗。然而,每種方法都有其自身的優(yōu)缺點(diǎn)。宏命令需要更大的存儲(chǔ)器,這對(duì)寫入高密度固件來說是一個(gè)問題,因?yàn)樗赡軙?huì)增大系統(tǒng)成本。
b. 為頻繁重復(fù)的輸入值使用查找表:
通常會(huì)有一部分輸入值的使用頻率大于其它輸入值。通過創(chuàng)建與這些輸入值對(duì)應(yīng)的查找表,在遇到這些輸入其中之一時(shí),可縮短計(jì)算時(shí)間,進(jìn)而可降低功耗。
這種方法在當(dāng)完成計(jì)算后需要查找值的應(yīng)用中比較容易看到,比如電機(jī)應(yīng)用中角度正弦與余弦的計(jì)算。在這類應(yīng)用中,會(huì)有一系列頻繁遇到的值(相比之下,其它值遇到的頻率較低)。正弦值或余弦值的計(jì)算需要較長(zhǎng)的時(shí)間,因此對(duì)于該頻繁重復(fù)的角度而言,其正弦及余弦的預(yù)計(jì)算值可存儲(chǔ)在查找表中。每次遇到這些角度中的一種時(shí),處理器便可查找該表,用在此找到的值進(jìn)行替代,不必計(jì)算。
c. 使用中斷,無需輪詢:
在復(fù)雜的嵌入式系統(tǒng)中,CPU會(huì)花大部分時(shí)間來等待某項(xiàng)工作的完成,然后再進(jìn)入下一個(gè)步驟。當(dāng)前提供的大多數(shù)SoC都提供能在無需CPU干預(yù)的情況下完成大多數(shù)任務(wù)的硬件模塊。在需要CPU干預(yù)時(shí),它們會(huì)以中斷的方式發(fā)出信號(hào),喚醒CPU。例如一般在采樣數(shù)據(jù)完成后,ADC會(huì)發(fā)出中斷信號(hào)。這樣就無需輪詢來自ADC的數(shù)據(jù)。因此CPU可以進(jìn)入低功耗模式,只在數(shù)據(jù)準(zhǔn)備處理時(shí)喚醒。
d. 自適應(yīng)時(shí)鐘門控和電源門控
一個(gè)典型的系統(tǒng)會(huì)使用微控制器的多個(gè)模塊,但在任何給定時(shí)間點(diǎn)上,不會(huì)同時(shí)使用所有的模塊。因此可以對(duì)這些模塊的時(shí)鐘進(jìn)行門控,降低這些模塊的動(dòng)態(tài)功耗,從而節(jié)省電源。此外,這也有助于降低峰值電流需求,這是鈕扣電池供電設(shè)計(jì)的重要考慮因素。PSoC系列器件允許單獨(dú)禁用未使用的模塊。
這個(gè)部分我們討論了創(chuàng)建低功耗嵌入式系統(tǒng)的常見設(shè)計(jì)考量。在第2部分中,我們不僅將討論低功耗應(yīng)用的實(shí)例、低功耗與系統(tǒng)性能的權(quán)衡取舍,而且還將提供使用上述技巧的低功耗系統(tǒng)設(shè)計(jì)實(shí)例。
評(píng)論