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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式視覺(jué)應(yīng)用開(kāi)發(fā)

          用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式視覺(jué)應(yīng)用開(kāi)發(fā)

          作者:Fernando Martinez Vallina 時(shí)間:2014-03-06 來(lái)源:電子產(chǎn)品世界 收藏

          HLS加速OPENCV函數(shù)

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

            一旦完成了嵌入式視覺(jué)系統(tǒng)架構(gòu)的分區(qū),找到了計(jì)算強(qiáng)度最大的部分,HLS工具就能幫助您加速這些函數(shù),同時(shí)仍能繼續(xù)使用C++編寫(xiě)。 HLSCC++SystemC代碼生成高效的RTL實(shí)現(xiàn)方案。

            此外,以IP為中心的設(shè)計(jì)環(huán)境提供豐富的處理IP SmartCORE,能簡(jiǎn)化到圖像傳感器、網(wǎng)絡(luò)及其它必要I/O接口的連接,簡(jiǎn)化庫(kù)中這些函數(shù)的實(shí)現(xiàn)。這相對(duì)于其它實(shí)現(xiàn)方案而言是一種明顯的優(yōu)勢(shì),因?yàn)槠渌桨改呐率亲罨镜?/span> I/O功能都需要加速。

          為什么需要高層次綜合?

            推出的 HLS是一款軟件編譯器,旨在將C、C++SystemC編寫(xiě)的算法轉(zhuǎn)變?yōu)獒槍?duì)用戶定義時(shí)鐘頻率和產(chǎn)品系列器件優(yōu)化的RTL。在C/C++程序解釋、分析和優(yōu)化方面,它與x86處理器的編譯器具有相同的核心技術(shù)基礎(chǔ)。這種相似性有助于從臺(tái)式機(jī)開(kāi)發(fā)環(huán)境快速移植到FPGA實(shí)現(xiàn)。您選擇目標(biāo)時(shí)鐘頻率和器件后,無(wú)需用戶輸入,Vivado HLS會(huì)默認(rèn)生成RTL實(shí)現(xiàn)。此外,Vivado HLS與其它任何編譯器一樣,也分不同的優(yōu)化級(jí)別。由于算法最終執(zhí)行目標(biāo)是定制的微型架構(gòu),因此Vivado HLS可實(shí)現(xiàn)的優(yōu)化級(jí)別比傳統(tǒng)的編譯器具有更精細(xì)的粒度。傳統(tǒng)的針對(duì)處理器的軟件設(shè)計(jì)O1 – O3優(yōu)化理念被架構(gòu)探索要求所取代,這些要求與用戶技術(shù)相結(jié)合,指導(dǎo)Vivado HLS創(chuàng)建盡可能出色的實(shí)現(xiàn)方案,滿足特定算法的功耗、面積占用和性能要求。

            圖4 Zynq上采用ARM處理器的運(yùn)動(dòng)檢測(cè)

            圖2給出了HLS編譯器的用戶設(shè)計(jì)流程。從理念上講,用戶提供C/C++/SystemC算法描述,編譯器就能生成RTL實(shí)現(xiàn)。程序代碼轉(zhuǎn)化為RTL的過(guò)程分為四大階段:算法規(guī)范、微型架構(gòu)探索、RTL實(shí)現(xiàn)和IP封裝。

            算法規(guī)范階段是指將針對(duì)FPGA架構(gòu)的軟件應(yīng)用開(kāi)發(fā)。該規(guī)范可在標(biāo)準(zhǔn)桌面軟件開(kāi)發(fā)環(huán)境中,全面利用提供的等軟件庫(kù)進(jìn)行開(kāi)發(fā)。除了支持以軟件為中心的開(kāi)發(fā)流程外,Vivado HLS還提升了從RTLC/C++的提取驗(yàn)證速度。用戶能用原軟件進(jìn)行全面的算法功能驗(yàn)證。通過(guò)Vivado HLS生成RTL后,生成的設(shè)計(jì)代碼類似于傳統(tǒng)軟件編譯器生成的處理器匯編代碼。用戶可在匯編代碼級(jí)進(jìn)行調(diào)試,但這一步并不是必需的。

            雖然Vivado HLS能處理幾乎所有針對(duì)其它軟件編譯器的C/C++代碼,但代碼有一個(gè)限制。在用Vivado HLS編譯代碼到FPGA過(guò)程中,用戶代碼不能包含任何運(yùn)行時(shí)動(dòng)態(tài)存儲(chǔ)器分配。與算法綁定于單個(gè)存儲(chǔ)器架構(gòu)的處理器不同,FPGA實(shí)現(xiàn)采用特定算法的存儲(chǔ)器架構(gòu)。通過(guò)分析陣列和變量的使用模式,Vivado HLS能確定哪些物理存儲(chǔ)器布局和存儲(chǔ)器類型最適合算法的存儲(chǔ)和帶寬要求。這種分析工作的唯一要求就是在C/C++代碼中明確描述算法使用的所有存儲(chǔ)器陣列。

            從C/C++轉(zhuǎn)為優(yōu)化的FPGA實(shí)現(xiàn)的第二步就是微型架構(gòu)探索。在這一階段,您可運(yùn)用Vivado HLS編譯器優(yōu)化來(lái)測(cè)試不同的設(shè)計(jì),以找到適當(dāng)?shù)拿娣e和性能組合。您可在不同性能點(diǎn)實(shí)現(xiàn)相同的C/C++代碼,無(wú)需修改源代碼。Vivado HLS編譯器優(yōu)化或要求規(guī)定了算法不同部分的性能如何描述。

          c++相關(guān)文章:c++教程




          關(guān)鍵詞: 賽靈思 Vivado OpenCV Smarter SoC

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