編者按:我很榮幸有機(jī)會去得到Xilinx的允許去介紹以下內(nèi)容,這是Xcell Journal第四季度版上的文章。電子發(fā)燒友網(wǎng)還專門為廣大FPGA設(shè)計工程師提供了《如何成為Xilinx FPGA設(shè)計專家基礎(chǔ)篇》創(chuàng)新技術(shù)電子書,內(nèi)容精彩,不容錯過。
電子發(fā)燒友網(wǎng)訊:這篇文章是關(guān)于如何實現(xiàn)FPGA設(shè)計的低功率運(yùn)行。這是一個全球性的問題,因為,這對無線、軍用移動設(shè)備和航空應(yīng)用等依賴于電池電源的產(chǎn)品來說是非常重要的。這一類的應(yīng)用覆蓋了飛機(jī)、無人機(jī)和前線士兵等通信設(shè)備。
這是一篇綱要,是關(guān)于最新的7系列FPGA在開發(fā)周期的每個階段中的低功率設(shè)計技術(shù)的。
功率問題已經(jīng)成為FPGA選型的首要考慮因素。電源管理是很多應(yīng)用設(shè)計的關(guān)鍵。一些標(biāo)準(zhǔn)指定每個系統(tǒng)的最大功率。例如,設(shè)計師必須在設(shè)計流程的早起考慮到功率問題,這通常和FPGA的選型同時進(jìn)行的。
通過減少電源供給線、簡化電源供給設(shè)計和熱量管理降低等手段降低FPGA的功率消耗可以簡化板上設(shè)計。低功率對延長電池壽命、提高系統(tǒng)可靠性起著重要作用。
功率挑戰(zhàn)
隨著工藝技術(shù)的發(fā)展,晶體管就如摩爾定律預(yù)言那樣變得越來越小了。這個現(xiàn)象帶來的一個弊端就是引致了晶體管的泄露,這就會引起更大的靜態(tài)能量消耗——這是FPGA沒有工作的時候產(chǎn)生的電流總量。增強(qiáng)的FPGA性能使時鐘效率變得更高,這個會引致更高的動態(tài)功率。靜態(tài)功率是由晶體管的泄漏電流決定的,動態(tài)功率則是基于可編程裸機(jī)和I/O的轉(zhuǎn)換頻率。隨著這兩種電源消耗的惡化,F(xiàn)PGA隨著產(chǎn)品的更新?lián)Q代逐漸增大其容量。更多的邏輯意味著在每個設(shè)備上高速運(yùn)行著更多的晶體管以及更多的泄漏。
考慮到以上因素,設(shè)計者必須在其設(shè)計前期更加注意他們的電源和熱量管理。在設(shè)備上面加上一個散熱器并不能解決這些問題。真實情況是設(shè)計者必須盡量減少設(shè)計里面的邏輯。
讓我們?yōu)g覽一些指南,這可以幫你們了解在FPGA設(shè)計過程中為降低功耗而進(jìn)行的某些操作。很明顯,在設(shè)計的早期對這些事情有一個透徹的了解可以獲得最大的回饋。
?
圖一:從設(shè)計流程的FPGA選型到低功耗設(shè)計技術(shù)的過程中闡明不同的意義。
7系列工藝技術(shù)
在FPGA的選型過程中,認(rèn)真考慮工藝技術(shù)可以幫助你辨別設(shè)備的泄漏和性能。Xilinx的7系列FPGA是基于28HPL(28nm的高性能、低功耗)工藝,覆蓋高性能空間,同時有明顯的功耗降低。選擇基于低泄漏HPL工藝可以降低在FPGA設(shè)計過程中的靜態(tài)功耗管理方案的復(fù)雜程度以及花費(fèi)。
在28HPL技術(shù)制造的FPGA相對于7系列的FPGA沒有任何性能優(yōu)勢,然而某些產(chǎn)品,與FPGA相比,有著多于兩倍的靜態(tài)功耗和在減少泄漏方面有著競爭優(yōu)勢。圖2展示了一個7系列FPGA綜合的能耗降低途徑,相對于上一代40nm的FPGA,可以降低一半的功耗。
?
圖2:Xilinx7系列FPGA的功耗相對于之前的40nm產(chǎn)品降低一半功耗。
為了開發(fā)產(chǎn)品及將來將其遷移到一個較小的產(chǎn)品,設(shè)計師可以選擇一個比較大的FPGA。選擇一個比較小的FPGA不但可以降低花費(fèi),同時會降低系統(tǒng)的功耗。
全系列的FPGA產(chǎn)品都是基于統(tǒng)一的架構(gòu)。這個統(tǒng)一的架構(gòu)使不同的FPGA設(shè)備的向上或向下遷移變得更簡單,在Xilinx的7系列產(chǎn)品線中的遷移也同樣簡單。如果考慮從Virtex-6或Spartan-6設(shè)備遷移到7系列以及在7系列中進(jìn)行遷移,可以參考“7系列遷移指南”(UG429)。
Xilinx的堆疊硅片互聯(lián)技術(shù)
對于大型的系統(tǒng),設(shè)計者通常會選擇多樣的FPGA,這類型的架構(gòu)通常需要在不同的FPGA之間要有相當(dāng)高速度的精妙和艱巨的數(shù)據(jù)轉(zhuǎn)移。選擇比較大的7系列FPGA,例如XC7V1500T和XC7V1500T設(shè)備,是利用Xilinx的堆疊硅片互聯(lián)技術(shù)制造的。這可以解決以上的問題。簡而言之,這個SSI技術(shù)(堆疊硅片互聯(lián)技術(shù))將多裸晶固定在一個硅中介層上面,這可以在它們之間提供成千上萬的連接,這樣就能制造出一個獨(dú)立的大設(shè)備。堆疊硅片互聯(lián)技術(shù)的一個好處就是與相同規(guī)模的標(biāo)準(zhǔn)單片產(chǎn)品相比,能降低降低靜態(tài)功率的最大值。
堆疊硅片互聯(lián)技術(shù)在I/O互聯(lián)功率方面有明顯的減小,與在一板上有多樣化的FPGA相比,SSI技術(shù)引以為豪的一點(diǎn)就是相對于一個帶有相同的I/O和收發(fā)器的接口,其在I/O互聯(lián)功率方面有100X(帶寬/W)的降低。這個明顯的降低是因為他們所有的連接是在芯片上,而不是借助需要的功率去從芯片驅(qū)動信號,那樣的話就可以得到不可思議的速度和低功耗。
表一:靜態(tài)、動態(tài)和性能功率比較。
?
電壓調(diào)節(jié)的可選擇性增強(qiáng)
Xilinx的7系列FPGA提供重要的電壓調(diào)節(jié)選擇。
7系列的FPGA給-3和-2L設(shè)備提供了一個比較大的溫度范圍(0-100℃)選擇。由于28HPL工藝的緣故,2LE設(shè)備可以工作在1或者0.9V的電壓。這些設(shè)備被稱為-2L(1.0V)或者-2L(0.9V)。工作在1.0V的-2L設(shè)備有著和-2I和-2C一樣的性能,但卻有著更低的靜態(tài)功率。工作在0.9V的-2L設(shè)備有著和-1I和-1C一樣的性能,其同時也有著更低的靜態(tài)和動態(tài)電壓。
在0.9V的電壓下,這些設(shè)備電壓的獨(dú)自下降可以降低靜態(tài)功率大約30%的消耗。降壓同樣會降低性能,但是因為其速度和嚴(yán)格的泄漏規(guī)格,Xilinx屏蔽這些12L(0.9V)設(shè)備。與標(biāo)準(zhǔn)速度水平的設(shè)備相比,這種屏蔽方法會給功率帶來55%的降低。
通過選擇-2L系列設(shè)備,你可以在動態(tài)功率上獲得額外的功率節(jié)省。因為動態(tài)功率與VCCINT2成比例,在VCCINT減少10%,則會在功率方面提供20%的節(jié)省。
功耗估算工具:
市面上有多種多樣的工具提供給工程師選擇,用來估算在整個研發(fā)周期FPGA設(shè)計所需要的熱能和電源。圖三展示了FPGA開發(fā)過程每個步驟有效的Xilinx工具。
?
在研發(fā)剛開始的時候,XPOWER Estimator(XPE)電子制表軟件甚至可以提供草圖設(shè)計和項目導(dǎo)入階段之前的早期功耗估算。XPE有助于架構(gòu)評估和設(shè)備選擇,同時它還可以幫助選擇適當(dāng)?shù)碾娫春蛻?yīng)用所需的熱量管理元器件。
PlanAhead軟件提供RTL階段的設(shè)計功率分配估算。設(shè)計者可以指定設(shè)備操作環(huán)境、I/O性能和設(shè)計使用限制的默認(rèn)活動率,這也可同過GUI來完成。PlanAhead軟件接下來就會讀HDL編碼去估算所需的設(shè)計資源,同時記錄每個資源靜態(tài)分析的功率。隨著對設(shè)計意圖的細(xì)節(jié)的了解深入,RTL功率估算將會比Xpower Estimator電子制表軟件更加精確,其精確度卻并不如Xpower Analyzer。
Xpower Analyzer (XPA)是一個功率分析工具,它提供一個制定工作條件下允許細(xì)節(jié)分析功耗和熱量信息的綜合性GUI。
你可以在兩種不同的觀點(diǎn)之間切換,以鑒定阻礙型(時鐘樹、邏輯、信號、I/O等)或者超過設(shè)計層的功耗。
它們提供一個非常有效的方法去確定障礙的位置,從而進(jìn)行功率優(yōu)化。
軟件功率優(yōu)化
通過最小化同時有效的block RAM端口的數(shù)量,你可以利用block RAMs來對功率進(jìn)行優(yōu)化設(shè)計。這次優(yōu)化,使-power選擇在 XST 狀態(tài),修改跨越多樣block RAM的RAM和ROM描述。這個優(yōu)化調(diào)整位置線、端口和寫控制信號,這樣就可以最小化在每個時鐘周期里面的有效的block RAM的數(shù)量,同時保證你的設(shè)計滿足時間限制。
之后,促進(jìn)效率的最優(yōu)化而忽略對性能的沖擊。當(dāng)你了解時序路徑與內(nèi)存的關(guān)系并不重要的時候,將block_power2選項調(diào)為ram_style限制。這樣可以節(jié)約15%到75%。
同樣,用XST的Area Optimization 模式,這個選擇會使你設(shè)計用到的資源數(shù)量最小化。應(yīng)注意的是當(dāng)區(qū)域最優(yōu)化以后,性能會受到限制。
一個額外的策略是activity-aware最優(yōu)化,這是intelligent gating的另一種說法。這些算法分析邏輯方程式去檢測每個對結(jié)果沒任何影響的時鐘周期源寄存器。軟件利用FPGA邏輯中充足的時鐘啟動(CE)可利用的資源去產(chǎn)生細(xì)粒度門信號。在很多方案里,的核心動態(tài)功率總體減少超過15%,額外插入的門邏輯并不影響性能。
功率設(shè)置的另一種方法是利用capacitance-aware最優(yōu)化,有兩個關(guān)鍵技術(shù):
Group clock loads:這個過程整理同步元素(例如觸發(fā)器或者DSP blocks)去最小化每一個時鐘網(wǎng)的范圍,當(dāng)你把clock loads沿著小部分的水平或者垂直的clock spines放置,軟件會禁止時鐘區(qū)域的未使用的分支。這回減少時鐘資源和緩沖要求,這樣就會節(jié)省核心動態(tài)功率,這個是同過map-power選項控制的。
Group data loads:這個算法最小化你設(shè)計中的用線長度,同時還確保你滿足性能需求。因為動態(tài)功率隨著你能看到的路線架構(gòu)的類型,Grouping data loads能夠節(jié)省功耗。這個grouping算法,同樣的使在 map – power選項,通過將相同的邏輯擺在一起降低功耗。
ISE 設(shè)計組合突出其預(yù)期目標(biāo)和策略,使功率在綜合、map的情況下最優(yōu)化。這種方法或許是利用所有綜合限制的不默認(rèn)限制設(shè)置的最好替代。然而,在這個情況下,會引起延時。
最好,Xilinx執(zhí)行工具自動化關(guān)掉不需要用到的收發(fā)器、鎖相回路、數(shù)字時鐘管理模塊和I/O。在7系列,Xilinx也添加不需要用到block RAM的電源門。Block RAM的泄漏只有在你使用特殊設(shè)計的block中發(fā)生,而不是發(fā)生在設(shè)備上所有的block RAM。
?
低功耗設(shè)計技術(shù)
工程師可以搜索到很多降低FPGA設(shè)計功耗的貼士和技術(shù),首選是用專用的硬件模塊而不是在CLB中執(zhí)行相同的裸機(jī)。為了減少功耗,你必須在設(shè)計中想法設(shè)法尋找可能存在的方法。這允許你去用到一個盡可能小的設(shè)備,同時減低靜態(tài)功耗。
用專用的硬核模塊是降低靜態(tài)和動態(tài)功率的一個最重要的方法,同時這樣也能夠輕易滿足時間需求。因為相對于一個等效的CLB邏輯,硬核的晶體管數(shù)量遠(yuǎn)遠(yuǎn)比CLB少,因此它能夠降低靜態(tài)功耗。
按照通常的做法,你可以嘗試去推斷出盡可能多的資源。你可以通過代碼或者在限制文檔中
為FPGA構(gòu)造或者硅資源獨(dú)自或作為一個整體控制推斷資源量。為了安裝特定的資源,你同樣可以影響Xilinx的 CORE Generator 工具去自定義專用硬件。
除此之外,你可以為其他不顯著的任務(wù)明智地采用不會被用到的硬核。DSP48 slice如倍頻器、加法器/累加器、邏輯比較器、模式適配器和計數(shù)器那樣處理很多邏輯功能。你可以將block RAMs當(dāng)作狀態(tài)機(jī)、數(shù)學(xué)函數(shù)、ROMS和邏輯查找表使用。
控制信號的最佳使用
控制信號(如時鐘、設(shè)置、復(fù)位、時鐘啟動等的控制同步基礎(chǔ)信號)的使用會影響設(shè)備的密度、利用率和性能。遵循一些指導(dǎo)會幫你將功率影響降到最低。
首先,避免在一個累加寄存器或鎖存器上使用一個設(shè)置和復(fù)位。Xilinx FPGA的觸發(fā)器支持異步和同步設(shè)置和復(fù)位控制。然而,底層觸發(fā)器本身每次只能執(zhí)行設(shè)置、復(fù)位、預(yù)設(shè)值或者清除。在RTL編碼里面編進(jìn)多于一個的功能則會造成執(zhí)行一個用觸發(fā)器SR端口的狀態(tài),其他狀況則是用結(jié)構(gòu)邏輯,這樣就會用到更多的FPGA資源。
如果其中的一個條件是同步,其他的是異步,那么異步狀態(tài)將會是唯一一個利用SR端口執(zhí)行的,同時同步狀態(tài)則用結(jié)構(gòu)邏輯實現(xiàn)??傊詈帽苊舛嘤谝粋€狀態(tài)。此外,如果觸發(fā)器的SR端口是同步或者異步,四個觸發(fā)器在同意情況下確認(rèn)的時候,只有一個產(chǎn)生作用。
除此之外,用高邏輯電平控制信號,寄存器的控制端口是高電平。不建議在FPGA設(shè)計中用地邏輯電平復(fù)位。因為低邏輯電平信號在可以直接驅(qū)動寄存器的控制端口之前需要倒置,因此它們用到更多查找表。這個倒置必須通過一個LUT完成,因此會占去一個LUT輸入。
因此,低邏輯電平控制信號可能導(dǎo)致更長的執(zhí)行時間,同時會引致設(shè)備的利用率變低,這會影響時序和功耗。
在HDL編碼或者具體元器件中盡可能用到高邏輯電平控制信號。當(dāng)在設(shè)計的時候不能夠控制一個控制性信號的極性,你應(yīng)該在編碼的最高層反置信號。I/O邏輯會執(zhí)行沒有用到任何額外FPGA邏輯的反相器,因此會達(dá)到最優(yōu)的利用、性能和功率。
多余的設(shè)置和復(fù)位
代碼中多余的設(shè)置和復(fù)位可以避免SRLs、LUT RAMs、RAMs模塊和其他方面可能涉及的邏輯結(jié)構(gòu)的推斷。盡管設(shè)計師會發(fā)現(xiàn)這不合適,很多的回路會被設(shè)計去自我復(fù)位,或者簡化不需要復(fù)位。例如,當(dāng)一個電路只是用來初始化寄存器,復(fù)位是不需要的。因為寄存器初始化在配置的時候自動發(fā)生。
通過減少設(shè)置和復(fù)位的使用,隨著設(shè)備的利用率的提高,設(shè)計師可以得到更好的安排,性能提高和功耗減少。
如果你對低功耗是很在意的,另一個必須關(guān)注的領(lǐng)域則是時鐘和模塊活動。你應(yīng)該充分利用BUFGMUX,BUFGCE和BUFHCE去降低功耗。這些約束條件會在整個時域暫停時鐘。同樣地,對應(yīng)用來說,這只可以通過使用FPGA寄存器的時鐘啟動接口去暫停設(shè)計的一個小區(qū)域的時鐘。
分布在多種時鐘區(qū)域的設(shè)計利用到更多的時鐘資源,同時其功率損耗也會更大。只要有可能,在一個單獨(dú)時鐘域里面間歇地使用邏輯(圖5)。這會幫助你減少功耗。雖然工具會自動完成這個,但有些設(shè)計還是需要手動去獲得同樣的效果。
圖5:如有可能,在一個時鐘區(qū)域里面用一些邏輯
另一個重要的技術(shù)是限制數(shù)據(jù)運(yùn)動。移動文件只是結(jié)果,而不僅僅是在PFGA移動操作對象。用到更少和更短的總線可以使其電容量更小,運(yùn)行速度更快,同時功耗也不大。在預(yù)布局的時候,工程師對設(shè)計的引腳和相對應(yīng)的邏輯放置應(yīng)該加倍注意。
降低靜態(tài)功耗的局部可重構(gòu)技術(shù)
降低靜態(tài)功耗的的一個方法是簡單的選用一個更小的設(shè)備。通過局部可重構(gòu)技術(shù),設(shè)計師可以從基本上時間片一個FPGA,同時能夠單獨(dú)的運(yùn)行他們的部分設(shè)計。因為并不是設(shè)計的每一部分都需要100%的時候,所以這些設(shè)計之后會需要一個更加小的設(shè)備。
局部可重構(gòu)技術(shù)可能會像處理靜態(tài)功耗那樣降低動態(tài)功耗。例如,許多設(shè)計必須快速運(yùn)行,但最大性能可能只需要很少的時間。為了節(jié)省電能,設(shè)計師利用局部可重構(gòu)技術(shù)去置換出一個同樣款式的,但帶有低功耗的高性能設(shè)計,而不是所有時間內(nèi)都是最大性能的設(shè)計。當(dāng)系統(tǒng)需要高性能的時候,你可以切換高性能設(shè)計。
這個規(guī)則同樣適用于I/O標(biāo)準(zhǔn),尤其是對于那些不需要長時間保持大功率的接口。由于需要比較大的DC電流去激勵,不管工作與否,LVDS都是一個大功率的接口。當(dāng)設(shè)計不需要高性能的時候,設(shè)計師可以運(yùn)用局部可重構(gòu)技術(shù)去將其I/O從LVDS轉(zhuǎn)換到一個類似LVCMOS的低功耗接口,然后在系統(tǒng)需要高速傳輸?shù)臅r候?qū)⑵淝袚Q到LVDS的模式。
在低功耗設(shè)計的時候充分利用時序約束也是非常重要的。如果你在一個溫度控制環(huán)境下操作,記住為了滿足時序需要,你可以忽略這部分。要確保只限制指定的時鐘頻率那部分。這表明一個將要用到的,較快的時鐘頻率不會形成一個更好的設(shè)計。顯然,因為減少資源共享、更多的邏輯/寄存器復(fù)制、更多的布線和FPGA專用特性的減少,這樣的話就會用到更多的結(jié)構(gòu)資源。所有的這些都能很明顯的影響動態(tài)功率。
I/O功耗已經(jīng)成為整體功耗的最重要一環(huán),一些設(shè)計的I/O功耗甚至占了整體功耗的50%,尤其是在內(nèi)存密集型系統(tǒng)。
可編程的轉(zhuǎn)換速率和驅(qū)動強(qiáng)度降低I/O驅(qū)動的的動態(tài)功耗。有很多類似HSLVDCI的標(biāo)準(zhǔn)可以在FPGA TO FPGA通信中節(jié)省比較大的功耗。
所有Xilinx 7系列設(shè)備提供可編程的轉(zhuǎn)換速率和驅(qū)動強(qiáng)度。Xilinx的FPGA數(shù)控電阻(DCI)技術(shù),也是三態(tài)的。在內(nèi)存從FPGA寫入數(shù)據(jù)時,DCI消除端接電源,因此設(shè)備只有在讀數(shù)據(jù)的時候消耗端接電源。
7系列的設(shè)備為HSTL和SSTL合并了一個用戶可編程參考接收器電源模式。你在一個I/O-by-I/O基礎(chǔ)上控制這兩個可編程電源模式,這可以通過在功耗和性能中權(quán)衡幫你降低DC功耗。
收發(fā)器功率描寫
Xilinx為了高性能和低抖動優(yōu)化了7系列的FPGA收發(fā)器。這些收發(fā)器提供幾個低功耗的操作特點(diǎn)。使設(shè)計師為平衡功耗和性能自定義靈活性的操作和間隔尺寸。
在7系列的FPGA,共享鎖相回路可以節(jié)省比較大的功耗。對一個具有相同行率的四路設(shè)計(如XAUI),你可以用一個四通道PLL 取代一個單通道PLL來節(jié)省功耗。同樣,在某些方案里,因為一個PLL可以在高速率和低速率的范圍里運(yùn)行,因此最好去選擇一個比較低的操作范圍去節(jié)省功耗。
你同樣可以使用一個單獨(dú)的TX/RXPOWERDOWN設(shè)置。在低功耗模式下的PPL電源休眠是可行的。
開發(fā)周期的每一個步驟
在執(zhí)行編碼之前明白和實施敏感電源設(shè)計技術(shù)是降低系統(tǒng)功耗的一個最大有效的途徑。在開發(fā)周期的相應(yīng)的階段應(yīng)用不同的Xilinx工具可以幫助你滿足功耗規(guī)格要求,同時在也可以硬件工程師選擇必要電源的數(shù)量、型號、大小上面提供相對應(yīng)的信息。Xilinx 7系列FPGA通過利用工藝技術(shù)和結(jié)構(gòu)設(shè)計提供了前所沒有的功耗效率。
——電子發(fā)燒友網(wǎng)版權(quán)所有,轉(zhuǎn)載請注明出處!
?
?
?
評論
查看更多