點(diǎn)擊上方藍(lán)字關(guān)注我們
FPGA高級(jí)設(shè)計(jì)之實(shí)現(xiàn)功耗優(yōu)化
與ASICs(Application Specific Integrated Circuits)比較,相似的邏輯功能,用FPGA來(lái)實(shí)現(xiàn)需要消耗更多的功耗,而且FPGA通常并不適合超低功耗設(shè)計(jì)技術(shù)。許多FPGA的供應(yīng)商提供一種低功耗邏輯芯片,即CPLD,但是CPLD非常受限于尺寸和能力,因此將無(wú)法總是滿足那些需要數(shù)量可觀的功耗的應(yīng)用。本章將詳細(xì)討論低功耗CPLD和通用FPGA設(shè)計(jì)功率效率最大化技巧。
在CMOS技術(shù)中,動(dòng)態(tài)功耗與門(mén)電路和金屬走線中的寄生電容的充放電有關(guān)。一個(gè)電容的電流損耗的通用公式如下所示:
I=V*C*f
這里I是總電流,V是電壓,C是電容值,而f是指頻率。
那么,為了減小電流,那么我必須減小公式右邊三個(gè)關(guān)鍵參數(shù)中的一個(gè)即可。在FPAG設(shè)計(jì)中,電壓通常是固定的,所以只留下C和f可以用來(lái)改變電流。電容C和給定時(shí)間內(nèi)處于活動(dòng)的門(mén)電路數(shù)量以及連接這些門(mén)電路的走線長(zhǎng)度有直接關(guān)系。而頻率f則和時(shí)鐘頻率直接相關(guān)。所以所有降低功耗的技術(shù)都絕對(duì)針對(duì)于減少這兩種參數(shù)。
本章將主要討論以下一些可以降低功耗的技術(shù):
時(shí)鐘控制對(duì)于動(dòng)態(tài)功耗的影響
使用門(mén)控時(shí)鐘的問(wèn)題
管理門(mén)控時(shí)鐘上的偏斜
輸入控制以最小化功耗
核心供電電壓對(duì)功耗的影響
觸發(fā)器雙沿觸發(fā)指導(dǎo)
終端匹配降低靜態(tài)功耗
通過(guò)減少高翻轉(zhuǎn)率網(wǎng)絡(luò)的布線長(zhǎng)度來(lái)降低動(dòng)態(tài)功耗的討論,需要有了解布局布線的背景,因此這種技術(shù)不在本章介紹范圍內(nèi),將在后面有關(guān)Floorplanning的章節(jié)進(jìn)行詳細(xì)討論。
3.1時(shí)鐘控制
在同步數(shù)據(jù)電路設(shè)計(jì)中,降低動(dòng)態(tài)功耗最有效以及使用最廣的技術(shù)是在某些指定區(qū)域數(shù)據(jù)流的特定階段不需要時(shí)鐘處于活動(dòng)狀態(tài)的時(shí)候禁止時(shí)鐘活動(dòng)。因?yàn)镕PGA的動(dòng)態(tài)功耗大部分時(shí)候是與系統(tǒng)時(shí)鐘的翻轉(zhuǎn)有直接關(guān)系,所以臨時(shí)性地停止設(shè)計(jì)中某些處于非活動(dòng)區(qū)域的時(shí)鐘往往是最小化這類功耗最直接的方法。為了達(dá)成此目的,有兩種推薦方法,一種是在觸發(fā)器中使用時(shí)鐘使能,另外一種是使用全局時(shí)鐘多路選擇器(Xilinx器件中稱為BUFGMUX單元)。如果這些時(shí)鐘控制單元在一些特定技術(shù)中無(wú)法實(shí)現(xiàn),設(shè)計(jì)者此時(shí)往往訴諸于門(mén)控系統(tǒng)時(shí)鐘。需要注意的是,門(mén)控時(shí)鐘在FPGA設(shè)計(jì)中是不被推薦的,而且這一章我們還會(huì)詳細(xì)討論直接門(mén)控系統(tǒng)時(shí)鐘將會(huì)帶來(lái)的一些問(wèn)題。因此,如果有可能盡量使用觸發(fā)器的時(shí)鐘使能輸入或者全局時(shí)鐘多路選擇器來(lái)代替時(shí)鐘門(mén)控。
在進(jìn)行后續(xù)討論之前,我們假定讀者已經(jīng)非常熟悉FPGA的時(shí)鐘設(shè)計(jì)指導(dǎo)。通常,F(xiàn)PGA是同步器件,而且通過(guò)門(mén)控或者異步接口引入多時(shí)鐘域往往會(huì)增加FPGA設(shè)計(jì)的難度。有關(guān)時(shí)鐘的更深層次討論,我們后續(xù)在有關(guān)時(shí)鐘域一章中進(jìn)行詳細(xì)說(shuō)明。
圖3-1顯示了一種包含簡(jiǎn)單門(mén)控時(shí)鐘的蹩腳設(shè)計(jì)。使用這種時(shí)鐘拓?fù)浣Y(jié)構(gòu)時(shí),所有觸發(fā)器以及相應(yīng)的組合邏輯在主時(shí)鐘活動(dòng)的任何時(shí)候都處于活動(dòng)狀態(tài)(即處于翻轉(zhuǎn)中)。然而,處于虛線框中的邏輯只有在時(shí)鐘使能等于1的時(shí)候才處于活動(dòng)狀態(tài)。這里所指的時(shí)鐘使能信號(hào),就是門(mén)控或者使能信號(hào)。通過(guò)像圖3-1那樣門(mén)控部分電路,根據(jù)被門(mén)控的邏輯量(對(duì)應(yīng)于電容C)以及對(duì)應(yīng)門(mén)控的平均頻率(對(duì)應(yīng)于頻率f),設(shè)計(jì)者可以嘗試成比例地減少動(dòng)態(tài)功耗。時(shí)鐘門(mén)控是降低動(dòng)態(tài)功耗的直接手段,但是會(huì)帶來(lái)設(shè)計(jì)實(shí)現(xiàn)以及時(shí)序分析難度的增加。
圖3-1:帶簡(jiǎn)單門(mén)控時(shí)鐘的蹩腳設(shè)計(jì)
在我們接著往下討論之前,需要注意的很重要一點(diǎn)是仔細(xì)規(guī)劃時(shí)鐘在FPGA設(shè)計(jì)中是非常重要的。系統(tǒng)時(shí)鐘是所有同步數(shù)字電路的核心。EDA工具都由系統(tǒng)時(shí)鐘驅(qū)動(dòng)來(lái)優(yōu)化和時(shí)序綜合、布局布線以及靜態(tài)時(shí)序分析等等。所以,要認(rèn)真對(duì)待系統(tǒng)時(shí)鐘或者其它時(shí)鐘,并在設(shè)計(jì)實(shí)現(xiàn)整個(gè)過(guò)程中必須被賦予最大優(yōu)先級(jí)考慮的特性。在FPGA設(shè)計(jì)中,時(shí)鐘要比在ASIC設(shè)計(jì)中更嚴(yán)肅地對(duì)待,因此相比ASIC設(shè)計(jì)相應(yīng)創(chuàng)建時(shí)鐘結(jié)構(gòu)的靈活性就更小。
時(shí)鐘被門(mén)控后,這個(gè)被門(mén)控的新網(wǎng)絡(luò)所驅(qū)動(dòng)的所有時(shí)鐘端口都應(yīng)該至少被認(rèn)為是一個(gè)新的時(shí)鐘域。同系統(tǒng)時(shí)鐘一樣,這個(gè)新的時(shí)鐘網(wǎng)絡(luò)到該時(shí)鐘域的所有觸發(fā)器都需要一個(gè)低偏斜的路徑。對(duì)于ASIC設(shè)計(jì)者來(lái)說(shuō),這些低偏斜時(shí)鐘走線可能已經(jīng)內(nèi)置在用戶時(shí)鐘樹(shù)中,但是對(duì)于FPGA設(shè)計(jì)者來(lái)說(shuō)這將成為問(wèn)題,因?yàn)镕PG**內(nèi)低偏斜走線資源不但數(shù)量有限,而且分布固定。因此,我們說(shuō)門(mén)控時(shí)鐘在給設(shè)計(jì)引入新的時(shí)鐘域同時(shí),還給FPGA設(shè)計(jì)者增加了設(shè)計(jì)上的難度。本節(jié)后面我們來(lái)介紹由門(mén)控時(shí)鐘引入的這些問(wèn)題。
3.1.1時(shí)鐘偏斜
時(shí)鐘偏斜是時(shí)序邏輯設(shè)計(jì)中一個(gè)很重要的概念。在直接談?wù)撻T(mén)控時(shí)鐘相關(guān)問(wèn)題之前,我們必須首先有必要簡(jiǎn)要回顧一下時(shí)鐘偏斜(skew)的定義。
如圖3-2所示,假定第一個(gè)觸發(fā)器和第二個(gè)觸發(fā)器之間的時(shí)鐘信號(hào)傳播延遲為零。如果通過(guò)“云朵”中的組合邏輯的延時(shí)是正的,那么設(shè)計(jì)時(shí)序?qū)?huì)得到符合,時(shí)序是否符合將由時(shí)鐘周期相對(duì)于組合邏輯延時(shí)加上邏輯布線延時(shí)再加上觸發(fā)器建立時(shí)間來(lái)確定。每個(gè)時(shí)鐘周期,一個(gè)信號(hào)只能在一組觸發(fā)器對(duì)之間傳輸。不過(guò),圖3-2中第二個(gè)和第三個(gè)觸發(fā)器之間的情況與前一級(jí)有所區(qū)別。因?yàn)闀r(shí)鐘走線到第二和第三個(gè)觸發(fā)器的延時(shí)不一樣,即時(shí)鐘正沿不是同時(shí)到達(dá)這兩個(gè)觸發(fā)器。如圖所示,時(shí)鐘正沿是經(jīng)過(guò)了一個(gè)延時(shí)為dC后才到達(dá)第三個(gè)觸發(fā)器的。
圖3-2:時(shí)鐘偏斜
如果通過(guò)邏輯的延時(shí)(定義為dL)小于時(shí)鐘線上的延時(shí)(dC),那么就會(huì)發(fā)生一種情況,即從第二個(gè)觸發(fā)器傳輸?shù)降谌齻€(gè)觸發(fā)器的信號(hào)將會(huì)早于時(shí)鐘正沿到達(dá)第三個(gè)觸發(fā)器。所以當(dāng)時(shí)鐘正沿到達(dá)第三級(jí)時(shí),相同信號(hào)有可能也由該觸發(fā)器輸出。那么,就會(huì)造成一個(gè)信號(hào)在第二級(jí)和第三級(jí)上在同一個(gè)時(shí)鐘上升沿時(shí)被送出。這個(gè)情況將導(dǎo)致電路出現(xiàn)災(zāi)難性錯(cuò)誤,所以時(shí)鐘偏斜在時(shí)序分析的時(shí)候必須要考慮到。需要注意的是時(shí)鐘偏斜與時(shí)鐘速度并無(wú)關(guān)系,這一點(diǎn)很重要。所以,上面描述的信號(hào)“飛越”兩級(jí)觸發(fā)器的問(wèn)題發(fā)生的時(shí)候,是完全無(wú)視當(dāng)前時(shí)鐘的頻率。謹(jǐn)記這個(gè)觀點(diǎn),處理時(shí)鐘偏斜不當(dāng),將會(huì)給FPGA設(shè)計(jì)帶來(lái)災(zāi)難性的錯(cuò)誤。
3.1.2時(shí)鐘偏斜管理
FPGA內(nèi)提供一種低偏斜的資源,這種資源可以確保時(shí)鐘信號(hào)到所有時(shí)鐘端口的延時(shí)都盡可能的一致(皮秒級(jí))。舉例來(lái)說(shuō),我們來(lái)看這樣一種情況,即一個(gè)門(mén)被引入到了時(shí)鐘網(wǎng)絡(luò),如圖3-3所示。
圖3-3:蹩腳設(shè)計(jì)之時(shí)鐘門(mén)控引入時(shí)鐘偏斜
這時(shí)候時(shí)鐘線必然要離開(kāi)低偏斜的全局資源并被布線到邏輯門(mén),這里是一個(gè)與門(mén)。如此時(shí)鐘線上增加了偏斜,增加偏斜帶來(lái)的基本問(wèn)題和我們上一節(jié)描述的一樣??梢韵胂?,經(jīng)過(guò)與門(mén)的延時(shí)(dG)再加上走線延時(shí),那么時(shí)鐘到最后一級(jí)觸發(fā)器的延時(shí)將會(huì)大于信號(hào)的邏輯延時(shí)(dL)。為了解決這個(gè)潛在的問(wèn)題,必須給邏輯實(shí)現(xiàn)和時(shí)序分析工具施加一系列約束,這樣任何與由邏輯門(mén)引入的偏斜有關(guān)的時(shí)序問(wèn)題將會(huì)得到解決,而且實(shí)現(xiàn)也能在實(shí)現(xiàn)后得到正確地分析。
下面我們來(lái)看一個(gè)具體的例子,下述代碼是一個(gè)使用了門(mén)控時(shí)鐘的蹩腳設(shè)計(jì)。
以下是代碼片段: module clockgating( output dataout, input clk,datain, input clockgate1); reg ff0,ff1,ff2; wire clk1; //當(dāng)邏輯門(mén)為低時(shí)時(shí)鐘被禁止 assign clk1=clk&clockgate1; assign dataout=ff2; always @ (posedge clk) ff0<=datain; always @ (posedge clk) ff1<=ff0; always @ (posedge clk1) ff2<=ff1; endmodule |
上例中,數(shù)據(jù)路徑上沒(méi)有任何組合邏輯,但是時(shí)鐘路徑上有組合邏輯,如圖3-4所示。
圖3-4:時(shí)鐘歪斜主導(dǎo)的延時(shí)
不同的工具,將會(huì)采樣不同的方式來(lái)處理這種情況。有些工具,比如Synplify,默認(rèn)會(huì)將時(shí)鐘門(mén)控邏輯移除,從而創(chuàng)建一個(gè)純同步設(shè)計(jì)。而其它一些工具會(huì)在時(shí)鐘缺乏約束的時(shí)候忽略掉時(shí)鐘歪斜問(wèn)題,但是,一旦時(shí)鐘被正確約束的時(shí)候會(huì)人為地在數(shù)據(jù)上加入延時(shí)。
和ASIC設(shè)計(jì)不同,由于邏輯塊和布線資源中內(nèi)置有延時(shí),所以FPGA設(shè)計(jì)中發(fā)生保持時(shí)間違規(guī)是非常罕見(jiàn)的。但是,如前所述,如果在時(shí)鐘線上進(jìn)行過(guò)渡的延時(shí),就有可能導(dǎo)致保持時(shí)間違規(guī)。比如,我們可能面臨這樣一個(gè)事實(shí),即數(shù)據(jù)傳輸延時(shí)小于1ns,而時(shí)鐘延時(shí)幾乎達(dá)到了2ns,這樣數(shù)據(jù)幾乎比時(shí)鐘提前1ns到達(dá),從而導(dǎo)致了一個(gè)嚴(yán)重時(shí)序違規(guī)。根據(jù)綜合工具的差異,有時(shí),這個(gè)問(wèn)題可以通過(guò)添加時(shí)鐘約束來(lái)得到解決。所以,后續(xù)的時(shí)序分析也許會(huì)或者不會(huì)(完全依據(jù)技術(shù))展現(xiàn)在數(shù)據(jù)路徑上人為地添加的布線延時(shí)來(lái)消除保持時(shí)間違規(guī)的問(wèn)題。因此,因門(mén)控時(shí)鐘導(dǎo)致的保持時(shí)間違規(guī)可能會(huì)被工具解決,也可能不會(huì)。
這里值得再次重申的是,大部分供應(yīng)商都能提供高級(jí)時(shí)鐘緩沖技術(shù)。這種技術(shù)使得器件可以建立全局時(shí)鐘樹(shù)。我們總是建議大家采用這類時(shí)鐘控制,而不是上述通過(guò)邏輯單元實(shí)現(xiàn)的時(shí)鐘門(mén)控。
3.2輸入控制
有一種可以降低功耗的技術(shù)通常都容易被大家忽略,即可以通過(guò)降低輸入的上升沿斜率降低功耗。在上下兩側(cè)晶體管同時(shí)導(dǎo)通的時(shí)候,CMOS的輸入緩沖會(huì)產(chǎn)生持續(xù)的吸電流。為了描述方便,我們來(lái)看一個(gè)CMOS晶體管基本階模型,如圖3-5所示,為Ids-Vds曲線圖。
圖3-5:CMOS晶體管簡(jiǎn)單的I-V曲線
圖3-5中,Vgs是柵源電壓,Vth是器件門(mén)限電壓,Vds是漏源電壓。各段曲線區(qū)域分布被定義為:
截止區(qū):Vgs 線性區(qū):0 飽和區(qū):0 < Vgs – Vth < Vds 那么管子在理想情況下的開(kāi)關(guān)動(dòng)作應(yīng)該是這樣的,N溝道MOS管當(dāng)輸入到柵極時(shí)管子從截止區(qū)瞬間切換到線性區(qū),而P溝道MOS管應(yīng)該瞬間執(zhí)行上述相反的切換動(dòng)作。不管N溝道還是P溝道MOS管,假如管子一直是處于截止?fàn)顟B(tài),那么管子中就不會(huì)有電流(也即電壓和地之間阻抗很大)。以一個(gè)反相器舉例來(lái)說(shuō),如果由NMOS(N溝道MOSFET)來(lái)實(shí)現(xiàn)的話,從0跳轉(zhuǎn)到VDD(正電壓軌)意味著NMOS從截止區(qū)瞬間切換到線性區(qū),而如果是PMOS(N溝道MOSFET)則是從線性區(qū)瞬間切換到截止區(qū)。相反,如果Vgs從VDD跳變到0,那么NMOS從線性區(qū)瞬間切換到截止區(qū),而PMOS是從截止區(qū)瞬間切換到線性區(qū)。 然而在實(shí)際系統(tǒng)中,我們必須要考慮MOS管中晶體管的切換時(shí)間以及導(dǎo)通特性。還是以以一個(gè)CMOS反相器為例,反相器輸入一個(gè)0伏,那么輸出一個(gè)VDD。當(dāng)輸入從0變化到VDD時(shí),一旦輸入達(dá)到門(mén)限電壓Vth后NMOS晶體管就會(huì)離開(kāi)截止區(qū),并進(jìn)入飽和區(qū)。對(duì)于PMOS來(lái)說(shuō),在上述變化前期還一直處于線性區(qū),所以在VDD和地之間會(huì)有電流。隨著輸入的增大,輸出下降。當(dāng)NMOS的漏極電壓低于柵極電壓的門(mén)限電壓時(shí),NMOS進(jìn)入線性區(qū),而PMOS進(jìn)入飽和區(qū)隨后進(jìn)入截止區(qū)。為了最小化功耗,有必要最大限度減小飽和區(qū)的時(shí)間,也就是說(shuō)最大限度減小輸入的跳變時(shí)間??偨Y(jié)來(lái)說(shuō),就是最大限度減小輸入信號(hào)的上升和下降時(shí)間可以最大限度地降低器件輸入引腳的功耗。 根據(jù)前面劃分曲線各個(gè)分區(qū)的公式,我們還可以得出另外一個(gè)重要的結(jié)論。即如果驅(qū)動(dòng)信號(hào)在沒(méi)有開(kāi)關(guān)切換的時(shí)候未處于穩(wěn)定狀態(tài),比如超出0或者Vdd規(guī)定的限值范圍,那么晶體管就將會(huì)從之前的截止區(qū)進(jìn)入飽和區(qū),并且開(kāi)始消耗小部分的電流。這在小擺幅信號(hào)驅(qū)動(dòng)高電壓供電的輸入時(shí),將會(huì)給系統(tǒng)帶來(lái)問(wèn)題。 和上面描述的原則類似,在FPGA設(shè)計(jì)中,一個(gè)懸空的輸入引腳要比一個(gè)有驅(qū)動(dòng)的輸入引腳更糟糕。FPGA的引腳懸空,一般都被認(rèn)為帶驅(qū)動(dòng)的輸入,但是由于其懸空,所以無(wú)法得知它到底是如何被驅(qū)動(dòng)的。那樣懸空有可能被認(rèn)作亞穩(wěn)態(tài),那樣兩種晶體管都將會(huì)處于飽和區(qū)。如此將會(huì)給功耗帶來(lái)災(zāi)難性的影響。同樣糟糕的是,這是個(gè)無(wú)法復(fù)現(xiàn)的問(wèn)題。因?yàn)榇蟛糠諪PGA器件都能提供阻抗匹配,所以一個(gè)好的設(shè)計(jì)應(yīng)該將那些未用到的輸入引腳定義一個(gè)可知的狀態(tài),這樣可以避免由于引腳懸空帶來(lái)的不可預(yù)知的影響。 3.3降低供電電壓 雖然降低器件的供電電壓通常不是一個(gè)值得嘗試的選項(xiàng),但是這里還是有必要提一下其對(duì)于功耗的戲劇性影響。我們知道,一個(gè)簡(jiǎn)單電阻上功耗即功率與加載其上的電壓的平方成正比。那么,通過(guò)將FPGA的供電電壓降低到電壓要求的最低值,可以顯著地降低FPGA的功耗。然而,需要特別注意的是,降低供電電壓也會(huì)降低系統(tǒng)的性能。如果需要采取這種方式來(lái)降低功耗,那么就需要確保時(shí)序分析最快時(shí)序時(shí)已經(jīng)考慮到在供電電壓處于最低要求時(shí)這種最壞的情況。所以,我們可以得出這樣的結(jié)論,F(xiàn)PGA的動(dòng)態(tài)功耗會(huì)隨著核心電壓的平方成比例降低,但是降低電壓對(duì)于FPGA的性能會(huì)造成負(fù)面的影響。 因?yàn)橐话鉌PGA都規(guī)定電壓的正常工作范圍為工作值的5%到10%,所以千萬(wàn)要注意從系統(tǒng)設(shè)計(jì)方面綜合考慮。通常來(lái)說(shuō),為了很好地保持核心電壓在一個(gè)指定的范圍內(nèi),電源問(wèn)題可以通過(guò)其它技術(shù)解決。 3.4觸發(fā)器雙沿觸發(fā) 由于事實(shí)上功耗部分地和信號(hào)翻轉(zhuǎn)頻率相關(guān),所以對(duì)于那些高扇出網(wǎng)絡(luò),最好盡可能地?cái)U(kuò)展其每次翻轉(zhuǎn)的功能。大部分時(shí)候,一個(gè)系統(tǒng)的最大扇出網(wǎng)絡(luò)通常是系統(tǒng)時(shí)鐘,那么任何降低該時(shí)鐘頻率的技術(shù)都會(huì)對(duì)動(dòng)態(tài)功耗產(chǎn)生戲劇性影響。所謂的雙沿觸發(fā)觸發(fā)器,是提供了一種在時(shí)鐘的上下沿傳播數(shù)據(jù)的機(jī)制,而不只是單單使用時(shí)鐘的單個(gè)沿。如此就使得設(shè)計(jì)者可以在時(shí)鐘速度減半的情況下獲得之前全速時(shí)鐘下一樣的功能和性能。 在代碼中可以非常直接地設(shè)計(jì)雙沿觸發(fā)的觸發(fā)器,下面這個(gè)代碼示例就通過(guò)一個(gè)簡(jiǎn)單的移位寄存器對(duì)此進(jìn)行了展示。注意這個(gè)例子中的輸入信號(hào)在時(shí)鐘的上升沿被采集,接著被送入雙沿觸發(fā)器。 以下是代碼片段: module dualedge( output reg dataout, input clk,datain); reg ff0,ff1; always @ (posedge clk) ff0<=datain; always @ (posedge clk or negedge clk) begin ff1<=ff0; dataout<=ff1; end endmodule 需要注意的是,當(dāng)器件中沒(méi)有雙沿觸發(fā)器資源時(shí),將會(huì)由一些冗長(zhǎng)的觸發(fā)器以及門(mén)控邏輯來(lái)模擬上述對(duì)應(yīng)的功能。這將完全違反了我們采取雙沿策略的最初意圖,而且功能實(shí)現(xiàn)以后應(yīng)當(dāng)?shù)玫酵咨频胤治?。?duì)于一個(gè)好的綜合工具,在發(fā)現(xiàn)器件沒(méi)有雙沿觸發(fā)器的情況,應(yīng)當(dāng)至少會(huì)給出一個(gè)警告信息。所以這種雙沿觸發(fā)器來(lái)降低功耗的策略,應(yīng)該只適用于那些能提供這種資源的器件。 Xilinx的Coolrunner-II家族中的器件就包含有一種名為CoolClock的特性,這種特性可以將輸入時(shí)鐘進(jìn)行二分頻后讓觸發(fā)器工作于上述討論的雙沿狀態(tài)。從器件外部看來(lái),器件仍然無(wú)異于工作在單沿觸發(fā)的系統(tǒng),區(qū)別在于全局時(shí)鐘線上的動(dòng)態(tài)功耗減少了一半。 3.5修改阻抗匹配 帶總線信號(hào)、開(kāi)漏或者傳輸線輸出的系統(tǒng),其輸出引腳上通常都連接電阻負(fù)載,需要進(jìn)行終端匹配。上述所有這些例子中,F(xiàn)PGA輸出驅(qū)動(dòng)中的一個(gè)CMOS晶體管需要通過(guò)其中一個(gè)電阻負(fù)載源出或者吸入電流。因?yàn)檩敵龆夹枰侠娮?,可以通過(guò)最小可接受的上升時(shí)間計(jì)算出最大可能的電阻。如果總線上同時(shí)存在主從驅(qū)動(dòng)器,那么要確??偩€競(jìng)爭(zhēng)的情況不好發(fā)生,因?yàn)橐坏┌l(fā)生,即使只有幾納秒的時(shí)間,也會(huì)產(chǎn)生過(guò)大的電流。對(duì)于傳輸線來(lái)說(shuō),通常需要在負(fù)載處需要分流端接,根據(jù)系統(tǒng)的要求也可以使用串行端接替代。如圖3-6所示,使用串行端接時(shí),沒(méi)有穩(wěn)定的電流耗散。 圖3-6:端接類型 使用串行端接的不利在于: 從負(fù)載到端接電阻有一個(gè)初始信號(hào)反射 串聯(lián)電阻在信號(hào)傳輸?shù)臅r(shí)候會(huì)造成一部分衰減 如果一個(gè)系統(tǒng)可以接受上述這些不利的性能特性,那么串聯(lián)端接方案可以通過(guò)端接電阻來(lái)減少靜態(tài)功耗。 3.5優(yōu)化要點(diǎn)總結(jié) 如果有可能盡量使用觸發(fā)器的時(shí)鐘使能輸入或者全局時(shí)鐘多路選擇器來(lái)代替時(shí)鐘門(mén)控。 時(shí)鐘門(mén)控是降低動(dòng)態(tài)功耗的直接手段,但是會(huì)增加設(shè)計(jì)實(shí)現(xiàn)以及時(shí)序分析的難度。 時(shí)鐘歪斜處理不當(dāng)將會(huì)給FPGA設(shè)計(jì)造成災(zāi)難性的錯(cuò)誤。 時(shí)鐘門(mén)控會(huì)導(dǎo)致保持時(shí)間違規(guī),實(shí)現(xiàn)工具可能會(huì)也可能不會(huì)糾正。 為了最大限度減少器件輸入帶來(lái)的功耗,可以最大限度減小驅(qū)動(dòng)輸入信號(hào)的上升和下降時(shí)間。 對(duì)于未使用到的輸入緩沖總是進(jìn)行端接處理,不要讓FPGA的輸入緩沖處于懸空狀態(tài)。 動(dòng)態(tài)功耗會(huì)隨著核心電壓的平方成比例變化,但是通過(guò)降低電壓達(dá)到減少功耗的同時(shí),會(huì)給設(shè)計(jì)性能帶來(lái)負(fù)面的影響。 雙沿觸發(fā)的觸發(fā)器只有在器件可以提供這類資源的時(shí)候才應(yīng)該被使用。 串聯(lián)端接上沒(méi)有穩(wěn)定的電流耗散。 掃碼二維碼 獲取更多精彩 FPGA設(shè)計(jì)論壇
原文標(biāo)題:FPGA高級(jí)設(shè)計(jì)之實(shí)現(xiàn)功耗優(yōu)化
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601238
原文標(biāo)題:FPGA高級(jí)設(shè)計(jì)之實(shí)現(xiàn)功耗優(yōu)化
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論