精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

Vivado設(shè)計(jì)之HLS開發(fā)詳細(xì)步驟

454398 ? 來源:csdn ? 作者:csdn ? 2021-01-02 09:45 ? 次閱讀

對(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)單,所需要的邏輯量很小。 通常在main函數(shù)以下的函數(shù)都可以被綜合,也就是說,并不是所有的C/C++都可以被綜合,動(dòng)態(tài)內(nèi)存分配和涉及到操作系統(tǒng)層面的操作不可以被綜合。

本文結(jié)構(gòu)框架:

  • Creat New Project新建文檔
  • C simulation
  • C systhesis
  • RTL級(jí)仿真
  • IP封裝
  • 總結(jié)

1.Creat New Project新建文檔:

新建一個(gè)Project name,點(diǎn)next(這里選取簡(jiǎn)單的4選1數(shù)據(jù)選擇器為例,主要是說明流程)

o4YBAF9uHoOACY8cAABDDVneib4831.png

在Add Files里添加mux41.c文件,點(diǎn)next

pIYBAF9uHoWAbvXYAABWdrOjBT4239.png

添加mux41_test測(cè)試文件,點(diǎn)next

pIYBAF9uHoaACzM7AABQ3x5Cffg232.png

點(diǎn)Part,這里選擇Board下面的Zedboard Zynq開發(fā)板,然后點(diǎn)OK和finish

pIYBAF9uHoeAHGHGAABNH-Pzt4M317.png

注釋:

mux41.c代碼:
#include "mux41.h"
int1 mux41(int1 sig_a, int1 sig_b,int1 sig_c,int1 sig_d, int select)
{
    if(select==0)
       return sig_a;
    else if(select==1)
       return sig_b;
    else if(select==2)
       return sig_c;
    else if(select==3)
       return sig_d;
}

mux41.h代碼:(頭文件)
#include 

mux41_tb代碼:
#include 
#include "mux41.h"
int main(void)
{
    int res1 = 0;
    int res2 = 0;
    int res3 = 0;
    int res4 = 0;
  res1=mux41(1,0,0,0,0);
    res2=mux41(0,1,0,0,1);
    res3=mux41(0,0,1,0,2);
    res4=mux41(0,0,0,1,3);
    if(res1 && res2 && res3 && res4)
        printf("test passed, well done!/n");
    return 0;
}

2.C simulation:

在菜單里Project>Run C simulation,C simulation可以得到csim文件

o4YBAF9uHomASw5eAACoJCj4CxI828.png

從圖中看到,可以看到test passed,well done!,證明結(jié)果是正確的:

pIYBAF9uHoqAMPC4AABBpNR5PbY175.png

3.C systhesis:

在菜單里Solution>Run C Systhesis>Active solution,綜合會(huì)得到syn文件

o4YBAF9uHoyAA-B3AADBDiAllLY194.png

注意綜合得到的verilog代碼的可讀性很差,不需要讀懂,所以大多數(shù)優(yōu)化都在C這個(gè)層面去做的,下面是綜合后的verilog代碼:

// ==============================================================
// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
// Version: 2016.3
// Copyright (C) 1986-2016 Xilinx, Inc. All Rights Reserved.
// 
// ===========================================================
`timescale 1 ns / 1 ps 
(* CORE_GENERATION_INFO="mux41,hls_ip_2016_3,{HLS_INPUT_TYPE=c,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=1,HLS_INPUT_PART=xc7z020clg484-
1,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=5.258000,HLS_SYN_LAT=0,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=0,HLS_SYN_LUT=41}" *)
module mux41 (
        ap_start,
        ap_done,
        ap_idle,
        ap_ready,
        sig_a,
        sig_b,
        sig_c,
        sig_d,
        select_r,
        ap_return
);
parameter    ap_const_lv32_0 = 32'b00000000000000000000000000000000;
parameter    ap_const_lv32_1 = 32'b1;
parameter    ap_const_lv32_2 = 32'b10;
input   ap_start;
output   ap_done;
output   ap_idle;
output   ap_ready;
input  [0:0] sig_a;
input  [0:0] sig_b;
input  [0:0] sig_c;
input  [0:0] sig_d;
input  [31:0] select_r;
output  [0:0] ap_return;
wire   [0:0] tmp_fu_60_p2;
wire   [0:0] tmp_1_fu_66_p2;
wire   [0:0] sel_tmp1_fu_86_p2;
wire   [0:0] sel_tmp2_fu_92_p2;
wire   [0:0] sel_tmp_fu_78_p3;
wire   [0:0] tmp_2_fu_72_p2;
wire   [0:0] tmp7_fu_106_p2;
wire   [0:0] sel_tmp5_fu_112_p2;
wire   [0:0] p_0_fu_98_p3;
assign ap_done = ap_start;
assign ap_idle = 1'b1;
assign ap_ready = ap_start;
assign ap_return = ((sel_tmp5_fu_112_p2[0:0] === 1'b1) ? p_0_fu_98_p3 : sig_d);
assign p_0_fu_98_p3 = ((sel_tmp2_fu_92_p2[0:0] === 1'b1) ? sig_b : sel_tmp_fu_78_p3);
assign sel_tmp1_fu_86_p2 = (tmp_fu_60_p2 ^ 1'b1);
assign sel_tmp2_fu_92_p2 = (tmp_1_fu_66_p2 & sel_tmp1_fu_86_p2);
assign sel_tmp5_fu_112_p2 = (tmp7_fu_106_p2 | tmp_fu_60_p2);
assign sel_tmp_fu_78_p3 = ((tmp_fu_60_p2[0:0] === 1'b1) ? sig_a : sig_c);
assign tmp7_fu_106_p2 = (tmp_1_fu_66_p2 | tmp_2_fu_72_p2);
assign tmp_1_fu_66_p2 = ((select_r == ap_const_lv32_1) ? 1'b1 : 1'b0);
assign tmp_2_fu_72_p2 = ((select_r == ap_const_lv32_2) ? 1'b1 : 1'b0);
assign tmp_fu_60_p2 = ((select_r == ap_const_lv32_0) ? 1'b1 : 1'b0);
endmodule //mux41

4.RTL級(jí)仿真:

在菜單里Solution>RunC/RTL cosimulation,需要對(duì)Co-similation Dialog設(shè)置如下:

pIYBAF9uHo2AWassAABNWwyjRNk849.png

得到如下結(jié)果,我們會(huì)發(fā)現(xiàn)Verilog的Status是pass,證明C/RTL cosimulation成功:

o4YBAF9uHo-AOlHBAAAqw_j-jV8840.png

然后我們點(diǎn)開波形查看窗口,此時(shí)會(huì)自動(dòng)打開Vivado軟件,從圖中看到,mux41的功能正確:

o4YBAF9uHpGAHnyEAAGbqKThHn4259.png

5.IP封裝:
在菜單里Solution>Export TL,設(shè)置如下:

pIYBAF9uHpOAQC0GAAA3nBgp5Ew649.png

IP封裝后,會(huì)得到impl文件,其中就有我們所需要的三個(gè)子文件ip,verilog,vhdl

o4YBAF9uHpSATSpHAABfDtn6--4613.png

總結(jié):

事實(shí)上,在整個(gè)流程中,用戶先創(chuàng)建一個(gè)設(shè)計(jì) C、C++ 或 SystemC 源代碼,以及一個(gè)C的測(cè)試平臺(tái)。隨后需要用 GCC/G++或 Visual C++ 仿真器驗(yàn)證設(shè)計(jì)的系統(tǒng)行為。一旦行為設(shè)計(jì)運(yùn)行良好,對(duì)應(yīng)的測(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。隨后使用 IP 集成器將 IP 集成到設(shè)計(jì)中,或在系統(tǒng)生成器 (System Generator) 中運(yùn)行 IP。

本文轉(zhuǎn)載自:

聲明:本文內(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)投訴
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    816

    瀏覽量

    127951
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    797

    瀏覽量

    65853
  • HLS
    HLS
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    23912
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    探索Vivado HLS設(shè)計(jì)流,Vivado HLS高層次綜合設(shè)計(jì)

    文件來與所得結(jié)果進(jìn)行對(duì)比驗(yàn)證。 3.實(shí)驗(yàn)步驟 3.1.在Vivado HLS GUI界面中創(chuàng)建項(xiàng)目 3.1.1.啟動(dòng)Vivado HLS 2
    的頭像 發(fā)表于 12-21 16:27 ?3445次閱讀

    請(qǐng)問如何只下載Vivado HLS 2015.2

    嗨伙計(jì),在我的PC Vivado設(shè)計(jì)套件2015.2和SDK 2015.2工作,但只有vivado HLS 2015.2沒有打開,這就是為什么我想重新安裝Vivado
    發(fā)表于 12-27 10:57

    Vivado HLS設(shè)計(jì)流的相關(guān)資料分享

    1.實(shí)驗(yàn)?zāi)康耐ㄟ^例程探索Vivado HLS設(shè)計(jì)流用圖形用戶界面和TCL腳本兩種方式創(chuàng)建Vivado HLS項(xiàng)目用各種HLS指令綜合接口優(yōu)化
    發(fā)表于 11-11 07:09

    嵌入式硬件開發(fā)學(xué)習(xí)教程——Xilinx Vivado HLS案例 (流程說明)

    工程vivado_hlsip_packagexxx.zipIP核projectsolution仿真方案srcHLS工程源碼test_benchHLS工程仿真程序或測(cè)試文件vivado_hls.appHLS工程文件HLS
    發(fā)表于 11-11 09:38

    嵌入式HLS 案例開發(fā)步驟分享——基于Zynq-7010/20工業(yè)開發(fā)板(4)

    目 錄5 sobel_demo 案例 395.1 HLS 工程說明 405.2 編譯與仿真 435.3 IP 核測(cè)試 45前 言本文主要介紹 HLS 案例的使用說明,適用開發(fā)環(huán)境: Windows
    發(fā)表于 01-01 23:46

    嵌入式HLS 案例開發(fā)步驟分享——基于Zynq-7010/20工業(yè)開發(fā)板(1)

    vivado_hls.appHLS 工程文件HLS 詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx 官方參考文檔\”目錄下的如下
    發(fā)表于 01-01 23:52

    嵌入式HLS 案例開發(fā)步驟分享——基于Zynq-7010/20工業(yè)開發(fā)板(1)

    仿真程序或測(cè)試文件 vivado_hls.appHLS 工程文件 HLS 詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx 官方參
    發(fā)表于 08-24 14:40

    嵌入式HLS 案例開發(fā)步驟分享——基于Zynq-7010/20工業(yè)開發(fā)板(4)

    目 錄5 sobel_demo 案例 395.1 HLS 工程說明 405.2 編譯與仿真 435.3 IP 核測(cè)試 45 前 言本文主要介紹 HLS 案例的使用說明,適用開發(fā)環(huán)境: Windows
    發(fā)表于 08-24 14:54

    Hackaday讀者有話說:Vivado HLS使用經(jīng)驗(yàn)分享

    是來自新西蘭的Mike Field,他是一個(gè)硬件Hacker,還建立了自己的網(wǎng)站( ),他詳細(xì)總結(jié)了Vivado HLS的使用步驟,他認(rèn)為這個(gè)很有趣,
    發(fā)表于 02-08 20:01 ?612次閱讀
    Hackaday讀者有話說:<b class='flag-5'>Vivado</b> <b class='flag-5'>HLS</b>使用經(jīng)驗(yàn)分享

    Vivado-HLS實(shí)現(xiàn)低latency 除法器

    1 Vivado HLS簡(jiǎn)介 2創(chuàng)建一個(gè)Vivado-HLS工程 2.1打開Vivado HLS GUI 2.2創(chuàng)建新工程 在 Welcom
    發(fā)表于 12-04 10:07 ?0次下載
    用<b class='flag-5'>Vivado-HLS</b>實(shí)現(xiàn)低latency 除法器

    基于Vivado HLS的計(jì)算機(jī)視覺開發(fā)

    OPENCV(Open Source Computer Vision)被廣泛的使用在計(jì)算機(jī)視覺開發(fā)上。使用Vivado HLS視頻庫(kù)在zynq-7000全可編程soc上加速OPENCV 應(yīng)用的
    發(fā)表于 11-10 10:47 ?1408次閱讀

    如何創(chuàng)建Vivado HLS項(xiàng)目

    了解如何使用GUI界面創(chuàng)建Vivado HLS項(xiàng)目,編譯和執(zhí)行C,C ++或SystemC算法,將C設(shè)計(jì)合成到RTL實(shí)現(xiàn),查看報(bào)告并了解輸出文件。
    的頭像 發(fā)表于 11-20 06:09 ?3816次閱讀

    如何使用Tcl命令語(yǔ)言讓Vivado HLS運(yùn)作

    了解如何使用Tcl命令語(yǔ)言以批處理模式運(yùn)行Vivado HLS并提高工作效率。 該視頻演示了如何從現(xiàn)有的Vivado HLS設(shè)計(jì)輕松創(chuàng)建新的Tcl批處理腳本。
    的頭像 發(fā)表于 11-20 06:06 ?3065次閱讀

    UltraFast Vivado HLS方法指南

    電子發(fā)燒友網(wǎng)站提供《UltraFast Vivado HLS方法指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:23 ?1次下載
    UltraFast <b class='flag-5'>Vivado</b> <b class='flag-5'>HLS</b>方法指南

    VIVADO HLS設(shè)計(jì)移植到CATAPULT HLS平臺(tái)

    電子發(fā)燒友網(wǎng)站提供《將VIVADO HLS設(shè)計(jì)移植到CATAPULT HLS平臺(tái).pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:12 ?2次下載
    將<b class='flag-5'>VIVADO</b> <b class='flag-5'>HLS</b>設(shè)計(jì)移植到CATAPULT <b class='flag-5'>HLS</b>平臺(tái)