日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

重點介紹hls軟件的使用方法和優(yōu)化方法

FPGA之家 ? 來源:數(shù)字積木 ? 作者:鞏文紅 ? 2021-06-17 10:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【引言】

本系列教程演示如何使用xilinx的HLS工具進行算法的硬件加速。分為三個部分,分別為HLS端IP設(shè)計,vivado硬件環(huán)境搭建,SDK端軟件控制。 在HLS端,要將進行硬件加速的軟件算法轉(zhuǎn)換為RTL級電路,生成便于嵌入式使用的axi控制端口,進行數(shù)據(jù)的傳輸和模塊的控制。

【HLS介紹】

HLS可以將算法直接映射為RTL電路,實現(xiàn)了高層次綜合。vivado-HLS可以實現(xiàn)直接使用 C,C++ 以及 System C 語言對Xilinx的FPGA器件進行編程。用戶無需手動創(chuàng)建 RTL,通過高層次綜合生成HDL級的IP核,從而加速IP創(chuàng)建。 HLS的官方參考文檔主要為:ug871( ug871-vivado-high-level-synthesis-tutorial.pdf )和ug902(ug902-vivado-high-level-synthesis.pdf)。 對于Vivado Hls來說,輸入包括Tesbench,C/C++源代碼和Directives,相應(yīng)的輸出為IP Catalog,DSP和SysGen,特別的,一個工程只能有一個頂層函數(shù)用于綜和,這個頂層函數(shù)下面的子函數(shù)也是可以被綜合的,會生成相應(yīng)的VHDL和Verilog代碼,所以,C綜合后的RTL代碼結(jié)構(gòu)通常是跟原始C描述的結(jié)構(gòu)是一致的,除非是子函數(shù)功能很簡單,所需要的邏輯量很小。并不是所有的C/C++都可以被綜合,動態(tài)內(nèi)存分配和涉及到操作系統(tǒng)層面的操作不可以被綜合。 Vivado HLS 的設(shè)計流程如下:

pYYBAGDKsvaADvghAABy19gBEPo235.jpg

在整個流程中,用戶先創(chuàng)建一個設(shè)計 C、C++ 或 SystemC 源代碼,以及一個C的測試平臺。通過 Vivado HLS Synthesis 運行設(shè)計,生成 RTL 設(shè)計,代碼可以是 Verilog,也可以是 VHDL。有了 RTL 后,隨即可以執(zhí)行設(shè)計的 Verilog 或 VHDL 仿真,或使用工具的C封裝器技術(shù)創(chuàng)建 SystemC 版本。然后可以進行System C架構(gòu)級仿真,進一步根據(jù)之前創(chuàng)建的 C 測試平臺,驗證設(shè)計的架構(gòu)行為和功能。設(shè)計固化后,就可以通過 Vivado 設(shè)計套件的物理實現(xiàn)流程來運行設(shè)計,將設(shè)計編程到器件上,在硬件中運行和/或使用 IP 封裝器將設(shè)計轉(zhuǎn)為可重用的 IP。

Step 1: 新建一個工程

1,Creat New Project新建文檔,輸入工程名稱和工程路徑。完成后點擊Next。

2,添加設(shè)計文件,并制定頂層函數(shù)。完成后點擊Next。

3,添加C語言仿真文件。完成后點擊Next。

4,:配置Solution Name,一般默認(rèn)即可。配置Clock Period,單位是ns。配置Uncertainty,默認(rèn)為空。選擇產(chǎn)品型號。完成后點擊Finish。

5,工程新建成功后進入的開發(fā)界面,HLS是典型的Eclipse界面,和SDK的界面十分相似。

導(dǎo)入的文件的代碼如下: 1,源文件。axi_interfaces.c

#include"axi_interfaces.h"void axi_interfaces (dout_t d_o[N], din_t d_i[N]) {inti,rem;// Store accumulated datastaticdacc_tacc[CHANNELS];axi_interfaces_label0:for (i=0;i

#ifndef AXI_INTERFACES_H_ #defineAXI_INTERFACES_H_ #include typedef int din_t; typedef int dout_t; typedefintdacc_t; #define CHANNELS 8 #define SAMPLES 4 #defineNCHANNELS*SAMPLES voidaxi_interfaces(dout_td_o[N],din_td_i[N]); #endif 3,測試文件。axi_interfaces_test.c

#include "axi_interfaces.h" int main () { // Create input data din_t d_i[N] = {10, 20, 30, 40, 50, 60, 70, 80, 11, 21, 31, 41, 51, 61, 71, 81, 12, 22, 32, 42, 52, 62, 72, 82, 13, 23, 33, 43, 53, 63, 73, 83}; dout_t d_o[N]; int i, retval=0; FILE*fp; // Call the function to operate on the data axi_interfaces(d_o,d_i); // Save the results to a file fp=fopen("result.dat","w"); fprintf(fp, "Din Dout "); for(i=0;i

Din Dout 10 10 20 20 30 30 40 40 50 50 60 60 70 70 80 80 11 21 21 41 31 61 41 81 51 101 61 121 71 141 81 161 12 33 22 63 32 93 42 123 52 153 62 183 72 213 82 243 13 46 23 86 33 126 43 166 53 206 63 246 73 286 83 326
Step 2: C源代碼驗證

本步驟是對功能代碼的邏輯驗證,相當(dāng)于功能前仿。

1,測試程序的代碼入下圖。該程序先調(diào)用綜合的函數(shù),得到計算結(jié)果,再和預(yù)先的數(shù)據(jù)集進行比較,最后返回計較的結(jié)果。計算結(jié)果和預(yù)先的數(shù)據(jù)集一致時,測試通過,不一致時,測試失敗。需要查看代碼,尋找錯誤。

2,點擊紅框中的按鈕,開始C源代碼驗證。

pYYBAGDKsu2ADloIAACtBnQ33mc233.jpg

3,驗證的結(jié)果顯示在控制欄中。如圖顯示,測試通過。

poYBAGDKsuWAVYNaAADwTfPh_wI718.jpg

4,在頭文件中,重定義了數(shù)據(jù)類型,參數(shù),并進行了函數(shù)聲明。

Step 3: 高層次綜合

本步驟是把功能代碼的綜合成RTL邏輯。 1,點擊紅框中的按鈕,將C代碼綜合成RTL。綜合完成后,查看結(jié)果。

poYBAGDKst2AZCWvAADzLQvlifo703.jpg

2,綜合完成后,查看綜合報告。包括時序,延時,資源占用,端口信息等。

3,端口分析。(1)控制端口用于控制和顯示該模塊的工作狀態(tài)。各個端口的功功能如下,默認(rèn)情況下會生成下面四個控制端口。 lap_start(in):為高時,該模塊開始處理數(shù)據(jù)。 lap_done(out):為高時,表示模塊處理數(shù)據(jù)完成。 lap_idle(out):表明模塊是否處于空閑態(tài)。高電平有效。為高時,該處于空閑態(tài)。 lap_ready(out):為高時,表示模塊可以接受新的數(shù)據(jù)。(2)數(shù)據(jù)端口用于傳遞模塊的輸入輸出參數(shù)。 參數(shù)d_o,d_i 為數(shù)組類型,故默認(rèn)狀態(tài)下回生成內(nèi)存接口。內(nèi)存接口 (數(shù)組類型參數(shù))數(shù)據(jù)來自外部的memory,通過地址信號讀取相應(yīng)的數(shù)據(jù),輸入到該模塊中。輸入數(shù)組從外部內(nèi)存中讀源數(shù)據(jù),輸出數(shù)組從向外部內(nèi)存寫入結(jié)果數(shù)據(jù)。各個端口的定義如下。 laddress:地址信號 lce0:片選信號 lwe0:寫使能信號 ld0 :數(shù)據(jù)信號 4,綜合結(jié)果分析。 在分析界面,可以看到模塊的運行情況。包括數(shù)據(jù)依賴關(guān)系和各個周期執(zhí)行的操作,IO口的讀寫,內(nèi)存端口的訪問等等。

Step4: 綜合優(yōu)化

在使用高層次綜合,創(chuàng)造高質(zhì)量的RTL設(shè)計時,一個重要部分就是對C代碼進行優(yōu)化。 Vivado HLS擁有自動優(yōu)化的功能,試圖最小化loop(循環(huán))和function(函數(shù))的latency。除了自動優(yōu)化,我們可以手動進行程序優(yōu)化,即用在不同的solution中添加不同的directive(優(yōu)化指令)的方法,進行優(yōu)化和性能對比。其中,對同一個工程,可以建立多個不同的solution(解決方案),為不同的solution添加directive可以達(dá)到如下目的。 優(yōu)化的類型可分為如下類別: l端口優(yōu)化。指定不同類型的模塊端口。 l函數(shù)優(yōu)化。加快函數(shù)的執(zhí)行速度,減小執(zhí)行周期。 l循壞優(yōu)化。利用展開和流水線形式,減小循環(huán)的執(zhí)行周期。
1,點擊下面紅框的圖標(biāo),新建solution。

pYYBAGDKstaAdraXAAC_fIjBGxs394.jpg

2,不同solution位于不同的文件夾中。

3,選中綜合文件。可以在direct框中看可進行優(yōu)化的標(biāo)簽。

4,雙擊選擇d_o,選擇interface,s_axilite。點擊ok。將d_o的端口類型設(shè)置為s_axilite類型。

5,參考d_o,將d_i的接口類型也設(shè)置為s_axilite。將d_i的端口類型設(shè)置為s_axilite類型。

6,雙擊選擇函數(shù)名稱axi_interface,選擇interface,s_axilite。點擊ok。將控制端口的端口類型設(shè)置為s_axilite類型。

7,雙擊循環(huán)標(biāo)簽,選擇流水線優(yōu)化(pipeline),點擊ok。

8,雙擊循環(huán)標(biāo)簽,選擇循環(huán)展開優(yōu)化(unroll),點擊ok。

9,同上,也將標(biāo)簽為for_loop的循環(huán)進行流水線和展開優(yōu)化。
10,最終的優(yōu)化情況總結(jié)如下。

11,重新進行函數(shù)綜合,查看綜合報告如下。

pYYBAGDKssuAEunDAADmmdA20fU769.jpg

12,分析。 同未優(yōu)化相比,優(yōu)化過后的函數(shù)綜合后生成的模塊的運行時鐘大大減小。端口的接口類型也變?yōu)榱薬xi_lite端口。但資源占用率有所增加,也體現(xiàn)了用資源換速度的設(shè)計理念。

Step5: 綜合結(jié)果文件

綜合完成后,在各個solution的syn文件夾中可以看到綜合器生成的RTL代碼。包括systemc,VHDL,Verilog。

Step6:導(dǎo)出IP

在菜單里Solution>Export TL,設(shè)置如下,點擊ok。

pYYBAGDKssOAJUGKAACpu83LYA4549.jpg

IP封裝完成后,會在impl文件夾中輸出ip文件夾,其中包含了RTL代碼(hdl),模塊驅(qū)動(drivers),文檔(doc)等信息,其中包含一個壓縮包文件,是用于建立vivado工程所用的IP壓縮包。

Step7:總結(jié)

本文重點講解了hls軟件的使用方法和優(yōu)化方法,在C語言模塊設(shè)計上沒有重點講解。在掌握了hls軟件的基本用法和優(yōu)化方法后,接下來就可以設(shè)計更加復(fù)雜的C語言模塊,進行rtl綜合,加快設(shè)計開發(fā)的速度。

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HLS
    HLS
    +關(guān)注

    關(guān)注

    1

    文章

    135

    瀏覽量

    25992

原文標(biāo)題:Vivado-hls使用實例

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    器件工藝協(xié)同優(yōu)化中加速版圖設(shè)計的三種方法

    器件工藝協(xié)同優(yōu)化(DTCO)流程需要生成海量版圖。本文將介紹幾種借助自動化手段,加速這一耗時流程的實現(xiàn)方法。
    的頭像 發(fā)表于 03-24 09:41 ?263次閱讀
    器件工藝協(xié)同<b class='flag-5'>優(yōu)化</b>中加速版圖設(shè)計的三種<b class='flag-5'>方法</b>

    RTL9301管理型交換機DHCP Server使用方法

    RTL9301管理型交換機DHCP Server使用方法
    的頭像 發(fā)表于 02-01 10:52 ?1521次閱讀
    RTL9301管理型交換機DHCP Server<b class='flag-5'>使用方法</b>

    HLS設(shè)計中的BRAM使用優(yōu)勢

    高層次綜合(HLS)是一種將高級編程語言(如C、C++或SystemC)轉(zhuǎn)換為硬件描述語言(HDL)的設(shè)計方法。在FPGA設(shè)計中,設(shè)計者可以靈活地利用FPGA內(nèi)部的資源,如塊RAM(BRAM)。雖然
    的頭像 發(fā)表于 01-28 14:36 ?438次閱讀

    ups電源的作用和使用方法詳解

    UPS(不間斷電源)是一種重要的電力保護設(shè)備,主要用于在電網(wǎng)供電異常時提供臨時的后備電源,并改善電源質(zhì)量。以下是其核心作用和使用方法的詳細(xì)介紹:一、UPS的主要作用核心:提供不間斷電力斷電保護:在
    的頭像 發(fā)表于 01-08 09:21 ?1892次閱讀
    ups電源的作用和<b class='flag-5'>使用方法</b>詳解

    UV三防漆的使用方法

    ,紫外線照射下秒級固化成膜,大幅提升生產(chǎn)效率,廣泛應(yīng)用于汽車電子、工業(yè)設(shè)備、醫(yī)療器械等領(lǐng)域。UV三防漆的使用方法UV三防漆的核心原理UV三防漆內(nèi)含光敏劑,在特定波
    的頭像 發(fā)表于 12-31 17:19 ?1713次閱讀
    UV三防漆的<b class='flag-5'>使用方法</b>

    芯源IR調(diào)制器都有哪些具體使用?使用方法是怎樣的?

    芯源IR調(diào)制器都有哪些具體使用?以及使用方法是怎樣的?
    發(fā)表于 12-02 06:33

    堆棧的定義,堆棧的使用方法

    和使用; 對于8086CPU,進出堆棧的只能是2字節(jié)的數(shù)據(jù)。 2 堆棧的使用方法 常用的堆棧相關(guān)指令包括PUSH POP PUSHF和POPF,語法如下: PUSH 源操作數(shù);將指定操作數(shù)入棧保護 POP
    發(fā)表于 11-21 06:49

    利用軟件方法解決EMC問題

    有時候解決EMC問題利用軟件方法反而是更高效快速的。二整改案例今天分析一個用軟件方法解決EMC問題的實際案例,通過該案例可以了解到軟件
    的頭像 發(fā)表于 10-28 11:35 ?398次閱讀
    利用<b class='flag-5'>軟件</b>的<b class='flag-5'>方法</b>解決EMC問題

    【產(chǎn)品介紹】Altair HyperStudy拓?fù)?b class='flag-5'>優(yōu)化軟件

    AltairHyperStudy強大的設(shè)計探索和優(yōu)化HyperStudy是一款多學(xué)科設(shè)計研究軟件,可幫助設(shè)計師探索和優(yōu)化產(chǎn)品的性能和穩(wěn)健性。HyperStudy通過結(jié)合最新數(shù)學(xué)方法、預(yù)
    的頭像 發(fā)表于 09-19 17:03 ?745次閱讀
    【產(chǎn)品<b class='flag-5'>介紹</b>】Altair HyperStudy拓?fù)?b class='flag-5'>優(yōu)化</b><b class='flag-5'>軟件</b>

    條碼掃碼設(shè)備的使用方法

    使用方法,能讓其充分發(fā)揮價值,為各行業(yè)的規(guī)范化管理提供有力支撐。一、條碼掃碼設(shè)備的主要類型不同場景對條碼掃碼設(shè)備的需求存在差異,目前主流類型可分為四類,適配不同工作
    的頭像 發(fā)表于 09-17 16:15 ?1182次閱讀
    條碼掃碼設(shè)備的<b class='flag-5'>使用方法</b>

    錫膏的儲存及使用方法詳解

    錫膏是一種常用的焊接輔助材料,廣泛應(yīng)用于電子、電器、通訊、儀表等行業(yè)的焊接工藝中。正確的儲存和使用方法對于保證錫膏的品質(zhì)和焊接效果至關(guān)重要。本文將就錫膏的儲存和使用方法進行詳細(xì)介紹,希望能對廣大焊接工作者有所幫助。
    的頭像 發(fā)表于 07-18 17:36 ?1690次閱讀
    錫膏的儲存及<b class='flag-5'>使用方法</b>詳解

    如何在Unified IDE中創(chuàng)建視覺庫HLS組件

    Vivado IP 流程(Vitis Unified),在這篇 AMD Vitis HLS 系列 3 中,我們將介紹如何使用 Unified IDE 創(chuàng)建 HLS 組件。這里采用“自下而上”的流程,從
    的頭像 發(fā)表于 07-02 10:55 ?1700次閱讀
    如何在Unified IDE中創(chuàng)建視覺庫<b class='flag-5'>HLS</b>組件

    如何使用AMD Vitis HLS創(chuàng)建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 來創(chuàng)建一個 HLS IP,通過 AXI4 接口從存儲器讀取數(shù)據(jù)、執(zhí)行簡單的數(shù)學(xué)運算,然后將數(shù)據(jù)寫回存儲器。接著會在 AMD Vivado Design Suite 設(shè)計中使用此 HLS
    的頭像 發(fā)表于 06-13 09:50 ?2294次閱讀
    如何使用AMD Vitis <b class='flag-5'>HLS</b>創(chuàng)建<b class='flag-5'>HLS</b> IP

    數(shù)字IC設(shè)計:方法、技巧與實踐

    了如何在RTL設(shè)計中考慮綜合和后端設(shè)計的問題;然后,給出了一些最常見的設(shè)計實例和代碼;最后,介紹了仿真的相關(guān)知識。第5章為邏輯綜合和相關(guān)技術(shù)。主要介紹了綜合工具的功能和基本使用方法,包括基本的綜合和
    發(fā)表于 05-28 16:06

    參考cycx3_uvc_ov5640例程,想進行按鍵觸發(fā)拍照,使用方法一,請問怎么實現(xiàn)的?

    參考cycx3_uvc_ov5640例程,想進行按鍵觸發(fā)拍照,使用方法一,請問怎么實現(xiàn)的?現(xiàn)在硬件按鍵觸發(fā)沒有問題,上位機軟件拍照也沒有問題。 glStatusBuffer[0] = 0x02
    發(fā)表于 05-21 07:24
    徐汇区| 邯郸市| 大港区| 彝良县| 新津县| 台山市| 远安县| 安岳县| 洪泽县| 新余市| 交口县| 永年县| 江孜县| 南阳市| 商洛市| 綦江县| 灵璧县| 得荣县| 焉耆| 汾西县| 门头沟区| 安乡县| 邵武市| 张家川| 广河县| 武穴市| 沈阳市| 东丰县| 微山县| 康马县| 连山| 海安县| 都兰县| 武威市| 东辽县| 湟源县| 临海市| 林甸县| 白城市| 平南县| 祁东县|