色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HLS Stream案例分析

電子工程師 ? 來源:lq ? 2019-04-24 17:36 ? 次閱讀

思考空間

對于如圖11所示的頂層函數,HLS會將其接口綜合成何種形式?

圖11形參為stream的頂層函數

對于頂層函數,如果形參類型為hls::stream,HLS會將其綜合為ap_fifo類型的接口。

這里,我們看一個HLS Stream應用案例。頂層函數top由兩個底層函數read_data和handle_data構成,其中read_data主要功能是從輸入stream上獲取特定數據;handle_data的主要功能則是對獲取的數據進行處理。這里主要是為了說明stream的使用方法,所以,請大家把關注點放在stream的定義、函數之間的參數傳遞以及相應的directive的設置等。實際上,read_data和handle_data是可以合并的。

圖1 頭文件

圖2 read_data源代碼

圖3 handle_data源代碼

圖4 top源代碼

從圖2和圖3的代碼中可以看到,從流中讀取數據可以用>>或read(),向流中寫入數據可以用 << 或write()。同時,在使用 << 或 >> 時,并不需要添加#include

首先,執行C功能仿真,仿真結束時會出現如圖5所示的warning。

圖5 C Simulation時出現的warning

第二步,不設置任何directive,直接執行C綜合,此時會顯示如下錯誤信息。該信息表明,在非dataflow區域使用默認的FIFO規模(這個FIFO是因為stream而生成的,默認深度為1),會導致Deadlock。根據提示我們修改這個FIFO的深度。之后,重新執行C綜合和C/RTL Cosimulation,均可通過。

圖6 修改FIFO深度

第三步,進一步優化,可以看到這兩個底層函數是可以應用dataflow以降低latency。具體設置如圖7所示。執行C綜合,綜合結束時會顯示如圖8所示信息。[HLS214-111]顯示靜態變量和非靜態Stream不能在同一個DATAFLOW區域中使用,故需要對top.cpp第4行進行修改,只需添加static關鍵字,如圖9所示。再次綜合,該warning即被消除。

圖7 設置DATAFLOW

圖8 C綜合后顯示的warning

圖9 添加static關鍵字

如果只設置DATAFLOW,而不設置FIFO深度,C綜合是可以通過的,但執行C/RTL Cosimulation時,會顯示如圖10所示錯誤信息。可以判斷與FIFO的讀寫相關。這通常是因為出現了FIFO寫滿或者FIFO讀空,從而造成DEADLOCK。從這個角度而言,先設置一個solution,不用進行任何directive的設置,執行C綜合,盡可能地修復所有的warning。這個階段給出的warning及修復建議更具體、更具有針對性。

圖10 C/RTLCosimulation錯誤信息

第四步,進一步優化,由于數組key深度只有8,可以完全打散,用register代替,具體設置如圖11所示。

圖11 Array partition

至此,我們創建了3個Solution:

Solution1:設置FIFO深度

Solution2:設置FIFO深度 + 設置DATAFLOW

Solution3:設置FIFO深度 + 設置DATAFLOW + ARRAY PARTITION

3個Solution綜合后的性能對比如圖12所示。

圖12 性能對比

從這個案例我們可以得出如下結論:

-流用于內部函數間的參數傳遞時,會被綜合為深度為1的FIFO

-當流數據被綜合為FIFO時,由于默認深度為1,可能會在C/RTLCosimulation時出現DEADLOCK

-先創建一個沒有任何directive的Solution執行C綜合,盡可能地解決此時出現的warning或者錯誤,這也是UFDM所倡導的設計思想。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4332

    瀏覽量

    62653
  • 代碼
    +關注

    關注

    30

    文章

    4790

    瀏覽量

    68649
  • HLS
    HLS
    +關注

    關注

    1

    文章

    129

    瀏覽量

    24126

原文標題:一個HLS Stream應用案例

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Stream模塊的基礎用法和進階用法

    在 Rust 語言中,Tokio 是一個非常流行的異步編程框架。它提供了一系列的模塊,其中最常用的就是 Stream 模塊。Stream 模塊允許我們以異步的方式處理數據流,這在很多情況下非常
    的頭像 發表于 09-19 15:33 ?1206次閱讀

    Stream API原理介紹

    Stream API 是 Java 8 中最重要的新特性之一,它是處理集合和數組的一種新方式。它提供了一種簡單、靈活和可讀的方式來處理集合和數組中的元素,從而使代碼更加簡潔、高效和易于維護。 1.
    的頭像 發表于 09-30 15:31 ?718次閱讀

    新手求助,HLS實現opencv算法加速的IP在vivado的使用

    是video in to AXI4-Stream,接到DMA,而HLS生成的算法IP是AXI4-Stream in and out。我想把AXI-Stream信號輸出接到
    發表于 01-16 09:22

    可以在EDK中使用Axi4Stream接口/總線嗎?

    你好,我正在EDK中使用axi4stream。有人可以幫助我如何使用通過Vivado高級綜合(HLS)生成的ap_fifo / axi4stream接口可以在EDK中使用嗎?我正在使用Export
    發表于 02-28 13:47

    Vivado HLS直通AXI Stream IP-Core如何分配

    嗨,我已經創建了一個帶有IP-Core的硬件設計。但它不能正常工作。對于我提到的調試問題,我創建了一個IP-Core,然后通過AXI Stream。所以我可以檢查我的IP-Core是否不起作用
    發表于 04-14 09:25

    【正點原子FPGA連載】第六章OV5640攝像頭灰度顯示實驗-領航者ZYNQ之HLS 開發指南

    對一些常用的硬件結構或功能使用C/C++進行建模,并且能夠綜合成RTL。在Vivado HLS中提供的C庫有下面幾種類型:1、任意精度數據類型庫2、HLS Stream庫3、HLS數學
    發表于 10-13 16:58

    【正點原子FPGA連載】第十一章基于OV5640的自適應二值化實驗-領航者ZYNQ之HLS 開發指南

    rows,6 int cols7 ){89 #pragma HLS INTERFACE axis port=INPUT_STREAM10 #pragma HLS INTERFACE axis
    發表于 10-14 16:04

    Vivado HLS實現OpenCV圖像處理的設計流程與分析

    ,需要將輸入和輸出HLS可綜合的視頻設計接口,修改為Video stream接口,也就是采用HLS提供的video接口可綜合函數,實現AXI4 video stream到VivadoH
    發表于 07-08 08:30

    HLS系列–High Level Synthesis(HLS)的端口綜合2

    在上一章HLS的端口綜合里有提及,HLS綜合后的端口分為2中類型:BlockLevel和Port Level Interface。其中Port level是我們需要重點關注的,它又可以細分為4中類型
    發表于 02-08 03:27 ?578次閱讀
    <b class='flag-5'>HLS</b>系列–High Level Synthesis(<b class='flag-5'>HLS</b>)的端口綜合2

    HLS系列–High Level Synthesis(HLS)的端口綜合3

    在上一章HLS提到了axi lite端口的綜合方式,以及directive的一些語法規則。這一章里面,介紹一下axi-stream和full axi端口的綜合實現問題。 1. AXI-Stream
    發表于 02-08 03:31 ?551次閱讀
    <b class='flag-5'>HLS</b>系列–High Level Synthesis(<b class='flag-5'>HLS</b>)的端口綜合3

    HLS系列–High Level Synthesis(HLS)的端口綜合4

    在上一章HLS提到了axi lite端口的綜合方式,以及directive的一些語法規則。這一章里面,介紹一下axi-stream和full axi端口的綜合實現問題。 AXI FULL端口的實現
    發表于 02-08 03:35 ?973次閱讀
    <b class='flag-5'>HLS</b>系列–High Level Synthesis(<b class='flag-5'>HLS</b>)的端口綜合4

    HLS系列–High Level Synthesis(HLS)的端口綜合5

    在之前的3章里,著重講解了HLS對AXI端口(包括axi-lite,axi-stream和full axi端口)的綜合實現問題,下面讓我們來介紹一下其它的端口類型是如何實現的。 在開始之前,先來
    發表于 02-08 03:39 ?587次閱讀
    <b class='flag-5'>HLS</b>系列–High Level Synthesis(<b class='flag-5'>HLS</b>)的端口綜合5

    Vivado HLS(Zynq TRD)源碼分析

    源碼是官方的2014.4 TRD工程里的,整個工程是基于zc702板子的,但手里只有塊小zybo >_ 里面的硬件設計很有參考價值,最近想用FPGA加速surf算法,先在這分析下TRD工程里
    發表于 02-08 10:12 ?579次閱讀

    Vitis HLS相關問答詳解

    需要手工在 C++ 代碼里明確指定可并行執行的任務(用 task,添加頭文件 hls_task.h),同時可并行執行的 task 接口(對應 C++ 函數的形參)必須是 streamstream_of_blocks。
    的頭像 發表于 08-11 11:23 ?754次閱讀

    Java的Stream的常用知識

    什么是Stream 生產線 Stream就像處理生產流水線一樣去工作,傳送帶就是Stream的管道,每個工廠關注直接的生產,將上游產品加工成下游需要的產品。為什么Stream比傳統的處
    的頭像 發表于 10-11 15:45 ?467次閱讀
    Java的<b class='flag-5'>Stream</b>的常用知識
    主站蜘蛛池模板: 扒开老师大腿猛进AAA片| 一级毛片视频免费| 夜夜躁婷婷AV蜜桃视频| 第一次处破女高清电影| 免费精品国产日韩热久久| 一个人的视频在线观看免费观看 | 日本又黄又裸一级大黄裸片| 99久久夜色精品国产亚洲AV卜| 久久成人永久免费播放| 亚洲色噜噜狠狠站欲八| 精品人妻伦一二三区久久AAA片| 亚洲国产AV精品卡一卡二| 国产日韩成人内射视频| 午夜国产免费视频亚洲| 国产全肉乱妇杂乱视频| 无限资源日本2019版免费| 国产精品夜夜春夜夜爽久久小| 色欲午夜无码久久久久久| 国产 精品 亚洲 欧美 高清| 台湾佬休闲中性娱乐网| 国产精品伦理一二三区伦理| 亚洲AV久久久噜噜噜久久| 国内精品久久久久影院老司| 亚洲高清在线天堂精品| 久久99热成人精品国产| 18亚洲男同gay1069| 男人和女人一起愁愁愁很痛| youjizz护士| 亚洲 日韩 在线 国产 精品| 国内精品乱码卡一卡2卡三卡| 艳鉧动漫1~6全集观看在线| 毛茸茸womansex| xxx成熟xxx| 武汉美女洗澡| 久久妇女高潮几次MBA| 99re久久这里只有精品| 日本艳妓BBW高潮一19| 国产香蕉尹人视频在线| 中文国产乱码在线人妻一区二区| 内射一区二区精品视频在线观看 | 国产亚洲精品网站在线视频|