版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VitisHLS工具在Standalone模式下调用XilinxVisionLibraryL1API例程本文作者陈雯,ToolsProductApplicationsEngineer,WTSChina.本文给想直接使用VitisHLS工具在Standalone模式下调用XilinxVisionLibraryL1API的小伙伴提供了一个非常容易上手的脚本文件。在论坛上遇到在高层次综合工具中调用视觉库遇到的大多数问题都和opencv库以及XilinxVision库的安装路径有关,如今VitisHLS2020.1之后的版本都不再提供OpenCV的预编译库,就更需要开发者们将各自工作环境中的库路径,环境变量都设置好。希望这篇博文能给大家调用VitisVisionLibrary提供向导,提升效率。VitisVision库VitisVision库是Xilinx官方将Opencv功能转换至易于在FPGA中部署的视觉加速库,可在Vitis环境中实施。其中VitisVision库的L1目录提供了在VitisHLS层级部署的应用实例设计。这个实例设计中C-sim的流程中需要调用OpenCV用于测试平台功能,因此需要现有的OpenCV安装。VitisVision库:/Xilinx/Vitis_Libraries/tree/master/vision为了适应各种用户环境,从2020.1版本开始,Xilinx不再提供带有Vivado/Vitis工具的OpenCV的预安装版本。尽管Vitis在综合布局布线Vision库的流程中不需要OpenCV,但是运行示例设计仿真是必需的。本文使用Vitis2020.2版本介绍了如何创建独立的VitisHLSTCL文件,用户只要在将该tcl脚本拷贝在VisionLirary的实例目录中,即可在命令行模式下跑完Vitis_HLSC仿真,综合,联合仿真以及导出IP等全部流程。Vision的官方文档中包含使用VitisHLSstandalone模式的教程,该信息位于以下位置:/Xilinx/Vitis_Libraries/blob/master/vision/docs/gettin...https://xilinx.github.io/Vitis_Libraries/vision/2020.1/index.html#要利用示例设计或在用户测试平台中引用OpenCV库,必须执行以下步骤:-安装OpenCV工具版本3.xOpenCV在Linux的安装和环境设置请参考附录A,在Windows环境下建议使用Mingw编译Opencv安装包。-设置环境变量以引用OpenCV安装路径-下载VitisVersionlibrary-创建TCL脚本并在VitisHLS命令行执行注意:2020.1VitisVision库已使用OpenCV库的3.3版进行了验证。比该版本更新的任何版本都可以使用,但是,版本4.x可能相对于3.x版本具有库功能更改,可能需要修改示例设计测试平台。因此,建议使用OpenCV3.x版运行示例设计。OpenCV库仅提供测试平台功能,不是必需的,并且不会以任何方式影响Vision内核的实现。环境设置Linux环境变量设置要求:source/settings64.shsource/setup.shexportDEVICE=/.xpfmexportOPENCV_INCLUDE=exportOPENCV_LIB=exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:Windows环境变量设置要求:示例如下所示,并且每个用户的设置会有所不同,具体取决于OpenCV和编译器工具的安装目录。注意:必须在用户的环境中正确设置LD_LIBRARY_PATH动态库的搜索路径环境变量和OpenCVPATH信息,此脚本和VitisVision示例设计才能正常工作。此外,OpenCV的包含库和二进制文件的路径必须包含在系统的环境变量中。否则,将导致仿真期间库包含错误。操作步骤要运行VitisHLStcl脚本,请执行以下操作:-将修改好的tcl脚本放在
/vision/L1/example/resize目录中-打开VitisHLS命令行外壳并cd
/vision/L1/example/resize目录-运行以下命令:vitis_hls-frun_hls_standalone.tclVitisHLSTCL脚本详细解释该AR提供了一个TCL脚本,用于在makefile流之外运行L1调整大小示例设计。该脚本基于Windows环境。该脚本基于以下环境设置:-OpenCV版本3.4.11Linux:setXF_PROJ_ROOT"/home/vicky/Xilinx/Vitis_Libraries-master/vision"setOPENCV_INCLUDE"/home/vicky/opencv/include"setOPENCV_LIB"/home/vicky/opencv/lib"Windows:-OpenCVincludedirectory:C:/Data/OpenCV/build_win64/install/include-OpenCVlibrarydirectory:C:/Data/OpenCV/build_win64/install/x64/mingw/lib-VitisVisionDirectory:C:/Data/Vitis_Libraries/Vitis_Libraries-master/vision/TCL脚本文件包含以下部分,本文将逐一介绍·代表OpenCV和项目环境的变量声明·项目创建命令·使用VitisVision库添加设计文件包括路径·使用OpenCV和VitisVision库添加Testbench文件包括路径·使用OpenCV链接器参考进行C仿真·VitisHLSIP综合·具有OpenCV链接器参考的RTL协同仿真·导出IP1.变量声明:变量声明部分的第一部分声明了一些变量,这些变量复制makefile流和该流生成的settings.tcl文件的环境变量。这些变量指向VitisVisionIncludes,OpenCV头文件和OpenCV预编译的库。这些位置可能会根据用户系统的安装路径而有所不同。设置XF_PROJ_ROOT“C:/Data/Vitis_Libraries/Vitis_Libraries-master/vision”#VitisVision库的包含目录设置OPENCV_INCLUDE“C:/Data/OpenCV/build_win64/install/include”#OpenCV头文件目录设置OPENCV_LIB“C:/Data/OpenCV/build_win64/install/x64/mingw/lib”#OpenCV编译的库目录下一个变量声明部分有助于创建VitisHLS项目,并有助于使脚本可移植:·设置PROJ_DIR“$XF_PROJ_ROOT/L1/examples/resize”·设置SOURCE_DIR“$PROJ_DIR/”·设置PROJ_NAME“hls_example”·设置PROJ_TOP“resize_accel”·设置SOLUTION_NAME“sol1”·设置SOLUTION_PART“xcvu11p-flgb2104-1-e”·设置SOLUTION_CLKP5最后,最后一部分声明变量,这些变量表示HLS引用和使用库所需的引用路径和标志。这里我们发现在一个易用性高的脚本中,使用变量而不是代码有助于理解如何使用这些选项。设置VISION_INC_FLAGS“-I$XF_PROJ_ROOT/L1/include-std=c++0x”#VitisVision包含路径和C++11设置设置OPENCV_INC_FLAGS“-I$OPENCV_INCLUDE”#OpenCV包含目录引用设置OPENCV_LIB_FLAGS“-L$OPENCV_LIB”#OpenCV库参考注意:在Windows中,库引用必须包含版本号。本示例使用OpenCV3.4.11安装。精确的包含格式将取决于用户的安装,并且可能与下面列出的格式不同。设置OPENCV_LIB_REF“-lopencv_imgcodecs3411-lopencv_imgproc3411-lopencv_core3411-lopencv_highgui3411-lopencv_flann3411-lopencv_features2d3411”在Linuxinclude语句不使用版本号,并给出如下:设置OPENCV_LIB_REF“-lopencv_imgcodecs-lopencv_imgproc-lopencv_core-lopencv_highgui-lopencv_flann-lopencv_features2d”2.项目创建:项目创建部分非常简单,它会创建一个新的项目目录和项目文件:open_project-reset$PROJ_NAME设计文件包括:设计文件已添加到本节中的设计中。该命令:-引用单个HLS内核文件:add_files“${PROJ_DIR}/xf_resize_accel.cpp”-引用Vision库和特定于项目的包含合成目录:-cflags“${VISION_INC_FLAGS}-I${PROJ_DIR}/build-引用了用于C仿真的Vision库和特定于项目的包含目录:-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文件将在本节中添加到设计中。命令:-引用Testbench文件:add_files-tb“${PROJ_DIR}/xf_resize_tb.cpp”-引用Vision库和特定于项目的包含目录:-cflags“${OPENCV_INC_FLAGS}${VISION_INC_FLAGS}-I${PROJ_DIR}/build”-引用Vision库和特定于项目的C仿真目录:-csimflags“${OPENCV_INC_FLAGS}${VISION_INC_FLAGS}-I${PROJ_DIR}/build”请注意,在测试台标志和设计文件标志中添加了${VISION_INC_FLAGS}变量。此设置引用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.项目设置:现在已经添加了所有需要的C源文件,执行项目创建的最后一步。这些命令设置HLSIP的顶层函数,并创建一个所需的项目solution。set_top$PROJ_TOP#设置HLSIP的顶级文件open_solution-reset$SOLUTION_NAME#创建项目解决方案set_part$SOLUTION_PART#设置解决方案部分create_clock-period$SOLUTION_CLKP#设置项目目标时钟周期4.c-sim:本部分通过将HLSIP和Testbench设计发送给编译器进行编译和执行,来执行HLS流的C仿真阶段。此命令用于设置编译器链接器标志和testbench文件,以及:-引用OpenCV包含和预编译的库目录:-ldflags“-L${OPENCV_LIB}${OPENCV_LIB_REF}”-包括用于验证测试台的图像作为主要功能的参数:-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综合:本部分执行VitisHLSC到RTL合成阶段。此阶段不需要标志或选项。csynth_design6.C/RTL协同仿真:本部分在合成后执行VitisHLSIP的RTL协同仿真。HLS会自动根据Ctestbench生成RTLtestbench进行协同仿真,以下指令用于设置编译器链接器标志和testbench文件,以及:-引用OpenCV包含和预编译的库目录:-ldflags“-L${OPENCV_LIB}${OPENCV_LIB_REF}”-包括用于验证测试平台的图像:-argv“${XF_PROJ_ROOT}/data/128x128.png”完整的命令如下所示:cosim_design-ldflags“-L${OPENCV_LIB}${OPENCV_LIB_REF}”-argv“${XF_PROJ_ROOT}/data/128x128.png”7.导出IP:VitisHLS流程的最后阶段是设计的输出。本示例导出RTL的设计并运行VivadoSynthesis,以获取准确的资源利用率和估计的时序结果。export_design-flowsyn-rtlverilog注意:导出RTL的设计并运行VivadoSynthesis进行布局布线的过程需要在Vivado工具中先载入有效的license附件为在Ubuntu18.04版本在2020.2上运行成功的tclshell,大家可以下载后稍作修改,根据本文流程在自己的环境中进行实验,有问题欢迎在本帖下方留言。
附录A-扫码下载并安装OpenCVonLinux1.打开一个终端,先不要执行任何有关Vivado或Vitis的setup指令,否则CMak
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高处作业证理论考试练习题及答案
- 销售培训 -客户需求挖掘的7大避坑
- 报告制作技巧课件
- 办公技能培训课件
- 2026年安全带使用模拟试题(含答案)
- 综合应用能力事业单位考试(中小学教师类D类)模拟试卷带答案
- 2026年钣金数冲模拟试题(含答案)
- 2026年cma模拟试卷及注意事项带答案
- 2026年大医精诚感染模拟试题(含答案)
- 嵌入式系统工程师自动化(工学)2026年模拟试卷带答案
- 2026年审计助理考试模拟题目及答案详解
- 2026河南省直第三人民医院司法鉴定中心招聘第二批工作人员考试参考题库及答案解析
- 2026年地铁安检员《安全基础知识》练习题及答案
- 立德树人融入课堂教学设计
- 安全知识培训及针刺伤课件
- 2026福建省福州肺科(胸科)医院(福建省福州结核病防治院)人员控制数自主招聘工作人员25人笔试参考题库及答案解析
- 2026 人工智能训练师(三级高级工)专业知识考试题库(新版难点题)
- 【新教材】人教版(2024)七年级上册英语Unit1-Unit7单词表
- 2026年4月自考《00160审计学》真题及答案
- IPC-6921-2025 中文版 有机封装基板的要求及可接受性(倒装芯片 - CSP 配套基板基准)
- 2026年九龙坡区社区工作者笔试试题(含答案)
评论
0/150
提交评论