基于PYNQ-Z2复现yolov2

基于PYNQ-Z2复现Yolo_v2

参考资料:源项目工程
开发板配置

0 使用说明

0.1 简介

本文档主要分为三个部分:
[1] 搭建HLS工程生成Yolo_v2的IP。
[2] 在Vivado中使用生成好的IP进行block design,导出bit文件和tcl文件。
[3] 将相关文件导入至PYNQ-Z2板中,在Jupyter Notebook上进行编程实现。

0.2 所需硬件

 PYNQ-Z2开发板、USB数据线、网线
 SD卡、读卡器

0.3 所需软件

 Vivado 2018.3
 Vivado HLS 2018.3

1 实验一:生成Yolo_v2的IP

1.1 实验任务

使用Vivado HLS软件生成Yolo_v2的IP,供后续使用。

1.2 实验步骤

打开Vivado HLS工具,点击Create New Project创建一个新工程
基于PYNQ-Z2复现yolov2_第1张图片

输入工程名,这里以Yolo_demo为例
基于PYNQ-Z2复现yolov2_第2张图片

连续点击Next到下图所示的Solution Configuration界面
基于PYNQ-Z2复现yolov2_第3张图片

点击Part Selection中的 … ,进入如下界面,Package选择clg400,Speed grade选择-1,最终选择xc7z020clg400-1,点击ok,返回到上一界面,点击Finish完成初始化
基于PYNQ-Z2复现yolov2_第4张图片

将提供的hls文件夹下的labels文件夹拷贝到项目工程目录下,将hls文件夹下的src和tb文件夹下的文件也拷到相同的目录下,如下所示。
基于PYNQ-Z2复现yolov2_第5张图片

在Explorer界面右击Source,选择Add Files
基于PYNQ-Z2复现yolov2_第6张图片

返回到上一级目录,选择刚拷贝进来的cnn.cpp和cnn.h文件。
基于PYNQ-Z2复现yolov2_第7张图片

在Explorer界面右击Test Bench,选择Add Files,将除了cnn.cpp和cnn.h之外的文件添加进来,结果如下图所示。
基于PYNQ-Z2复现yolov2_第8张图片

在Explorer界面右击Test Bench,选择Add Folder,将labels文件夹添加进来,结果如下图所示。
基于PYNQ-Z2复现yolov2_第9张图片
点击Vivado HLS界面左上角的Project,选择Project Settings,进行顶层函数的设置。
基于PYNQ-Z2复现yolov2_第10张图片
点击左栏中的Synthesis,然后点击右栏中Top Function的Browse,选择cnn.cpp中的YOLO2_FPGA函数作为顶层函数,如下图所示,然后点击ok
基于PYNQ-Z2复现yolov2_第11张图片

点击Run C Simulation进行C仿真,对弹出的弹窗不进行勾选直接点击ok
基于PYNQ-Z2复现yolov2_第12张图片
C仿真结果如下所示
基于PYNQ-Z2复现yolov2_第13张图片
C仿真成功后下面进行C综合,点击Run C Synthesis,如下图所示
在这里插入图片描述
进行C综合后,点击Export RTL导出IP,硬件描述语言选择Verilog,之后点击OK
在这里插入图片描述
基于PYNQ-Z2复现yolov2_第14张图片
至此,Vivado HLS工具成功导出Yolo_v2的IP,IP的路径为.\Yolo_demo\Yolov_demo\solution1\impl\ip

2 实验二:在Vivado工具中完成Yolo_v2的Block Design

打开Vivado 2018.3工具,点击Create Project创建一个新项目
基于PYNQ-Z2复现yolov2_第15张图片
输入工程名,这里以Yolo_demo_vivado为例
基于PYNQ-Z2复现yolov2_第16张图片
点击Next,选择RTL Project,然后一路Next至Default Part界面,Package选择clg400,speed选择-1,然后选择xc7z020clg400-1,点击Next,最后点击Finish。如下图所示
基于PYNQ-Z2复现yolov2_第17张图片
点击PROJECT MANAGER→Settings来进行IP核的添加
基于PYNQ-Z2复现yolov2_第18张图片
点击Project Settings→IP→Repository,点击IP Repositories下的+号
基于PYNQ-Z2复现yolov2_第19张图片
选择HLS生成的IP的路径,实验一中已提及,结果如下,选择ok
基于PYNQ-Z2复现yolov2_第20张图片
点击IP INTEGRATOR→Create Block Design,创建一个图形化设计,设计名称使用默认即可
基于PYNQ-Z2复现yolov2_第21张图片
将提供文档中vivado文件夹下的yolov2.tcl文件拷贝到项目工程目录下,如下图所示
基于PYNQ-Z2复现yolov2_第22张图片
在Vivado中的Tcl Console中输入Tcl命令:source C:/Users/pc/Desktop/Yolo_Meterial/Yolo_demo_vivado/yolov2.tcl 本文将tcl文件放于此绝对路径中,实验中应根据tcl文件位置将绝对路径进行修改,如下图所示,输完后按回车键即可
基于PYNQ-Z2复现yolov2_第23张图片
完成后的Block Design如下图所示:
基于PYNQ-Z2复现yolov2_第24张图片
[注意]如果Vivado版本不是2018.3,可用Notepad工具打开yolov2.tcl文件进行修改,将版本相关的设置语句修改再次尝试一下,如下图所示
基于PYNQ-Z2复现yolov2_第25张图片
在Source栏中右键单击当前的设计文件,选择Create HDL Wrapper…
基于PYNQ-Z2复现yolov2_第26张图片
接着选择Let Vivado manage wrapper and auto-update,单击ok,生成顶层文件
基于PYNQ-Z2复现yolov2_第27张图片
在Source栏中右击Constraints,选择Add Sources,添加相关的约束文件
基于PYNQ-Z2复现yolov2_第28张图片
点击Add Files,将提供的vivado文件夹下的PYNQ.xdc文件导入
基于PYNQ-Z2复现yolov2_第29张图片
单击Flow Navigator下的Generate Bitstream,在弹出窗口单击Yes
基于PYNQ-Z2复现yolov2_第30张图片
在弹出Launch Runs窗口中,Number of jobs和电脑配置相关,可修改为能够选择的最大数。单击OK,之后生成Bitstream文件的过程需要等待十分钟左右
基于PYNQ-Z2复现yolov2_第31张图片
当Bitstream生成完成后,弹出Bitstream Generation Completed窗口,单击Cancel
基于PYNQ-Z2复现yolov2_第32张图片
至此,Vivado部分完成了bit文件和tcl文件的导出,可在./**runs/impl_1文件夹下找到bit和tcl文件,可以拷到项目工程目录下并进行重命名,如yolov2.bit和yolov2.tcl

3 实验三:在PYNQ-Z2板上跑通Yolo_v2

3.1 硬件准备

设置跳帽从SD卡启动,使用Micro USB供电,插入烧写好镜像的SD卡,使用Micro USB连接电脑和开发板,使用网线连接开发板与电脑上网所使用的路由器,启动开发板。参考资料
基于PYNQ-Z2复现yolov2_第33张图片

3.2 实验步骤

稍等片刻,开发板左侧彩灯闪烁后,打开Chrome浏览器,输入pynq:9090,显示jupyter界面,在Password 栏中,输入密码xilinx ,单击Log in ,打开jupyter。单击New->Folder,创建新文件夹
基于PYNQ-Z2复现yolov2_第34张图片
基于PYNQ-Z2复现yolov2_第35张图片
对文件夹重命名,此处以Yolo_Test为例,并进入Yolo_Test文件夹
基于PYNQ-Z2复现yolov2_第36张图片
单击右上角Upload上传pynq文件夹中提供的文件以及Vivado生成的bit文件和tcl文件,并单击蓝色Upload上传,如下图所示:
基于PYNQ-Z2复现yolov2_第37张图片
基于PYNQ-Z2复现yolov2_第38张图片
上传完成后,点击yolov2.ipynb进入notebook,并多次点击Run运行程序,即可在jupyter notebook上看到目标检测的效果。
基于PYNQ-Z2复现yolov2_第39张图片
基于PYNQ-Z2复现yolov2_第40张图片
基于PYNQ-Z2复现yolov2_第41张图片
复现所需文件:下载链接

你可能感兴趣的:(复现项目,fpga,嵌入式)