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