3. 低功耗設(shè)計(jì)
關(guān)于FPGA低功耗設(shè)計(jì),可從兩方面著手:1) 算法優(yōu)化;2) FPGA資源使用效率優(yōu)化。
1) 算法優(yōu)化
算法優(yōu)化可分為兩個(gè)層次說(shuō)明:實(shí)現(xiàn)結(jié)構(gòu)和實(shí)現(xiàn)方法
首先肯定需要設(shè)計(jì)一種最優(yōu)化的算法實(shí)現(xiàn)結(jié)構(gòu),設(shè)計(jì)一種最優(yōu)化的結(jié)構(gòu),使資源占用達(dá)到最少,當(dāng)然功耗也能降到最低,但是還需要保證性能,是FPGA設(shè)計(jì)在面積和速度上都能兼顧。比如在選擇采用流水線結(jié)構(gòu)還是狀態(tài)機(jī)結(jié)構(gòu)時(shí),流水線結(jié)構(gòu)同一時(shí)間所有的狀態(tài)都在持續(xù)工作,而狀態(tài)機(jī)結(jié)構(gòu)只有一個(gè)狀態(tài)是使能的,顯而易見(jiàn)流水線結(jié)構(gòu)的功耗更多,但其數(shù)據(jù)吞吐率和系統(tǒng)性能更優(yōu),因此需要合理選其一,使系統(tǒng)能在面積和速度之間得到平衡;
另一個(gè)層面是具體的實(shí)現(xiàn)方法,設(shè)計(jì)中所有吸收功耗的信號(hào)當(dāng)中,時(shí)鐘是罪魁禍?zhǔn)住km然時(shí)鐘可能運(yùn)行在 100 MHz,但從該時(shí)鐘派生出的信號(hào)卻通常運(yùn)行在主時(shí)鐘頻率的較小分量(通常為 12%~15%)。此外,時(shí)鐘的扇出一般也比較高。這兩個(gè)因素顯示,為了降低功耗,應(yīng)當(dāng)認(rèn)真研究時(shí)鐘。 首先,如果設(shè)計(jì)的某個(gè)部分可以處于非活動(dòng)狀態(tài),則可以考慮禁止時(shí)鐘樹(shù)翻轉(zhuǎn),而不是使用時(shí)鐘使能。時(shí)鐘使能將阻止寄存器不必要的翻轉(zhuǎn),但時(shí)鐘樹(shù)仍然會(huì)翻轉(zhuǎn),消耗功率。其次,隔離時(shí)鐘以使用最少數(shù)量的信號(hào)區(qū)。不使用的時(shí)鐘樹(shù)信號(hào)區(qū)不會(huì)翻轉(zhuǎn),從而減輕該時(shí)鐘網(wǎng)絡(luò)的負(fù)載。
2) 資源使用效率優(yōu)化
資源使用效率優(yōu)化是介紹一些在使用FPGA內(nèi)部的一些資源如BRAM,DSP48E1時(shí),可以優(yōu)化功耗的方法。FPGA動(dòng)態(tài)功耗主要體現(xiàn)為存儲(chǔ)器、內(nèi)部邏輯、時(shí)鐘、I/O消耗的功耗。
其中存儲(chǔ)器是功耗大戶,如xilinx FPGA中的存儲(chǔ)器單元Block RAM,因此在這邊主要介紹對(duì)BRAM的一些功耗優(yōu)化方法。
如圖5中實(shí)例,雖然BRAM只使用了7%,但是其功耗0.601W占了總設(shè)計(jì)的42%,因此優(yōu)化BRAM的功耗能有效地減小FPGA的動(dòng)態(tài)功耗。


圖5
下面介紹一下優(yōu)化BRAM功耗的方法:
a) 使用“NO CHANGE”模式:在BRAM配置成True Dual Port時(shí),需要選擇端口的操作模式:“Write First”,“Read First” or “NO CHANGE”,避免讀操作和寫(xiě)操作產(chǎn)生沖突,如圖6所示;其中“NO CHANGE”表示BRAM不添加額外的邏輯防止讀寫(xiě)沖突,因此能減少功耗,但是設(shè)計(jì)者需要保證程序運(yùn)行時(shí)不會(huì)發(fā)生讀寫(xiě)沖突。

圖6
圖5中的功耗是設(shè)置成“Write First”時(shí)的,圖7中是設(shè)置成“NO CHANGE”后的功耗,BRAM的功耗從0.614W降到了0.599W,因?yàn)橹皇褂昧?%的BRAM,如果設(shè)計(jì)中使用了大量的BRAM,效果能更加明顯。

圖7
b) 控制“EN”信號(hào):BRAM的端口中有clock enable信號(hào),如圖8所示,在端口設(shè)置中可以將其使能,模塊例化時(shí)將其與讀/寫(xiě)信號(hào)連接在一起,如此優(yōu)化可以使BRAM在沒(méi)有讀/寫(xiě)操作時(shí)停止工作,節(jié)省不必要的功耗。

圖8
如圖9所示為控制“EN”信號(hào)優(yōu)化后的功耗情況,BRAM功耗降到了0.589W

圖9
c) 拼深度:當(dāng)設(shè)計(jì)中使用了大量的存儲(chǔ)器時(shí),需要多塊BRAM拼接而成,如需要深度32K,寬度32-bit,32K*32Bit的存儲(chǔ)量,但是單塊BRAM如何配置是個(gè)問(wèn)題?7 series FPGA中是36Kb 的BRAM,其中一般使用32Kb容量,因此可以配置成32K*1-bit或者1K*32-bit,多塊BRAM拼接時(shí),前者是“拼寬度”(見(jiàn)圖10),后者是“拼深度”(見(jiàn)圖11)。兩種結(jié)構(gòu)在工作時(shí),“拼寬度”結(jié)構(gòu)所有的BRAM需要同時(shí)進(jìn)行讀寫(xiě)操作;而“拼深度”結(jié)構(gòu)只需要其中一塊BRAM進(jìn)行讀寫(xiě),因此在需要低功耗的情況下采用“拼深度”結(jié)構(gòu),
注:“拼深度”結(jié)構(gòu)需要額外的數(shù)據(jù)選擇邏輯,增加了邏輯層數(shù),為了降低功耗即犧牲了面積又犧牲了性能。

圖10

圖11
電子發(fā)燒友App

























評(píng)論