<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 通過實(shí)時(shí)改變使用率研究FPGA功耗行為

          通過實(shí)時(shí)改變使用率研究FPGA功耗行為

          作者: 時(shí)間:2016-10-16 來源:網(wǎng)絡(luò) 收藏

          現(xiàn)代的 芯片能夠開發(fā)高性能應(yīng)用,但在這些設(shè)計(jì)中電源管理通常是一大限制因素。 器件的資源使用最能決定設(shè)計(jì)的容量和處理速度,但是增加資源就會(huì)提高功耗。更高的功耗會(huì)提高運(yùn)行成本、面積要求和結(jié)溫,而設(shè)計(jì)人員必須用更多的氣流和冷卻系統(tǒng)來解決結(jié)溫問題。

          本文引用地址:http://www.ex-cimer.com/article/201610/308384.htm

          由于開發(fā)板或系統(tǒng)的總功耗極其重要,因此設(shè)計(jì)人員必須設(shè)置一個(gè)功耗預(yù)算,在資源使用和功耗問題方面兼顧平衡。所以,事先預(yù)測系統(tǒng)潛在功耗的能力可幫助設(shè)計(jì)人員獲得先發(fā)優(yōu)勢。

          對(duì)于實(shí)現(xiàn)前的功耗評(píng)估,可提供一些工具根據(jù)用戶輸入內(nèi)容或綜合報(bào)告進(jìn)行功耗估計(jì)。其中一款工具就是功耗估計(jì)器(Power Estimator,XPE)電子數(shù)據(jù)表。這款基于Excel 的功耗估計(jì)工具能讓您輸入資源使用、翻轉(zhuǎn)率和時(shí)鐘頻率等設(shè)計(jì)屬性,并根據(jù)器件信息計(jì)算估計(jì)的功耗值。另一款常用的工具是功耗分析器(Power Analyzer,XPA)。在布局和布線后,XPA 會(huì)導(dǎo)入已生成的NCD 文件,并利用實(shí)現(xiàn)詳細(xì)信息和仿真結(jié)果(而非用戶輸入)來更加準(zhǔn)確地估計(jì)功耗。

          作為備選方案,我們?cè)O(shè)計(jì)出一種新方法來測量真實(shí)器件上 設(shè)計(jì)的功耗估計(jì)值。為模擬不同的實(shí)現(xiàn)方案,我們創(chuàng)建了一個(gè)獨(dú)立于器件的通用VHDL 設(shè)計(jì),其有可能實(shí)現(xiàn)在FPGA 運(yùn)行時(shí)通過串行通道改變激活的資源(即DSP slice、Block RAM 和slice 寄存器)的數(shù)量及相應(yīng)的運(yùn)行條件(結(jié)溫、時(shí)鐘頻率和翻轉(zhuǎn)率)。 我們的這種技術(shù)可以同時(shí)監(jiān)控電源的電流和電壓大小,便于我們輕松觀察器件在不同資源使用和環(huán)境條件下的動(dòng)態(tài)功耗特性。

          我們已在賽靈思KC702 評(píng)估板上實(shí)現(xiàn)了該設(shè)計(jì)。不過,只要您的FPGA 器件支持設(shè)計(jì)中所使用的IP核,您只需做輕微修改也可在任何其它器件上實(shí)現(xiàn)該設(shè)計(jì)。

          另一種使用該技術(shù)的方法可能是作為面向FPGA 板的VHDL 測試設(shè)計(jì)。我們假設(shè)最近設(shè)計(jì)了一個(gè)通用型Kintex®-7 開發(fā)板??蛻艨稍诓粩嘧兓沫h(huán)境條件下利用未知的資源容量在開發(fā)板上實(shí)現(xiàn)任何設(shè)計(jì)。為了確保開發(fā)板的穩(wěn)定性和穩(wěn)健性,我們需要在最高和最低所需的環(huán)境溫度下強(qiáng)加器件的工作極限,并驗(yàn)證FPGA 能夠支持不同的資源使用情況。然而,測試每種資源使用方案需要從頭開始開發(fā)一款全新的VHDL 設(shè)計(jì),這會(huì)耗費(fèi)太多時(shí)間。我們推薦的方法可幫助設(shè)計(jì)人員靈活地根據(jù)需要對(duì)測試設(shè)計(jì)進(jìn)行實(shí)時(shí)控制。

          實(shí)現(xiàn)細(xì)節(jié)

          我們?cè)O(shè)法讓實(shí)現(xiàn)方案盡可能的簡單,以避免生成作為邏輯使用的s l i c e LUT,因?yàn)槲覀儫o法對(duì)其功耗進(jìn)行控制。實(shí)現(xiàn)slice 寄存器最簡單的方法是將它們組合為移位寄存器模塊。圖1a中的方框圖給出了slice 寄存器的實(shí)現(xiàn)方法。 這里需要注意一個(gè)簡單的問題,當(dāng)我們嘗試創(chuàng)建slice 寄存器時(shí),綜合工具常常將slice LUT 作為32 位移位寄存器(SRL32)使用,而不是使用slice 寄存器。您也可以利用以下VHDL 屬性來強(qiáng)制綜合軟件使用slice寄存器:

          LogiCORETM 模塊存儲(chǔ)器生成器創(chuàng)建作為單端口RAM 的Block RAM。將一個(gè)數(shù)位持續(xù)翻轉(zhuǎn)的16 位字不停寫入激活BRAM 的隨機(jī)地址中,從而使它們保持被占用狀態(tài)。圖1b 是單個(gè)BRAM 組件的方框圖。同樣,我們使用DSP slice 將一個(gè)25位被乘數(shù)與一個(gè)18 位乘數(shù)相乘,得到一個(gè)43 位輸出, 這就是單個(gè)DSP48E1 可以處理的最大字寬。所有DSP 組件的被乘數(shù)會(huì)被定期修改,從而使DSP 消耗動(dòng)態(tài)功耗,如圖1c 所示。然而,綜合工具試圖在綜合過程中刪除資源,因?yàn)檫@些模塊的輸出未與任何輸出引腳連接。您可以使用以下屬性使資源保持不變:

          在該方案中,您可通過控制時(shí)鐘使能信號(hào)來激活資源。時(shí)鐘禁用后的資源只消耗非常小的功耗,可在設(shè)計(jì)中忽略不計(jì)。具體來說,具有100%翻轉(zhuǎn)率的50 個(gè)DSP slice 的功耗為0.112 瓦,而當(dāng)它們的時(shí)鐘使能信號(hào)取消斷言時(shí)功耗為0.001 瓦。不同使用率下的結(jié)果幾乎相同。因此,每個(gè)資源組件都由時(shí)鐘使能信號(hào)通過串行通信進(jìn)行控制的設(shè)計(jì)無需采用新的設(shè)計(jì)和實(shí)現(xiàn)步驟即可立即仿真出改變使用率時(shí)的情況。

          資源的平均翻轉(zhuǎn)率是顯著影響功耗的重要因素。翻轉(zhuǎn)率是指特定資源在每個(gè)時(shí)鐘周期內(nèi)輸出信號(hào)的跳變次數(shù)。您可以交替改變資源的輸入以使輸出在每個(gè)周期都改變其狀態(tài),從而實(shí)現(xiàn)恒定的100% 翻轉(zhuǎn)率。例如,要調(diào)整DSP slice 的翻轉(zhuǎn)率,您可以選擇兩個(gè)被乘數(shù)(連續(xù)交替)和一個(gè)乘數(shù),這樣輸出的每位在每個(gè)周期中都會(huì)發(fā)生變化。輸入信號(hào)的交替速率決定資源的翻轉(zhuǎn)率;因此,我們通過串行通道就能即時(shí)控制某個(gè)資源類型的翻轉(zhuǎn)率。

          此外,功耗還與時(shí)鐘頻率直接成正比。我們使用混合模式時(shí)鐘管理器(MMCM)生成具有可變頻率的時(shí)鐘。MMCM 輸出的頻率、相位和占空比由一組寄存器決定,而且一般只當(dāng)實(shí)現(xiàn)設(shè)計(jì)和生成bit 流文件時(shí)才進(jìn)行初始化。然而,MMCM 的動(dòng)態(tài)重配置端口使我們能在FPGA 運(yùn)行時(shí)改變輸出時(shí)鐘等特性。時(shí)鐘的相位和占空比不在考慮范圍內(nèi),因?yàn)橄辔徊⒉挥绊懝模伎毡仍诖蠖鄶?shù)情況下也并不會(huì)改變。

          另一方面,頻率與功耗高度相關(guān)。MMCM 的內(nèi)部工作機(jī)理是,VCO 頻率由CLKOUT0_DIVIDE 寄存器的值進(jìn)行分頻,以獲得所需的輸出頻率。我們根據(jù)賽靈思應(yīng)用指南XAPP888 中介紹的狀態(tài)機(jī)算法為寄存器賦予新值,實(shí)現(xiàn)無毛刺轉(zhuǎn)換。與此同時(shí),我們根據(jù)圖形用戶界面(GUI)中的用戶輸入實(shí)時(shí)改變?cè)O(shè)計(jì)的時(shí)鐘頻率。然后,我們能方便地觀察不同頻率下設(shè)計(jì)的功耗特性。

          高溫條件下的功耗行為是另一項(xiàng)需要認(rèn)真觀察和驗(yàn)證的重要問題。芯片的內(nèi)核溫度取決于開發(fā)板設(shè)計(jì)、處理速度、環(huán)境溫度、散熱片和風(fēng)扇的氣流。在我們的設(shè)計(jì)中,我們利用簡單的PWM 開關(guān)控制器改變位于FPGA 芯片頂部的風(fēng)扇的速度,從而局部地控制結(jié)溫。此外,您也可以使用熱風(fēng)槍等外部加熱工具來縮短加熱時(shí)間。

          用片上傳感器測量內(nèi)核溫度,并通過LogiCORE XADC 向?qū)赡?shù)轉(zhuǎn)換器XADC。當(dāng)您在GUI 中輸入?yún)⒖紲囟戎禃r(shí),GUI 通過串行通道將參考值發(fā)送到器件,并與片上傳感器測量到的內(nèi)核溫度進(jìn)行比較。通過控制風(fēng)扇的速度將結(jié)溫穩(wěn)定在所需的水平上。這樣,您就可以觀察功耗情況并繪制與內(nèi)核溫度的走勢圖,從而驗(yàn)證是否滿足設(shè)計(jì)的功耗預(yù)算,以及功耗在所需的加熱特性下是否保持在關(guān)鍵限值以內(nèi)。

          圖形用戶界面可用來與FPGA 器件通信,以改變上述參數(shù)。圖2 給出了GUI 的屏幕截圖。我們首先通過標(biāo)準(zhǔn)UART 利用其中一個(gè)可用端口連接到器件。然后,我們打開賽靈思功耗估計(jì)器將估計(jì)值與測量值進(jìn)行比較。GUI 立即為使用默認(rèn)參數(shù)值的估計(jì)功耗和實(shí)際功耗繪制功耗與時(shí)間關(guān)系圖。您可在相關(guān)面板中修改這些參數(shù),并在資源(Resource)面板中利用翻轉(zhuǎn)率指定所用的slice 資源數(shù)量。使用掃描(Utilization Sweep)面板在等間隔下從0% 至100% 掃描特定資源的使用率,并利用每個(gè)間隔的測量功耗值繪制功耗與使用率關(guān)系圖。

          圖2 – 我們的圖形用戶界面

          同樣,您可在時(shí)鐘選擇(Clock Select)面板中改變MMCM 的輸出并掃描時(shí)鐘頻率。在下一欄的Vccint 面板中可測量和連續(xù)繪制出FPGA 芯片的電源電壓。同時(shí),內(nèi)核溫度(Core Temperature)面板顯示并繪制出內(nèi)核溫度。用戶可在提供的對(duì)話框中輸入?yún)⒖紲囟纫愿淖兘Y(jié)溫。

          您可利用集成在KC702 開發(fā)板上的德州儀器(Texas Instruments)UCD9248 數(shù)字PWM 系統(tǒng)控制器測量電源的電壓和電流電平。這種用于電源轉(zhuǎn)換器的多軌和多相位PWM 控制器支持電源管理總線(PMBus)通信協(xié)議。其PWM 信號(hào)可驅(qū)動(dòng)用于調(diào)節(jié)Vccint 電源電壓的UCD7242 集成電路。一組PMBus 命令可用于配置IC功能。UCD7242 包含片上電壓與電流感應(yīng)電路,并與UCD9248 進(jìn)行通信。我們的GUI 軟件不斷向該器件發(fā)送相應(yīng)的PMBus 命令,同時(shí)接收標(biāo)準(zhǔn)PMBus 數(shù)據(jù)格式的DC/DC 轉(zhuǎn)換器的電壓和電流值。然后,我們將收到的字節(jié)轉(zhuǎn)換為實(shí)際數(shù)值,并獲得電源的電壓和電流電平。

          在高溫下運(yùn)行復(fù)雜、擁塞的設(shè)計(jì)可能會(huì)擾亂電源電壓電平。不幸的是,F(xiàn)PGA 芯片對(duì)于輸入電壓的容差范圍較小。超過該電平范圍會(huì)導(dǎo)致芯片上的功能失效或者永久損壞。因此,您在設(shè)計(jì)完開發(fā)板后,還需要測試嚴(yán)苛工作條件下電壓電平的穩(wěn)定性。Vccint 面板可用來觀察和驗(yàn)證設(shè)計(jì)開發(fā)板的電源系統(tǒng)是否能夠承受高溫下進(jìn)行高速處理時(shí)的電壓變化。

          設(shè)計(jì)人員需要始終謹(jǐn)記的重要一點(diǎn)是:由于制造工藝變化,每個(gè)器件都會(huì)有不同的功耗。例如,在Virtex-7 FPGA 芯片制造完成后,會(huì)在測試階段確定足夠讓芯片正確運(yùn)行的最小電壓源電平并寫入電熔絲。將穩(wěn)壓器輸出調(diào)節(jié)至這個(gè)最小電壓電平可以改變靜態(tài)功耗。因此,靜態(tài)功耗的偏移會(huì)導(dǎo)致XPE 與我們的設(shè)計(jì)在結(jié)果上出現(xiàn)差異。例如,XPE 中估計(jì)的Kintex-7 芯片的靜態(tài)功耗在典型情況與最差情況時(shí)計(jì)算相差0.7 瓦。

          完美匹配XPE

          我們?cè)诤芏嗑哂锌勺円蛩氐牟煌O(shè)計(jì)方案中對(duì)我們的設(shè)計(jì)進(jìn)行了測試,以確保其精確性和可靠性。同時(shí),還在測量值的示意圖中繪出XPE 的估計(jì)結(jié)果,從而將功耗估計(jì)值與實(shí)際測量值進(jìn)行比較。

          通過最初將資源使用率從零至設(shè)計(jì)最大值掃描的設(shè)計(jì)實(shí)現(xiàn)可觀察Kintex-7 器件的功耗行為。圖3 給出了掃描一種資源類型的使用率過程中功耗的變化情況。直線和虛線分別代表實(shí)際功耗測量值和XPE 的估計(jì)值。我們可以看到即使在使用率和功耗處于高值時(shí)兩條曲線依然靠得非常緊密。

          圖3 – 在這個(gè)功耗與使用率關(guān)系圖中,直線代表實(shí)際的功耗測量值,虛線代表XPE的估計(jì)值。

          這些結(jié)果表明賽靈思功耗估計(jì)器計(jì)算值與實(shí)際測量值一致,可以準(zhǔn)確地預(yù)測功耗。此外,我們還可以斷定我們推薦的方法能夠起到預(yù)期效果,并且可以作為XPE 的替代方案。更好的選擇是將兩種方法結(jié)合使用。同時(shí)采用XPE 和我們的方法來測試設(shè)計(jì)可對(duì)結(jié)果進(jìn)行雙重檢查,確保您在XPE中修改數(shù)字時(shí)不會(huì)犯任何錯(cuò)誤。例如,如果您沒有在XPE 中正確輸入時(shí)鐘的平均扇出數(shù)字,或者誤解了一個(gè)概念并錯(cuò)誤填寫對(duì)話框,那么得到的示意圖就無法重合,即表明有錯(cuò)誤存在,這樣您就可以校正輸入值,防止出現(xiàn)誤導(dǎo)性的估算結(jié)果。

          FPGA 開發(fā)板的額定規(guī)范,例如最大功耗或允許的內(nèi)核溫度范圍,總是包含在開發(fā)板的數(shù)據(jù)手冊(cè)中。不過,具有較高資源使用率和時(shí)鐘頻率的設(shè)計(jì)會(huì)超出這些額定值。因此,必須確認(rèn)功率調(diào)節(jié)器能為器件提供足夠的電流,而且散熱系統(tǒng)足以將溫度保持在FPGA 設(shè)計(jì)的臨界值以內(nèi)。我們的方法可通過增加資源使用和時(shí)鐘頻率來測試開發(fā)板的可靠性能否滿足高性能要求。這種測試有助于確定開發(fā)板上實(shí)現(xiàn)的設(shè)計(jì)所具備的最高信號(hào)處理速率。此外,我們還可以了解是否需要升級(jí)開發(fā)板的功能和系統(tǒng)的冷卻機(jī)制。

          測試結(jié)果表明了我們的方法能夠可靠地控制資源使用和評(píng)估功耗,因此工程師在設(shè)計(jì)前期階段就多了一種電源管理選項(xiàng)。在采取進(jìn)一步功能改進(jìn)后,例如增加JTAG 接口、完全獨(dú)立于器件的VHDL 代碼以及通用的電流感應(yīng)系統(tǒng),這項(xiàng)設(shè)計(jì)將會(huì)成為FPGA 項(xiàng)目的關(guān)鍵工具。



          關(guān)鍵詞: 賽靈思 FPGA

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();