<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA協(xié)處理器的算法加速的實(shí)現

基于FPGA協(xié)處理器的算法加速的實(shí)現

作者: 時(shí)間:2013-04-28 來(lái)源:網(wǎng)絡(luò ) 收藏

C代碼轉換到HDL

采用C到HDL的轉換工具將C代碼轉換到HDL加速器是一種創(chuàng )建硬件的高效方法。圖2所示以及下面詳述的步驟總結了C到HDL轉換的過(guò)程:

圖2:C-HDL設計流程

圖2:C-HDL設計流程

1. 使用標準C工具實(shí)現應用程序或。開(kāi)發(fā)一種軟件測試向量(test bench)用于基線(xiàn)性能和正確性(主機或臺式電腦仿真)測試。使用一種編譯器(例如gprof)來(lái)開(kāi)始確定關(guān)鍵的函數。

2. 確定是否浮點(diǎn)到定點(diǎn)轉換適當。使用庫或宏來(lái)輔助這種轉換,使用一個(gè)基線(xiàn)測試向量來(lái)分析性能和準確性。使用編譯器來(lái)重新評估關(guān)鍵函數。

3. 使用C到HDL轉換工具(如Impulse C),在每個(gè)關(guān)鍵功能上重復,以實(shí)現:將分割成并行的進(jìn)程;創(chuàng )建硬件/軟件進(jìn)程接口(流、共享存儲器、信號);對關(guān)鍵的代碼段(例如內部代碼循環(huán))進(jìn)行自動(dòng)優(yōu)化和并行化;使用桌面電腦仿真、周期準確的C仿真以及實(shí)際的在系統測試對得到的并行進(jìn)行測試和驗證。

4. 使用C到HDL轉換工具將關(guān)鍵的代碼段轉換到HDL。

5. 將連接到APU接口用于最終的測試。

Impulse:C到HDL轉換工具

如圖3所示的Impulse C通過(guò)結合使用C兼容庫函數與Impulse CoDeveloper C代碼到硬件的編譯器,使嵌入式系統設計工程師能創(chuàng )建高度并行的、加速的應用。Impulse C通過(guò)使用定義完好的數據通信、消息傳遞和同步處理機制,簡(jiǎn)化了硬件/軟件混合應用設計。Impulse C提供了C代碼(例如循環(huán)流水線(xiàn)處理、展開(kāi)和運算符調度)的自動(dòng)優(yōu)化以及交互式工具,允許你對每個(gè)周期的硬件行為進(jìn)行分析。

圖3. Impulse C

Impulse C設計用于面向數據流的應用,但是它也具有足夠的靈活性來(lái)支持其他的編程模型,包括使用共享存儲器。這一點(diǎn)很重要,因為基于不同的應用具有不同的性能和數據要求。在一些應用中,通過(guò)塊存儲器讀和寫(xiě)在嵌入式處理器和之間轉移數據是有意義的;在其它的情況下,流傳數通信信道可能提供更高的性能??梢钥焖俳?、編譯和評估可選的算法的能力對于實(shí)現某個(gè)應用最佳的結果來(lái)說(shuō),非常重要。

到目前為止,Impulse C庫包含以新數據類(lèi)型和預定義的函數調用形式的最少C語(yǔ)言擴展。使用Impulse C函數調用,你可以定義多個(gè)并行程序段(調用進(jìn)程),并使用流、信號和其他機制描述它們的互連。Impulse C編譯器將這些C語(yǔ)言進(jìn)程轉換并優(yōu)化成:可以綜合到FPGA的較低級HDL,或可以通過(guò)廣泛存在的C交叉編譯器編譯到支持的微處理器上標準C(帶相關(guān)的庫調用)。

完整的CoDeveloper開(kāi)發(fā)環(huán)境包括與標準C編譯器和調試器(包括微軟公司的Visual Studio和GCC/GDB)兼容的臺式電腦仿真庫。使用這些庫,Impulse C程序設計工程師能編譯和執行他們用于算法驗證和調試目的的應用程序。C程序設計工程師還能檢驗并行進(jìn)程,分析數據移動(dòng),并利用CoDeveloper Application Monitor解決進(jìn)程到進(jìn)程的通信問(wèn)題。

在編譯時(shí),Impulse C應用的輸出是一組硬件和軟件源文件,用于輸入到FPGA綜合工具。這些文件包括:

1. 用于描述編譯硬件進(jìn)程的自動(dòng)產(chǎn)生的HDL文件;

2. 用于描述連接硬件進(jìn)程到系統總線(xiàn)所需的流、信號和存儲器組件的自動(dòng)產(chǎn)生的HDL文件;

3. 自動(dòng)產(chǎn)生的軟件組件(包括運行時(shí)間庫)用于建立任何硬件/軟件流連接的軟件端;

4. 附加文件,包括腳本文件,用于輸入產(chǎn)生的應用程序到目標FPGA布局布線(xiàn)環(huán)境。這種編譯進(jìn)程的結果是一個(gè)完整的應用,包括需要的硬件/軟件接口,用于在基于FPGA的編程平臺上實(shí)現。



關(guān)鍵詞: FPGA 協(xié)處理器 算法

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>