隨著可攜式和以電池供電的應用快速增加,低功耗設計已成為延長電池壽命所不可或缺的任務。此外,在決定產品尺寸、重量、和效率時,功耗也扮演了重要角色。由於消費性電子的生命週期越來越短,具可程式特性,且能輕鬆為產品增加差異化特性的FPGA在消費應用中日亦受到重視。因此,想要達到最佳的靜態與動態功耗,必須取決於選用適當的FPGA架構。
Flash-based FPGA除了本身的低功耗特性外,設計人員還可利用一些技巧來進一步降低系統整體功耗。本文將綜合介紹揮發性FPGA的電源特性,以及如何在進行板級設計時,降低系統的靜態與動態功耗,包括RAM、I/O、以及時脈樹等。
Flash-based FPGA電源特性
傳統以來,在選用FPGA元件時,成本、容量、效能、封裝形式等,通常是系統架構師或設計人員的主要考量。但隨著包括可攜式消費電子、醫療等要求低功耗的應用快速興起,現在,功耗效能也已成為選用FPGA時的首要考量。一般來說,設計人員對ASIC或FPGA的靜態與動態電源特性都相當熟悉,但卻可能不瞭解flash-based的揮發性FPGA具備有別於傳統SRAM-based的電源特性。
揮發性FPGA有兩個額外的電源要素:在系統通電時,編程所消耗的配置電源(configuration poweer),以及在FPGA元件通電時所散失的突波電源(inrush power),如圖一所示。
FPGA-based板級設計人員在選擇電源供應和電池時,必須將配置電源與突波電源都納入考慮。儘管SRAM-based FPGA供應商都試圖降低突波和編程電源,但是在單一電路板上有數顆FPGA,或它們是在不同的電路板上,卻由相同電源供電的情況下,這兩個電源成份還是會產生嚴重的負面影響。
若系統有頻繁的On/Off週期,此一額外的電源消耗就會更加嚴重,這在預估電池壽命時,一定要特別考慮進去。
另外,揮發性FPGA需要外部啟動PROM作為配置儲存,這也增加了整體的電源消耗。即使有些供應商在裝置中內建了大容量的快閃記憶體,但此額外的儲存電源還是會存在。
因此,要選擇一能夠改善電源的策略時,系統架構師與設計團隊必須了解確實的系統操作模式以及相對應的電源情境。如圖二所示,此一系統的電源特性顯示出,此系統會在不同的溫度下操作,且其工作與閒置週期時間比大約是1:1。
透過這樣的圖形顯示,有助於做出正確的電源設計策略。以圖二的案例來說,顯然,設計人員必須盡力降低溫度、靜態、以及動態電源。
降低靜態電源
只要當FPGA通電之後,不管是否運作,都一定會有靜態電流產生,而它亦稱為電晶體漏電流,此現象會隨著製程微縮日益嚴重,而且當元件在運作時,會造成溫度的上升。不過,雖然靜態電流增加,但相較於動態電流,還是比較小。
降低靜態功耗的方式有很多種,對FPGA設計人員來說,應該遵循以下三個基本原則:最小的晶粒、最少的資源、熟悉FPGA架構。
FPGA產品通常都會包括一系列不同容量與不同特性的不同晶粒。因為,晶粒越小,其靜態電源就越小,因此FGPA設計人員應該在確保效能目標可滿足的情況下,選用系列產品中晶粒最小的元件。
「最少的資源」是指,設計人員應盡量減少RAM、PLL、I/O等資源的使用。舉例來說,要降低I/O數量,設計人員就必須使用時間多工(time multiplexing),以及最少的I/O數量設計區隔,此技巧能協助關閉I/O組(bank),或降低一個bank中所需的I/O標準數量。
「熟悉FPGA架構」意味著,設計人員需瞭解PLL、RC、振盪器、I/O Bank等動態資源的各種不同斷電模式。因此,採用較低的參考電壓,可能會顯著改善靜態功耗。
而電路板設計人員在決定熱能管理、電壓水平、阻抗負載時,扮演了一個關鍵的角色。溫度上升會影響靜態電源,而靜態電源的非線性增加不只會導致靜態電源的增加,同時也會產生更嚴重的散熱問題。利用冷卻技巧盡量降低周圍溫度不是一件簡單的工作,特別是在電路板空間和成本都有限的條件下。
此外,將輸入電流驅動到完整電平、避免阻抗負載、以及將無用的接腳接地等,都是降低靜態電源的有效方法。
降低動態電源
動態電源與以下各種參數有關:
- * 使用的FPGA資源,包括邏輯模組、時脈樹、嵌入式RAM、PLL等;
- * I/O上的負載和阻抗終端(resistive termination);
- * 數據類型、訊號活動或切換率(toggle rate);
- * 訊號靜態可能性(probability)。
與降低靜態電源相較,設計人員在處理動態電源時必須更為謹慎,且須透過後佈局(post-layout)、電源模擬等分析工具,先得到明確的設計動態電源分佈圖形(power profile)。
動態電源分佈圖形能夠清楚呈現出每個FPGA所使用的資源。因為FPGA具有彈性,一個相同的裝置上,可以有多種不同的應用類型,所以若沒有深入了解實際的動態電源分佈,便無法有效地處理這個問題。圖三所示為三種不同的設計類型。分析MPEG的電源分佈,可以讓設計人員避免花時間降低I/O動態電源,但是,若對系統控制器來說,就應特別將電源最佳化和熱管理聚焦在I/O問題上。
動態電源主要是由RAM、I/O、時脈樹、邏輯電源等因素所造成,接下來將分別介紹降低不同類型動態電源的技巧。
RAM電源消耗
RAM模塊在讀/寫操作時會消耗電源。主要造成影響的訊號包括位址線(address line)、Read Enable(RE)、以及Write Enable(WE)。
通常,讀取的電源消耗會比寫入高一點,而RAM讀/寫的電源會隨連續位址的漢明距離(Hamming distance)增加而變大。因此,應該盡量在啟用讀取訊號前,先盡可能執行最多的寫入操作,然後,在切換回寫入操作前,盡可能讀取記憶體以取得所需的數據,這樣才能有效降低RAM電源消耗。
在降低峰值RAM電源方面,可以考慮採用將讀取和寫入操作置於時脈邊沿(clock edge)的反側,或是對RAM讀/寫埠上的時脈予以閘控(gate)。
I/O電源消耗
FPGA I/O電壓通常比核心電壓大,而且通常I/O bank會消耗不少的電源,因此設計人員在決定選用I/O標準、介面時脈需求、接腳限制等設計時,都需要非常謹慎。
差動式(differential) I/O,如LVDS、LVPECL,和阻抗終端式I/O,如HSTL、SSTL等,通常其靜態電源較高,但動態電源較低。因此,對有較高切換(toggle)頻率的設計來說,可以選用這些I/O。
降低I/O數量是重要關鍵,設計人員應重新考慮整體的設計/功能區隔(partitioning)是否恰當,以及是否可能用時間多工(time-multiplexed)的方式減少I/O數量。此外,由於高切換頻率會導致動態電源增高,為了降低I/O的活動或切換率,設計人員必須消除I/O驅動器輸出端的非預期突發訊號(glitch)。另一個常用技巧是,選擇可降低切換位元的匯流排編碼(bus encoding),並將匯流排上的連續數值關聯在一起。
時脈樹電源消耗
時脈樹(clock tree power)係與頻率成正比,而且不管區域中的活動是否進行,時脈樹電源仍會持續消耗。而傳統的時脈閘控(clock gating)技巧是有效降低電源消耗的方式。
以晶片級(chip-level)的時脈閘控為例,一般常用的系統級時脈閘控技巧可使整顆FPGA的時脈暫停,有效停用所有的功能性,並防止邏輯的切換。
而RTL級的時脈閘控也是普遍使用的省電技巧,共有latch-based以及latch-free兩種類型。但在運用時必須注意時脈偏移(skew),以及啟用訊號可能造成的額外異常訊號(glitch)。通常會建議使用latch-based時脈閘控,來消除AND閘輸出端可能產生的額外異常訊號。
此外,大部分的flash-based FPGA元件中都有一個以上的PLL,來作為分頻、倍頻、移相等操作。這些PLL也都會消耗額外的電源。對功耗敏感的應用來說,應盡可能避免使用PLL。舉例來說,若需要分頻,可以用一個除法器取代PLL,來產生新的時脈頻率。若一定要用PLL,則必須盡量將各種PLL的組合予以最佳化,以降低PLL輸出的最大頻率。同時,flash-based FPGA中的PLL有一Power-Down輸入接腳,當不需要的時候,可以利用此輸入來關閉PLL和時脈網絡。
結語
當採用FPGA進行具嚴苛功耗要求的應用時,系統架構師和設計團隊應該明確瞭解終端系統的操作模式以及電源分佈狀態。再透過對FPGA架構的認識、嵌入式功能方塊、電源相關特性,如電源模式、各種操作電壓等,設計人員才有可能安排適當的設計技巧,來滿足電源預算的要求。
對系統架構師來說,建議的設計方法為:取得終端系統的操作模式與系統電源分佈。分析系統分別處於閒置、睡眠、關閉模式的時間比例、On/Off頻率、以及操作的任務週期。若是On/Off頻率高,則須注意揮發性FPGA可能會有突波和配置電流的問題。若是任務週期佔操作的比例不高,且大部分的時間是處於閒置或睡眠狀態,重點就應該放在降低靜態電源。但若任務週期在所有模式下都很平均,那麼處理靜態和動態電源就一樣重要。最後,如果系統大部分都處於操作狀態,那麼FPGA的動態電源設計就更為重要。
---本文由Actel提供---