便攜式產(chǎn)品具有低功耗意識(shí)的FPGA設(shè)計(jì)方法
ILGOO系列低功耗FPGA產(chǎn)品
Actel公司的ILGOO系列器件是低功耗FPGA產(chǎn)品,是在便攜式產(chǎn)品設(shè)計(jì)中替代ASIC和CPLD的最佳方案。它在Flash*Freeze模式時(shí)的靜態(tài)功耗最低可達(dá)到2μW,電池壽命是采用主流PLD的產(chǎn)品的5倍以上。針對(duì)I/O需求數(shù)目更多的低功耗應(yīng)用,Actel可以提供IGLOO PLUS系列,規(guī)模分別是3萬(wàn)、6萬(wàn)和12.5萬(wàn)門。和相同封裝的IGLOO器件相比,可以提供最多多出64%的I/O。其所有的器件都支持4個(gè)I/O Bank。在多電壓應(yīng)用環(huán)境中比較有利,并且支持熱插拔和施密特觸發(fā)器。Actel在IGLOO系列產(chǎn)品的開發(fā)過程中,對(duì)靜態(tài)功耗的主要物理來源——漏電流方面做了改進(jìn)。同時(shí)在生產(chǎn)過程中對(duì)產(chǎn)率、速度以及可靠性做了嚴(yán)密的監(jiān)控。
采用IGLOO器件的低功耗優(yōu)勢(shì)從哪些方面獲得呢?首先來自IGLOO器件本身對(duì)漏電流源頭的控制,以及器件所提供的各種節(jié)省功耗的特性的實(shí)現(xiàn)和各種最少功耗數(shù)據(jù)存儲(chǔ)技術(shù)的實(shí)現(xiàn)。除此之外,設(shè)計(jì)中采用一些低功耗技巧,也可以降低靜態(tài)功耗。
IGLOO具有功耗友好的器件架構(gòu),能提供靜態(tài)、睡眠、Flash*Freeze功耗模式,允許采用動(dòng)態(tài)電壓和頻率調(diào)節(jié)技術(shù)來降低系統(tǒng)整體實(shí)際功耗。提供可選擇的1.2V和1.5V的I/O和核電壓,以方便用戶平衡設(shè)計(jì)的性能和功耗之間的關(guān)系。IGLOO的時(shí)鐘結(jié)構(gòu)可以沒有副作用的對(duì)全局信號(hào)和局部信號(hào)進(jìn)行門控制。另外IGLOO的RAM模塊具有LP和F*F端口來控制RAM本身的靜態(tài)功耗。
系統(tǒng)溫度及功耗概況
工業(yè)、汽車電子、軍事, 甚至商業(yè)類客戶都會(huì)對(duì)系統(tǒng)的溫度和運(yùn)行模式的概況有規(guī)定。這些概況指引我們?cè)谠O(shè)計(jì)時(shí)要注意哪些地方以及精力該如何分配。IGLOO器件的低功耗工藝和硅片設(shè)計(jì)由Actel來保證,用戶所要關(guān)注的是:關(guān)心器件的選型、掌握所使用的FPGA的架構(gòu)、掌握PCB的板級(jí)布局(主要是電容及I/O的走線)。
對(duì)于同一系列的器件來說,器件的die越小,器件的功耗也會(huì)越小。也就是說,在選用器件的時(shí)候,應(yīng)該盡量選擇規(guī)模小的器件。選定器件后,可以在設(shè)計(jì)過程中,通過一些技巧盡可能的少占用資源,比如通過時(shí)分復(fù)用的方式少占用I/O,共享加法、乘法等算法邏輯,共享RAM等,同時(shí)也有必要了解所選用的FPGA的架構(gòu)。
用戶需要在功耗和速度之間做平衡,在對(duì)速度性能要求不高的時(shí)候,盡量使用低的核電壓和低電壓的I/O接口標(biāo)準(zhǔn)。根據(jù)設(shè)計(jì)工作的實(shí)際狀況,在某些時(shí)候?qū)?dāng)前不工作的資源關(guān)掉,比如通過控制SRAM的LP或BLK引腳,使其在不工作的時(shí)候可以被關(guān)斷,或者是通過Flash Freeze端口進(jìn)入Fresh Frezee模式以降低靜態(tài)功耗。在PLL不需要工作的時(shí)候,通過Power Down引腳將其關(guān)掉,不過需要注意的是,需要考慮重新開啟以后,PLL的鎖定時(shí)間對(duì)系統(tǒng)是不是有影響。關(guān)掉沒有輸入總線的I/O Bank。
注意,不要濫用上拉/下拉電阻。在活動(dòng)模式下,如果總線被反向模式驅(qū)動(dòng)(如上拉的被“0”驅(qū)動(dòng),或下拉的被“1”驅(qū)動(dòng)),那么每個(gè)I/O上的電流會(huì)增加。要預(yù)防被驅(qū)動(dòng)的總線進(jìn)入3態(tài)狀態(tài)。除非FPGA的工作時(shí)間確實(shí)短,否則建議跟板子設(shè)計(jì)者溝通以確保對(duì)輸入進(jìn)行持續(xù)的驅(qū)動(dòng)。
要降低設(shè)計(jì)的動(dòng)態(tài)功耗,首先要了解影響動(dòng)態(tài)功耗的因素。動(dòng)態(tài)功耗通常和電壓、信號(hào)翻轉(zhuǎn)頻率、容性負(fù)載正相關(guān),設(shè)計(jì)所占用的邏輯資源越多、時(shí)鐘頻率越高、I/O和RAM越多,動(dòng)態(tài)功耗就越大。同時(shí)也需要分析設(shè)計(jì)的動(dòng)態(tài)功耗概況。
確定要降低的動(dòng)態(tài)功耗的目標(biāo),如果要降低的動(dòng)態(tài)功耗的目標(biāo)是目前整個(gè)系統(tǒng)動(dòng)態(tài)功耗的20%,那么選用Actel的IGLOO器件或許就可以實(shí)現(xiàn)所要達(dá)到的目標(biāo)。如果目標(biāo)是80%,那么除了選用IGLOO器件外,還需要從系統(tǒng)和架構(gòu)上去考慮。
針對(duì)不同的系統(tǒng)功耗的概況,梳理動(dòng)態(tài)功耗的重點(diǎn),見圖1。針對(duì)Case1中動(dòng)態(tài)功耗的示意圖,我們可以看出其功耗主要分布在邏輯、存儲(chǔ)和時(shí)鐘方面,這樣我們的精力就不能放在如何降低I/O的功耗上去,而針對(duì)Case3這種情況,如果要降低動(dòng)態(tài)功耗,就必須要解決I/O上的功耗問題。
圖1 不同系統(tǒng)的動(dòng)態(tài)功耗在線座談精華
要減少RAM的功耗,除了對(duì)RAM的控制和時(shí)鐘信號(hào)進(jìn)行門控制以外,還需要知道RAM的讀和寫分別對(duì)功耗的影響有多少。地址變化、讀寫順序、RAM級(jí)聯(lián)方式對(duì)功耗的影響。
對(duì)RAM進(jìn)行讀操作涉及到:控制所存地址和控制鎖存、行的預(yù)譯碼電路、讀的列譯碼電路、行的最終譯碼電路、讀的列譯碼控制、傳感放大器、數(shù)據(jù)輸出選擇和鎖存電路、Sense enable logic、讀控制電路、Bit-line預(yù)充電電路等十個(gè)相關(guān)電路。而對(duì)RAM進(jìn)行寫操作需要涉及到的電路有:地址和控制鎖存、行的預(yù)譯碼電路、寫的列譯碼電路、行的最終解碼控制、寫的列譯碼控制、寫驅(qū)動(dòng)電路和Bit Line預(yù)充電電路。因此,相比較而言,讀操作會(huì)比寫操作消耗更多的功耗。
RAM的讀寫地址改變的方式,也會(huì)對(duì)功耗有不同的影響。連續(xù)操作地址之間的漢明距離越小,產(chǎn)生的功耗也越小。反之亦然。也就是說當(dāng)前操作的地址和上次操作的地址之間變化的位數(shù)越少,所產(chǎn)生的功耗也會(huì)越小。
讀寫間隔操作和連續(xù)讀、連續(xù)寫操作相比,要產(chǎn)生多一些的功耗。從圖2中分別對(duì)12塊RAM、16塊RAM和24塊RAM做的測(cè)試結(jié)果看,同樣的操作條件下,RAM塊數(shù)越多,連續(xù)操作地址之間的漢明距離越長(zhǎng),功耗就越大。同樣的塊數(shù)和連續(xù)操作之間的漢明距離,寫-讀三次會(huì)比三次寫三次讀消耗的功耗要大。
圖2 寫讀操作順序vs.讀序列后跟寫序列操作
通過前面所述,我們可以通過調(diào)整RAM的訪問順序降低RAM的功耗。可能的話,對(duì)RAM少進(jìn)行讀操作,盡可能一次多讀一些數(shù)據(jù)或者多寫一些數(shù)據(jù),少一些讀寫操作之間的切換。如果在連續(xù)相同操作的地址之間,漢明距離能保持最小的話更好。也可以考慮在反向時(shí)鐘沿上對(duì)RAM進(jìn)行讀寫操作,以降低RAM的峰值功耗。
不同的RAM級(jí)聯(lián)架構(gòu)所產(chǎn)生的功耗也不同。如果想獲得一個(gè)4K×4的RAM,有許多不同的實(shí)現(xiàn)方式。從圖3中可以看出,根據(jù)這些不同的實(shí)現(xiàn)方式,對(duì)每塊RAM的讀寫時(shí)鐘控制,進(jìn)行門控制所產(chǎn)生的功耗是最低的。
圖3 根時(shí)鐘vs.葉時(shí)鐘vs.門控允許
在降低時(shí)鐘樹的功耗方面,常用的方法有使用門控時(shí)鐘,對(duì)常用的流水線時(shí)鐘結(jié)構(gòu)進(jìn)行修改,盡量使用FPGA內(nèi)部的全局時(shí)鐘資源等。通過對(duì)常用的流水線時(shí)鐘結(jié)構(gòu)在RTL級(jí)進(jìn)行修改,就像在圖4中所看到的,做正反時(shí)鐘沿間隔,這樣時(shí)鐘頻率可以減慢一半,可以節(jié)省該時(shí)鐘路徑一半的功耗。同樣可以通過人工對(duì)時(shí)鐘域進(jìn)行平面布局,來降低時(shí)鐘樹產(chǎn)生的功耗。這種方式對(duì)工程師的要求相對(duì)較高。Actel的設(shè)計(jì)師提供基于功耗驅(qū)動(dòng)的布局布線策略。選擇該策略,布局布線工具自動(dòng)會(huì)在滿足時(shí)序要求的情況下,盡可能的降低布局功耗。
圖4 對(duì)常用的流水線時(shí)鐘結(jié)構(gòu)在RTL級(jí)做修改
要降低邏輯和走線的功耗,需要調(diào)整綜合選項(xiàng)、了解算法/功能塊的架構(gòu)和功耗概況,通過減少信號(hào)的翻轉(zhuǎn)來降低功耗。不同的綜合選項(xiàng)和策略會(huì)對(duì)動(dòng)態(tài)功耗有影響,基本上需要注意的是全局時(shí)序的設(shè)定以及set_max_fanout選項(xiàng),以及是選用面積優(yōu)先還是時(shí)序優(yōu)先的綜合策略。
通過對(duì)DesignWare和一些私有的加法器和不同頻率下的功耗的評(píng)估,DesignWare下面的BK加法器在功耗方面是最友好的。針對(duì)同樣5%到10%的速度降級(jí),BK加法器和其他的私有加法器的核相比,可以減少10%到15%的面積和功耗。在選擇乘法器的時(shí)候,必須要考慮乘法器的面積、功耗和速度。
計(jì)數(shù)器在設(shè)計(jì)中有不同的用法,有的用于計(jì)算事件發(fā)生的順序或者用掉的時(shí)間,有的用于驅(qū)動(dòng)類似于RAM的地址總線、數(shù)據(jù)總線、狀態(tài)機(jī)的下一跳狀態(tài)或者輸出邏輯,有的用于當(dāng)輸出的值達(dá)到不同的解碼值時(shí)做不同的設(shè)定的處理。根據(jù)不同的用途可以考慮用二進(jìn)制順序計(jì)數(shù)、格雷碼計(jì)數(shù)、環(huán)形計(jì)數(shù)的實(shí)現(xiàn)方法。如果計(jì)數(shù)器只是用于產(chǎn)生一些標(biāo)記,建議采用二進(jìn)制的實(shí)現(xiàn)方式;如果計(jì)數(shù)器用于驅(qū)動(dòng)一個(gè)大的負(fù)載總線,建議用格雷碼計(jì)數(shù)器;如果多個(gè)計(jì)數(shù)器的值需要被解碼,環(huán)形計(jì)數(shù)器是最佳選擇(譯碼邏輯是最小的)。
通過降低邏輯的翻轉(zhuǎn)率來降低動(dòng)態(tài)功耗
首先在設(shè)計(jì)中,需要盡量避免不必要的翻轉(zhuǎn),可以通過下面幾個(gè)步驟來實(shí)現(xiàn)這一目標(biāo):首先分析哪些邏輯的翻轉(zhuǎn)是不必要的,隨后對(duì)不必要的邏輯翻轉(zhuǎn)的傳播進(jìn)行限制,展開邏輯翻轉(zhuǎn)的時(shí)間。
減少邏輯可能產(chǎn)生的毛刺,先標(biāo)識(shí)出翻轉(zhuǎn)率高的網(wǎng)絡(luò)以及它們的驅(qū)動(dòng),然后對(duì)驅(qū)動(dòng)單元輸入的最壞時(shí)序情況做評(píng)估,隨后將毛刺的源往前調(diào)或往后調(diào),然后對(duì)驅(qū)動(dòng)單元的輸入的最壞時(shí)序情況做評(píng)估,最后在驅(qū)動(dòng)的邏輯后面插入一級(jí)觸發(fā)器,根據(jù)先前的評(píng)估情況來決定用路徑上其他時(shí)序元件的相同時(shí)鐘沿或者相反的時(shí)鐘沿來驅(qū)動(dòng)觸發(fā)器。即使是在單周期路徑上面,如果有足夠的slack來增加一個(gè)與門以及相關(guān)走線,那么就可以用與門的另外一個(gè)輸入(毛刺源驅(qū)動(dòng)寄存器)的反相時(shí)鐘沿,從而減少毛刺。在某些情況下,可以通過伸展反轉(zhuǎn)時(shí)間來降低毛刺的峰值功耗。
建議設(shè)計(jì)者要了解最終系統(tǒng)的運(yùn)行模式,以及每種模式下系統(tǒng)的功耗概況。如果系統(tǒng)處于睡眠模式或者關(guān)閉模式的時(shí)間較長(zhǎng),需要觀察浪涌電流和編程電流的影響,并處理好靜態(tài)功耗。需要檢查設(shè)計(jì)的動(dòng)態(tài)功耗概況,找出功耗的主要瓶頸,根據(jù)概括表(圖5~圖8)找出最好的解決方法。
圖5 RAM 動(dòng)態(tài)功耗概括表
圖6 I/O功耗概括表
圖7 時(shí)鐘樹功耗概括表
圖8 邏輯功耗概括表
在對(duì)照概括表之前,只要時(shí)序允許,可以修改RTL代碼;保證修改以后的功能和時(shí)序有效性;也可以嘗試調(diào)整綜合選項(xiàng)以及使用基于功耗優(yōu)先的策略來進(jìn)行布局布線。
評(píng)論
查看更多