一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

FPGA之家 ? 來源:數(shù)字積木 ? 作者:鞏文紅 ? 2021-06-17 10:20 ? 次閱讀

【引言】

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

【HLS介紹】

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

pYYBAGDKsvaADvghAABy19gBEPo235.jpg

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

Step 1: 新建一個(gè)工程

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

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

3,添加C語言仿真文件。完成后點(diǎn)擊Next。

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

5,工程新建成功后進(jìn)入的開發(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,測(cè)試文件。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源代碼驗(yàn)證

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

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

2,點(diǎn)擊紅框中的按鈕,開始C源代碼驗(yàn)證。

pYYBAGDKsu2ADloIAACtBnQ33mc233.jpg

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

poYBAGDKsuWAVYNaAADwTfPh_wI718.jpg

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

Step 3: 高層次綜合

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

poYBAGDKst2AZCWvAADzLQvlifo703.jpg

2,綜合完成后,查看綜合報(bào)告。包括時(shí)序,延時(shí),資源占用,端口信息等。

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

Step4: 綜合優(yōu)化

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

pYYBAGDKstaAdraXAAC_fIjBGxs394.jpg

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

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

4,雙擊選擇d_o,選擇interface,s_axilite。點(diǎn)擊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。點(diǎn)擊ok。將控制端口的端口類型設(shè)置為s_axilite類型。

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

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

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

11,重新進(jìn)行函數(shù)綜合,查看綜合報(bào)告如下。

pYYBAGDKssuAEunDAADmmdA20fU769.jpg

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

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

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

Step6:導(dǎo)出IP

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

pYYBAGDKssOAJUGKAACpu83LYA4549.jpg

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

Step7:總結(jié)

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

責(zé)任編輯:lq6

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

    關(guān)注

    1

    文章

    131

    瀏覽量

    24568

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    精密空調(diào)操作使用方法詳解

    精密空調(diào)操作使用方法詳解
    的頭像 發(fā)表于 02-10 14:44 ?508次閱讀
    精密空調(diào)操作<b class='flag-5'>使用方法</b>詳解

    快速了解電源模塊的使用方法

    電源是整個(gè)電路可靠工作的核心部分。然而,由于電源電路的電流和發(fā)熱量較大,容易出現(xiàn)故障。今天我為大家介紹一下電源模塊的使用方法。
    的頭像 發(fā)表于 01-21 15:24 ?491次閱讀

    AB伺服軟件使用方法

    AB伺服軟件使用方法
    發(fā)表于 12-24 14:45 ?0次下載

    示波器高壓探頭使用方法

    示波器高壓探頭是一種用于測(cè)量高電壓信號(hào)的儀器,通常用于高壓電源、電機(jī)、變壓器等電氣設(shè)備的測(cè)試。以下是示波器高壓探頭的詳細(xì)使用方法
    的頭像 發(fā)表于 10-03 16:43 ?923次閱讀

    探針頭型使用方法有哪些

    探針頭型的使用方法多種多樣,具體取決于探針頭型的類型、被測(cè)對(duì)象的特性以及測(cè)試需求。以下是一些常見探針頭型的使用方法概述: 1. 凹頭探針 用途 :主要用于測(cè)試長(zhǎng)導(dǎo)腳、端子及繞線柱等較長(zhǎng)或較粗的被測(cè)點(diǎn)
    的頭像 發(fā)表于 09-07 10:57 ?1411次閱讀

    DC/DC模擬的基本使用方法和特性確認(rèn)方法

    本篇介紹了DC/DC模擬的基本使用方法及確認(rèn)基本特性的方法。
    的頭像 發(fā)表于 08-20 17:08 ?1103次閱讀
    DC/DC模擬的基本<b class='flag-5'>使用方法</b>和特性確認(rèn)<b class='flag-5'>方法</b>

    優(yōu)化 FPGA HLS 設(shè)計(jì)

    優(yōu)化 FPGA HLS 設(shè)計(jì) 用工具用 C 生成 RTL 的代碼基本不可讀。以下是如何在不更改任何 RTL 的情況下提高設(shè)計(jì)性能。 介紹 高級(jí)設(shè)計(jì)能夠以簡(jiǎn)潔的方式捕獲設(shè)計(jì),從而
    發(fā)表于 08-16 19:56

    圖片動(dòng)畫控件和Video image控件的使用方法

    在UI開發(fā)過程中,序列幀基本是繞不開的,AWTK 支持多種方法實(shí)現(xiàn)序列幀顯示,本文介紹圖片動(dòng)畫控件和Video image控件的使用方法。
    的頭像 發(fā)表于 08-06 16:44 ?1391次閱讀
    圖片動(dòng)畫控件和Video image控件的<b class='flag-5'>使用方法</b>

    ModBus Scan32模擬軟件使用方法

    的一款軟件,下面介紹一下其使用方法。 ModScan32用來模擬主設(shè)備。它可以發(fā)送指令到從機(jī)設(shè)備(使用Modbus協(xié)議的智能儀表終端設(shè)備)中,從機(jī)響應(yīng)之后,就可以在界面上返回相應(yīng)寄存器的數(shù)據(jù)
    發(fā)表于 07-24 08:04

    DC/DC模擬器的特征和使用方法

    本篇介紹了特瑞仕在官網(wǎng)提供的DC/DC模擬器的特征和使用方法
    的頭像 發(fā)表于 07-18 16:17 ?1078次閱讀
    DC/DC模擬器的特征和<b class='flag-5'>使用方法</b>

    淺談錫膏的儲(chǔ)存及使用方法

    錫膏(焊錫膏)是電子組裝過程中常用的材料,它的儲(chǔ)存和使用方法對(duì)保證焊接質(zhì)量和性能至關(guān)重要。以下是詳細(xì)的儲(chǔ)存及使用方法
    的頭像 發(fā)表于 06-27 10:02 ?1406次閱讀

    可編程電源使用方法

    可編程電源使用方法 可編程電源使用方法 摘要:本文詳細(xì)介紹了可編程電源的使用方法,包括其基本概念、主要功能、選擇原則、操作步驟、注意事項(xiàng)以及實(shí)際應(yīng)用案例,旨在幫助讀者全面了解可編程電源
    的頭像 發(fā)表于 06-10 15:29 ?1472次閱讀

    現(xiàn)場(chǎng)總線的使用方法與注意事項(xiàng)

    的穩(wěn)定可靠運(yùn)行,正確的使用方法和注意事項(xiàng)至關(guān)重要。本文將詳細(xì)介紹現(xiàn)場(chǎng)總線的使用方法和注意事項(xiàng),以供讀者參考。
    的頭像 發(fā)表于 06-06 11:49 ?1125次閱讀

    任意波形發(fā)生器的使用方法

    提供了極大的便利。然而,要想充分發(fā)揮任意波形發(fā)生器的性能,掌握其正確的使用方法至關(guān)重要。本文將對(duì)任意波形發(fā)生器的使用方法進(jìn)行詳細(xì)介紹,包括設(shè)備準(zhǔn)備、參數(shù)設(shè)置、波形生成、輸出檢測(cè)等步驟,旨在幫助用戶更好地理解和使用這一重要工具。
    的頭像 發(fā)表于 05-21 17:26 ?2124次閱讀

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發(fā)表于 05-15 10:19 ?2782次閱讀