具有低功耗意識(shí)的FPGA設(shè)計(jì)方法
在降低時(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í)間較長,需要觀察浪涌電流和編程電流的影響,并處理好靜態(tài)功耗。需要檢查設(shè)計(jì)的動(dòng)態(tài)功耗概況,找出功耗的主要瓶頸,根據(jù)概括表(圖5~圖8)找出最好的解決方法。
圖5 RAM 動(dòng)態(tài)功耗概括表
圖6 I/O功耗概括表
評(píng)論