電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>可編程邏輯>Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程

Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程

2021-01-27 | pdf | 170.43KB | 次下載 | 2積分

資料介紹

本文作者陳雯,Tools Product Applications Engineer, WTS China.

本文給想直接使用Vitis HLS 工具在 Standalone 模式下調(diào)用 Xilinx Vision Library L1 API 的小伙伴提供了一個(gè)非常容易上手的腳本文件。

在論壇上遇到在高層次綜合工具中調(diào)用視覺庫(kù)遇到的大多數(shù)問(wèn)題都和 opencv 庫(kù)以及Xilinx Vision 庫(kù)的安裝路徑有關(guān),如今 Vitis HLS 2020.1 之后的版本都不再提供OpenCV 的預(yù)編譯庫(kù),就更需要開發(fā)者們將各自工作環(huán)境中的庫(kù)路徑,環(huán)境變量都設(shè)置好。希望這篇博文能給大家調(diào)用 Vitis Vision Library 提供向?qū)?,提升效率?

Vitis Vision庫(kù)

Vitis Vision 庫(kù)是 Xilinx 官方將 Opencv 功能轉(zhuǎn)換至易于在 FPGA 中部署的視覺加速庫(kù),可在Vitis 環(huán)境中實(shí)施。其中 Vitis Vision 庫(kù)的 L1 目錄提供了在 Vitis HLS 層級(jí)部署的應(yīng)用實(shí)例設(shè)計(jì)。這個(gè)實(shí)例設(shè)計(jì)中 C-sim 的流程中需要調(diào)用 OpenCV 用于測(cè)試平臺(tái)功能,因此需要現(xiàn)有的OpenCV 安裝。

Vitis Vision庫(kù):

https://github.com/Xilinx/Vitis_Libraries/tree/master/vision

為了適應(yīng)各種用戶環(huán)境,從2020.1版本開始,Xilinx 不再提供帶有 Vivado / Vitis 工具的OpenCV 的預(yù)安裝版本。盡管 Vitis 在綜合布局布線Vision庫(kù)的流程中不需要 OpenCV,但是運(yùn)行示例設(shè)計(jì)仿真是必需的。

本文使用 Vitis 2020.2 版本介紹了如何創(chuàng)建獨(dú)立的 Vitis HLS TCL 文件,用戶只要在將該 tcl腳本拷貝在 Vision Lirary 的實(shí)例目錄中,即可在命令行模式下跑完 Vitis_HLS C仿真,綜合,聯(lián)合仿真以及導(dǎo)出 IP 等全部流程。

Vision 的官方文檔中包含使用 Vitis HLS standalone 模式的教程,該信息位于以下位置:

https://github.com/Xilinx/Vitis_Libraries/blob/master/vision/docs/gettin...

https://xilinx.github.io/Vitis_Libraries/vision/2020.1/index.html#

要利用示例設(shè)計(jì)或在用戶測(cè)試平臺(tái)中引用 OpenCV 庫(kù),必須執(zhí)行以下步驟:

-安裝 OpenCV 工具版本3.x

OpenCV 在Linux 的安裝和環(huán)境設(shè)置請(qǐng)參考附錄A, 在 Windows 環(huán)境下建議使用 Mingw 編譯Opencv 安裝包。

-設(shè)置環(huán)境變量以引用 OpenCV 安裝路徑

-下載 Vitis Version library

-創(chuàng)建 TCL 腳本并在 Vitis HLS 命令行執(zhí)行

注意:2020.1 Vitis Vision 庫(kù)已使用 OpenCV 庫(kù)的3.3版進(jìn)行了驗(yàn)證。比該版本更新的任何版本都可以使用,但是,版本4.x可能相對(duì)于3.x版本具有庫(kù)功能更改,可能需要修改示例設(shè)計(jì)測(cè)試平臺(tái)。因此,建議使用 OpenCV 3.x 版運(yùn)行示例設(shè)計(jì)。OpenCV 庫(kù)僅提供測(cè)試平臺(tái)功能,不是必需的,并且不會(huì)以任何方式影響 Vision 內(nèi)核的實(shí)現(xiàn)。

環(huán)境設(shè)置

Linux 環(huán)境變量設(shè)置要求:

source /settings64.sh source /setup.sh export DEVICE=/.xpfm

export OPENCV_INCLUDE=

export OPENCV_LIB=

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:

Windows 環(huán)境變量設(shè)置要求:

示例如下所示,并且每個(gè)用戶的設(shè)置會(huì)有所不同,具體取決于 OpenCV 和編譯器工具的安裝目錄。

注意:必須在用戶的環(huán)境中正確設(shè)置 LD_LIBRARY_PATH 動(dòng)態(tài)庫(kù)的搜索路徑環(huán)境變量和OpenCV PATH 信息,此腳本和 Vitis Vision 示例設(shè)計(jì)才能正常工作。此外,OpenCV 的包含庫(kù)和二進(jìn)制文件的路徑必須包含在系統(tǒng)的環(huán)境變量中。否則,將導(dǎo)致仿真期間庫(kù)包含錯(cuò)誤。

操作步驟

要運(yùn)行 Vitis HLS tcl 腳本,請(qǐng)執(zhí)行以下操作:

-將修改好的 tcl 腳本放在
/ vision / L1 / example / resize 目錄中

-打開 Vitis HLS 命令行外殼并 cd
/ vision / L1 / example / resize 目錄

-運(yùn)行以下命令:vitis_hls -f run_hls_standalone.tcl

Vitis HLS TCL腳本詳細(xì)解釋

該AR提供了一個(gè) TCL 腳本,用于在 makefile 流之外運(yùn)行 L1 調(diào)整大小示例設(shè)計(jì)。該腳本基于Windows 環(huán)境。該腳本基于以下環(huán)境設(shè)置:

-OpenCV 版本3.4.11

Linux:

set XF_PROJ_ROOT"/home/vicky/Xilinx/Vitis_Libraries-master/vision"

set OPENCV_INCLUDE"/home/vicky/opencv/include"

set OPENCV_LIB"/home/vicky/opencv/lib"

Windows:

- OpenCV include directory :C:/Data/OpenCV/build_win64/install/include

- OpenCV library directory :C:/Data/OpenCV/build_win64/install/x64/mingw/lib

- Vitis Vision Directory :C:/Data/Vitis_Libraries/Vitis_Libraries-master/vision/

TCL腳本文件包含以下部分,本文將逐一介紹

· 代表 OpenCV 和項(xiàng)目環(huán)境的變量聲明

· 項(xiàng)目創(chuàng)建命令

· 使用 Vitis Vision 庫(kù)添加設(shè)計(jì)文件包括路徑

· 使用 OpenCV 和 VitisVision 庫(kù)添加 Testbench 文件包括路徑

· 使用 OpenCV 鏈接器參考進(jìn)行 C 仿真

· Vitis HLS IP 綜合

· 具有 OpenCV 鏈接器參考的 RTL 協(xié)同仿真

· 導(dǎo)出IP

1. 變量聲明:

變量聲明部分的第一部分聲明了一些變量,這些變量復(fù)制makefile流和該流生成的settings.tcl文件的環(huán)境變量。這些變量指向 Vitis Vision Includes,OpenCV 頭文件和 OpenCV預(yù)編譯的庫(kù)。這些位置可能會(huì)根據(jù)用戶系統(tǒng)的安裝路徑而有所不同。

設(shè)置 XF_PROJ_ROOT“ C:/ Data / Vitis_Libraries / Vitis_Libraries-master / vision” #Vitis Vision庫(kù)的包含目錄

設(shè)置 OPENCV_INCLUDE“ C:/ Data / OpenCV / build_win64 / install /include” #OpenCV頭文件目錄

設(shè)置 OPENCV_LIB“ C:/ Data / OpenCV / build_win64 / install / x64 /mingw / lib” #OpenCV 編譯的庫(kù)目錄

下一個(gè)變量聲明部分有助于創(chuàng)建 Vitis HLS 項(xiàng)目,并有助于使腳本可移植:

· 設(shè)置 PROJ_DIR“ $ XF_PROJ_ROOT /L1 / examples / resize”

· 設(shè)置 SOURCE_DIR“ $ PROJ_DIR /”

· 設(shè)置 PROJ_NAME“ hls_example”

· 設(shè)置 PROJ_TOP“ resize_accel”

· 設(shè)置 SOLUTION_NAME“ sol1”

· 設(shè)置 SOLUTION_PART“xcvu11p-flgb2104-1-e”

· 設(shè)置 SOLUTION_CLKP 5

最后,最后一部分聲明變量,這些變量表示 HLS 引用和使用庫(kù)所需的引用路徑和標(biāo)志。這里我們發(fā)現(xiàn)在一個(gè)易用性高的腳本中,使用變量而不是代碼有助于理解如何使用這些選項(xiàng)。

設(shè)置 VISION_INC_FLAGS“ -I $XF_PROJ_ROOT / L1 / include -std = c ++ 0x”#Vitis Vision 包含路徑和 C ++ 11 設(shè)置

設(shè)置 OPENCV_INC_FLAGS“ -I $OPENCV_INCLUDE”#OpenCV 包含目錄引用

設(shè)置 OPENCV_LIB_FLAGS“ -L $OPENCV_LIB”#OpenCV 庫(kù)參考

注意:

在 Windows 中,庫(kù)引用必須包含版本號(hào)。本示例使用 OpenCV 3.4.11安裝。精確的包含格式將取決于用戶的安裝,并且可能與下面列出的格式不同。

設(shè)置 OPENCV_LIB_REF“ -lopencv_imgcodecs3411-lopencv_imgproc3411 -lopencv_core3411 -lopencv_highgui3411 -lopencv_flann3411-lopencv_features2d3411”

在 Linux include 語(yǔ)句不使用版本號(hào),并給出如下:

設(shè)置 OPENCV_LIB_REF“-lopencv_imgcodecs -lopencv_imgproc -lopencv_core -lopencv_highgui -lopencv_flann-lopencv_features2d”

2. 項(xiàng)目創(chuàng)建:

項(xiàng)目創(chuàng)建部分非常簡(jiǎn)單,它會(huì)創(chuàng)建一個(gè)新的項(xiàng)目目錄和項(xiàng)目文件:

open_project -reset$PROJ_NAME

設(shè)計(jì)文件包括:

設(shè)計(jì)文件已添加到本節(jié)中的設(shè)計(jì)中。該命令:

-引用單個(gè)HLS內(nèi)核文件:add_files“ $ {PROJ_DIR} /xf_resize_accel.cpp”

-引用 Vision 庫(kù)和特定于項(xiàng)目的包含合成目錄:-cflags“ $ {VISION_INC_FLAGS} -I $ {PROJ_DIR} /build

-引用了用于 C 仿真的Vision庫(kù)和特定于項(xiàng)目的包含目錄:-csimflags“ $ {VISION_INC_FLAGS} -I $ {PROJ_DIR}/ build”

完整的命令如下所示:

add_files“ $ {PROJ_DIR}/xf_resize_accel.cpp” -cflags“ $ {VISION_INC_FLAGS} -I $ {PROJ_DIR} / build”-csimflags“ $ {VISION_INC_FLAGS} -I $ {PROJ_DIR} / build”

Testbench 文件包括:

testbench 文件將在本節(jié)中添加到設(shè)計(jì)中。命令:

-引用 Test bench 文件:add_files -tb“ $ {PROJ_DIR} /xf_resize_tb.cpp”

-引用 Vision 庫(kù)和特定于項(xiàng)目的包含目錄:-cflags“ $ {OPENCV_INC_FLAGS} $ {VISION_INC_FLAGS} -I $ {PROJ_DIR}/ build”

-引用 Vision 庫(kù)和特定于項(xiàng)目的 C 仿真目錄:-csimflags“ $ {OPENCV_INC_FLAGS} $ {VISION_INC_FLAGS} -I $ {PROJ_DIR} /build”

請(qǐng)注意,在測(cè)試臺(tái)標(biāo)志和設(shè)計(jì)文件標(biāo)志中添加了$ {VISION_INC_FLAGS}變量。此設(shè)置引用OpenCV 包含文件。

完整的命令如下所示:

add_files -tb“ $ {PROJ_DIR}/xf_resize_tb.cpp” -cflags“ $ {OPENCV_INC_FLAGS} $ {VISION_INC_FLAGS} -I ${PROJ_DIR} / build” -csimflags“ $ {OPENCV_INC_FLAGS} $ {PROSION_IN /建立”

3. 項(xiàng)目設(shè)置:

現(xiàn)在已經(jīng)添加了所有需要的 C 源文件,執(zhí)行項(xiàng)目創(chuàng)建的最后一步。這些命令設(shè)置 HLS IP 的頂層函數(shù),并創(chuàng)建一個(gè)所需的項(xiàng)目solution。

set_top $ PROJ_TOP#設(shè)置HLS IP的頂級(jí)文件

open_solution -reset $SOLUTION_NAME#創(chuàng)建項(xiàng)目解決方案

set_part $ SOLUTION_PART#設(shè)置解決方案部分

create_clock -period $SOLUTION_CLKP#設(shè)置項(xiàng)目目標(biāo)時(shí)鐘周期

4. c-sim:

本部分通過(guò)將 HLS IP 和 Testbench 設(shè)計(jì)發(fā)送給編譯器進(jìn)行編譯和執(zhí)行,來(lái)執(zhí)行 HLS 流的 C仿真階段。此命令用于設(shè)置編譯器鏈接器標(biāo)志和 testbench 文件,以及:

-引用 OpenCV包含和預(yù)編譯的庫(kù)目錄:-ldflags“ -L $ {OPENCV_LIB} $ {OPENCV_LIB_REF}”

-包括用于驗(yàn)證測(cè)試臺(tái)的圖像作為主要功能的參數(shù):-argv“ $ {XF_PROJ_ROOT} /data/128x128.png”

完整的命令如下所示:

csim_design -ldflags“ -L ${OPENCV_LIB} $ {OPENCV_LIB_REF}” -argv“ $ {XF_PROJ_ROOT} /data/128x128.png”

5. C到RTL綜合:

本部分執(zhí)行 Vitis HLS C 到 RTL 合成階段。此階段不需要標(biāo)志或選項(xiàng)。

csynth_design

6. C/RTL協(xié)同仿真:

本部分在合成后執(zhí)行 Vitis HLS IP的 RTL 協(xié)同仿真。HLS 會(huì)自動(dòng)根據(jù) C test bench 生成RTLtestbench 進(jìn)行協(xié)同仿真,以下指令用于設(shè)置編譯器鏈接器標(biāo)志和 testbench 文件,以及:

-引用 OpenCV包含和預(yù)編譯的庫(kù)目錄:-ldflags“ -L $ {OPENCV_LIB} $ {OPENCV_LIB_REF}”

-包括用于驗(yàn)證測(cè)試平臺(tái)的圖像:-argv“ $ {XF_PROJ_ROOT} /data/128x128.png”

完整的命令如下所示:

cosim_design -ldflags“ -L ${OPENCV_LIB} $ {OPENCV_LIB_REF}” -argv“ $ {XF_PROJ_ROOT} /data/128x128.png”

7. 導(dǎo)出IP:

Vitis HLS 流程的最后階段是設(shè)計(jì)的輸出。本示例導(dǎo)出RTL的設(shè)計(jì)并運(yùn)行 Vivado Synthesis,以獲取準(zhǔn)確的資源利用率和估計(jì)的時(shí)序結(jié)果。

export_design -flow syn -rtlverilog

注意:導(dǎo)出 RTL 的設(shè)計(jì)并運(yùn)行 Vivado Synthesis 進(jìn)行布局布線的過(guò)程需要在 Vivado 工具中先載入有效的 license

附件為在 Ubuntu 18.04 版本在 2020.2 上運(yùn)行成功的 tcl shell, 大家可以下載后稍作修改,根據(jù)本文流程在自己的環(huán)境中進(jìn)行實(shí)驗(yàn),有問(wèn)題歡迎在本帖下方留言。

附錄A -掃碼下載并安裝OpenCVon Linux

1. 打開一個(gè)終端,先不要執(zhí)行任何有關(guān) Vivado 或 Vitis 的 set up 指令, 否則 CMake 會(huì)失敗.

2. 按照自己的意愿在 Home 創(chuàng)建一個(gè) home 目錄下的 opencv 目錄 –> for instance: cd ~/src_opencv

3. git clone --branch 3.4.11 https://github.com/opencv/opencv.git

creates sub-folder “opencv” with the source files –> ~/src_opencv/opencv

4. git clone --branch 3.4.11 https://github.com/opencv/opencv_contrib.git

creates sub-folder “opencv_contrib” with the sourcefiles –> ~/src_opencv/opencv_contrib

5. mkdirbuild -> this will create a sub-folder “build” ->~/src_opencv/build

6. cd build

7.跑以下指令去生成編譯 OpenCV library 的 makefile:

cmake -DCMAKE_BUILD_TYPE=Release-OPENCV_EXTRA_MODULES_PATH=~/src_opencv/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=~/opencv ~/src_opencv/opencv

8. From the “build” directory 輸入以下兩個(gè)指令

make -j7

make install

9. 編譯安裝完成后,你就會(huì)看到 Opencv 庫(kù)在以下路徑中 ~/opencv

本文轉(zhuǎn)載自:?XILINX開發(fā)者社區(qū)微信公眾號(hào)

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費(fèi)下載
  2. 0.00 MB  |  1491次下載  |  免費(fèi)
  3. 2單片機(jī)典型實(shí)例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實(shí)例詳細(xì)資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關(guān)電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費(fèi)
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
  14. 0.23 MB  |  4次下載  |  免費(fèi)
  15. 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
  16. 0.11 MB  |  4次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費(fèi)
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費(fèi)
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費(fèi)
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費(fèi)
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費(fèi)
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費(fèi)
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費(fèi)
  15. 8開關(guān)電源設(shè)計(jì)實(shí)例指南
  16. 未知  |  21539次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537793次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191183次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183277次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138039次下載  |  免費(fèi)