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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 解析FPGA低功耗設(shè)計

          解析FPGA低功耗設(shè)計

          作者: 時間:2014-10-31 來源:電子產(chǎn)品世界 收藏

            在項目設(shè)計初期,基于硬件電源模塊的設(shè)計考慮,對設(shè)計中的功耗估計是必不可少的。筆者經(jīng)歷過一個項目,整個系統(tǒng)的功耗達到了100w,而單片的功耗估計得到為20w左右,有點過高了,功耗過高則會造成發(fā)熱量增大,溫度高最常見的問題就是系統(tǒng)重啟,另外對內(nèi)部的時序也不利,導(dǎo)致可靠性下降。其它硬件電路的功耗是固定的,只有FPGA的功耗有優(yōu)化的余地,因此硬件團隊則極力要求筆者所在的FPGA團隊盡量多做些設(shè)計。筆者項目經(jīng)歷尚淺,還是第一次正視功耗這碼事兒,由于項目時間比較緊,而且xilinx方面也比較重視這個項目,因此當時有Xilinx的工程師過來對我們做了些培訓(xùn),并且專門請了美國總部的專家過來與我們協(xié)同進行設(shè)計功耗估計,還是比較給力的。

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

            以下是筆者在這比較短的時間內(nèi)學(xué)習(xí)到的一些關(guān)于功耗估計和如何進行設(shè)計的知識。

            1.功耗分析

            整個FPGA設(shè)計的總功耗由三部分功耗組成:1. 芯片靜態(tài)功耗;2. 設(shè)計靜態(tài)功耗;3. 設(shè)計動態(tài)功耗。

            ● 芯片靜態(tài)功耗:FPGA在上電后還未配置時,主要由晶體管的泄露電流所消耗的功耗。

            ● 設(shè)計靜態(tài)功耗:當FPGA配置完成后,當設(shè)計還未啟動時,需要維持I/O的靜態(tài)電流,時鐘管理和其它部分電路的靜態(tài)功耗。

            ● 設(shè)計動態(tài)功耗:FPGA內(nèi)設(shè)計正常啟動后,設(shè)計的功耗;這部分功耗的多少主要取決于芯片所用電平,以及FPGA內(nèi)部邏輯和布線資源的占用。

            顯而易見,前兩部分的功耗取決于FPGA芯片及硬件設(shè)計本身,很難有較大的改善。可以優(yōu)化是第3部分功耗:設(shè)計動態(tài)功耗,而且這部分功耗占總功耗的90%左右,因此所以降低設(shè)計動態(tài)功耗是降低整個系統(tǒng)功耗的關(guān)鍵因素。上面也提到過功耗較大會使FPGA發(fā)熱量升高,那有沒有一個定量的分析呢?答案當然是有,如下式:

            Tjmax > θJA * PD + TA

            其中Tjmax表示FPGA芯片的最高結(jié)溫(maximum junction temperature);θJA表示FPGA與周圍大氣環(huán)境的結(jié)區(qū)熱阻抗(Junction to ambient thermal resistance),單位是°C/W;PD表示FPGA總功耗(power dissipation),單位是W;TA表示周圍環(huán)境溫度。

            以XC7K410T-2FFG900I系列芯片為例,θJA = 8.2°C/W,在TA = 55°C的環(huán)境中,想要結(jié)溫Tjmax不超過100°C的情況下,可以推算FPGA的總功耗:PD < (Tjmax - TA)/θJA=(100 - 55)/8.2=5.488W,之前估算的20W與之相差太遠,因此優(yōu)化是必不可少的:

            1)降低θJA:熱阻抗取決于芯片與環(huán)境的熱傳導(dǎo)效率,可通過加散熱片或者風(fēng)扇減小熱阻抗

            

           

            圖1

            2)減小PD:通過優(yōu)化FPGA設(shè)計,降低總功耗,這也是本文重點講解的部分。

            2.功耗估計

            在講解設(shè)計之前,介紹一下xilinx的功耗估計工具XPE(Xilinx Power Estimator),XPE主要是在項目初期,處于系統(tǒng)設(shè)計,代碼并未完善階段功耗估計時使用。大家可以在xilinx官網(wǎng)上下載到:http://www.xilinx.com/power,它是一個基于EXCEL的工具,如圖2所示,功能做的十分豐富,感嘆EXCEL也未免太強大了吧。

            

           

            圖2

            在設(shè)計完成綜合實現(xiàn)后,則可以使用vivado自帶的功耗分析工具進行精確計算功耗。打開綜合實現(xiàn)后的設(shè)計,點擊report power即可得到功耗分析的結(jié)果,如圖3,4所示。

            

           

            圖3

            

           

            圖4

            3.低功耗設(shè)計

            關(guān)于FPGA低功耗設(shè)計,可從兩方面著手:1)。 算法優(yōu)化;2)。 FPGA資源使用效率優(yōu)化。

            1)算法優(yōu)化

            算法優(yōu)化可分為兩個層次說明:實現(xiàn)結(jié)構(gòu)和實現(xiàn)方法

            首先肯定需要設(shè)計一種最優(yōu)化的算法實現(xiàn)結(jié)構(gòu),設(shè)計一種最優(yōu)化的結(jié)構(gòu),使資源占用達到最少,當然功耗也能降到最低,但是還需要保證性能,是FPGA設(shè)計在面積和速度上都能兼顧。比如在選擇采用流水線結(jié)構(gòu)還是狀態(tài)機結(jié)構(gòu)時,流水線結(jié)構(gòu)同一時間所有的狀態(tài)都在持續(xù)工作,而狀態(tài)機結(jié)構(gòu)只有一個狀態(tài)是使能的,顯而易見流水線結(jié)構(gòu)的功耗更多,但其數(shù)據(jù)吞吐率和系統(tǒng)性能更優(yōu),因此需要合理選其一,使系統(tǒng)能在面積和速度之間得到平衡;

            另一個層面是具體的實現(xiàn)方法,設(shè)計中所有吸收功耗的信號當中,時鐘是罪魁禍首。雖然時鐘可能運行在 100 MHz,但從該時鐘派生出的信號卻通常運行在主時鐘頻率的較小分量(通常為 12%~15%)。此外,時鐘的扇出一般也比較高。這兩個因素顯示,為了降低功耗,應(yīng)當認真研究時鐘。 首先,如果設(shè)計的某個部分可以處于非活動狀態(tài),則可以考慮禁止時鐘樹翻轉(zhuǎn),而不是使用時鐘使能。時鐘使能將阻止寄存器不必要的翻轉(zhuǎn),但時鐘樹仍然會翻轉(zhuǎn),消耗功率。其次,隔離時鐘以使用最少數(shù)量的信號區(qū)。不使用的時鐘樹信號區(qū)不會翻轉(zhuǎn),從而減輕該時鐘網(wǎng)絡(luò)的負載。

            2)資源使用效率優(yōu)化

            資源使用效率優(yōu)化是介紹一些在使用FPGA內(nèi)部的一些資源如BRAM,DSP48E1時,可以優(yōu)化功耗的方法。FPGA動態(tài)功耗主要體現(xiàn)為存儲器、內(nèi)部邏輯、時鐘、I/O消耗的功耗。

            其中存儲器是功耗大戶,如xilinx FPGA中的存儲器單元Block RAM,因此在這邊主要介紹對BRAM的一些功耗優(yōu)化方法。

            如圖5中實例,雖然BRAM只使用了7%,但是其功耗0.601W占了總設(shè)計的42%,因此優(yōu)化BRAM的功耗能有效地減小FPGA的動態(tài)功耗。

            

           

            圖5

          fpga相關(guān)文章:fpga是什么



          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA 低功耗 RTL

          評論


          相關(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); })();