在Zynq工作流中使用AXI4-Stream视频接口部署模型
这个例子展示了如何使用AXI4-Stream Video接口在生成的HDL IP核上启用高速视频流。
开始之前
要运行此示例,您必须安装并设置以下软件和硬件:
针对Xilinx®Zy金宝appnq®平台的HDL Coder™支持包
嵌入式Coder®支持包Xili金宝appnx Zynq平台
基于xilinxzynq硬件的计算机视觉系统工具箱支持包金宝app
视觉HDL工具箱
Xilinx Vivado®设计套件,支持的版本列在金宝appHDL语言支持和支持的第三金宝app方工具和硬件
ZedBoard
FMC HDMI I/O卡(FMC-HDMI- cam或FMC- imageon)
要设置Zedboard,请参阅设置Zynq硬件和工具节。着眼于Xilinx Zynq平台.
简介
这个例子展示了如何:
使用流像素协议建模视频流算法。
使用AXI4-Stream视频接口生成HDL IP核。
将生成的IP核集成到ZedBoard视频参考设计中,并访问HDMI接口。
使用ARM®处理器调优FPGA fabric上的参数来改变实时视频输出。
创建自己的自定义视频参考设计。
上图是一个高级架构图,展示了生成的HDL DUT IP核如何在预定义的视频参考设计中工作。在这个图中,HDL dut IPblock是由IP核生成工作流生成的IP核。图的其余部分表示预定义的视频参考设计,其中包含处理HDMI输入和输出接口的其他ip。
的HDL dut IP处理来自HDMI输入IP的视频流,生成输出视频流,并将其发送到HDMI输出IP。所有这些视频流都在AXI4-Stream video接口中传输。
的HDL dut IP还可以包括用于参数调优的AXI4-Lite接口。与AXI4-Lite接口相比,AXI4-Stream Video接口传输数据的速度要快得多,更适合视频算法的数据路径。
设置Zynq硬件和工具
1.设置ZedBoard和FMC HDMI I/O卡如下图所示。要了解更多关于ZedBoard硬件设置,请参考主板文档。
1.1.如图1 - 3所示(标记1 ~ 3)连接USB UART线、网线和电源线。
1.2.确保JP7
来JP11
跳转器的设置如上图所示(标记4),因此您可以从SD卡引导Linux。JP7
:下来;JP8
:下来;JP9
:了;JP10
:了;JP11
:下来。
1.3.确保J18
跳线设置在2V5上,如图所示(标记5)。
1.4.如上图(标记6)所示,将HDMI视频源连接到FMC HDMI I/O卡。视频源必须能够提供1080p视频输出,例如,它可以是摄像机、智能手机、平板电脑或计算机的HDMI输出。
1.5.如上图(标记7)所示,将显示器连接到FMC HDMI I/O卡。显示器必须能够支持1080p显示。金宝app
2.如果还没有安装,请安装用于Xilinx Zynq平台的HDL编码器和嵌入式编码器支持包,以及用于Xilinx Zynq基于硬件的计金宝app算机视觉系统工具箱支持包。要安装支持包,请转到MATLA金宝appB®工具条并单击附加组件>获取硬件支持包金宝app.
3.请确保您使用的是Xilinx Zynq平台嵌入式编码器支持包提供的SD卡映像。金宝app如果您需要更新SD卡映像,请在MATLAB提示符下运行以下命令:
targetupdater
4.在MATLAB命令窗口中输入以下命令设置Zynq硬件连接:
H = zynq
的zynq
功能通过COM口登录硬件,运行ifconfig
命令获取单板IP地址。此函数还测试以太网连接。
5.在MATLAB命令窗口中使用以下命令设置Xilinx Vivado合成工具路径。运行该命令时,请使用自己的Vivado安装路径。
hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\bin\ Vivado .bat')
使用流像素协议建模视频流算法
要在Zynq上部署一个简单的Sobel边缘检测算法,首先要确定设计的哪一部分要在FPGA上运行,哪一部分要在ARM处理器上运行。在本例中,我们要在FPGA上实现边缘检测器来处理AXI4-Stream视频协议中的传入视频流。并且我们想要使用ARM处理器对FPGA上的参数进行调优来改变实时视频输出。
在示例模型中,DUT子系统,Sobel_HW,利用边缘检测块实现Sobel边缘检测算法。视频数据和控制信号在视频流像素协议中建模,该协议被Vision HDL工具箱中的所有块所使用。pixelIn而且pixelOut视频流的数据端口。ctrlIn而且ctrlOut是视频流的控制端口。它们使用总线数据类型(像素控制总线),包含以下信号:hStart,这个到,音速启动,公开发表,有效的.
4个输入端口,阈值,Sobel_Enable,Background_Color而且Show_Gradient,是控制端口调整参数的索贝尔边缘检测算法。您可以使用滑块获得或手动开关块来调整这些端口的输入值。在将这些端口映射到AXI4-Lite接口后,ARM处理器可以通过写入生成的AXI接口可访问寄存器来控制生成的IP核。
modelname =“hdlcoder_sobel_video_stream”;open_system (modelname);sim (modelname);
使用AXI4-Stream视频接口生成HDL IP核
接下来,我们启动HDL Workflow Advisor并使用Zynq硬件-软件协同设计工作流将该设计部署到Zynq硬件上。有关更详细的分步指南,可以参考着眼于Xilinx Zynq平台的例子。
1.从DUT子系统启动HDL Workflow Advisor,hdlcoder_sobel_video_stream / Sobel_HW
.目标接口设置已经保存在这个示例模型中,因此将自动加载Task 1.1至1.3中的设置。有关在模型中保存目标接口设置的详细信息,请参阅在模型中保存目标硬件设置的例子。
在任务1.1中IP核生成为目标工作流程,ZedBoard为目标平台.
在Task 1.2中默认视频系统(需要HDMI FMC模块)为参考设计.
在任务1.3中,使用目标平台接口表加载如下图所示。视频数据流端口,pixelIn,ctrlIn,pixelOut,ctrlOut,映射到AXI4-Stream Video接口,控制参数端口,如阈值,映射到AXI4-Lite接口。
AXI4-Stream Video接口采用主备模式通信,主设备向从设备发送数据。因此,如果数据端口是输入端口,请将其分配给AXI4-Stream视频从机接口,如果数据端口是输出端口,则将其分配给AXI4-Stream Video Master接口。
2.右键单击任务3.2,生成RTL代码和IP核,并选择运行到选定任务来生成IP核。您可以在生成的IP核报告中找到IP核的寄存器地址映射和其他文档。
集成IP到AXI4-Stream视频兼容参考设计
接下来,在HDL Workflow Advisor中,我们运行嵌入式系统集成将生成的HDL IP核部署到Zynq硬件上。
1.运行任务4.1,创建项目.该任务将生成的IP核插入默认视频系统参考设计。如第一个图所示,此参考设计包含用于处理HDMI输入和输出接口的ip。它还包含从YCbCr到RGB进行颜色空间转换的ip。生成的项目是一个完整的Zynq设计,包括算法部分(生成的DUT算法IP)和平台部分(参考设计)。
2.单击Result窗格中的链接,打开生成的Vivado项目。在Vivado工具中,单击开放式体块设计查看Zynq设计框图,其中包括生成的HDL IP核、其他视频流水线IP和Zynq处理器。
3.在HDL Workflow Advisor中,运行其余任务以生成软件接口模型,并构建和下载FPGA比特流。选择下载任务中的编程方法程序目标设备将FPGA比特流下载到ZedBoard上的SD卡上,这样当您为ZedBoard上电循环时,您的设计将自动重新加载。
生成ARM可执行文件以优化FPGA Fabric上的参数
在任务4.2中生成软件接口模型,生成软件接口模型.
1.在从软件接口模型生成代码之前,注释掉视频源而且视频查看器在生成的模型中,如下图所示。这些块不需要在ARM处理器上运行。ARM处理器使用AXI4-Lite接口控制FPGA fabric。实际的视频源和显示接口都运行在FPGA fabric上。视频源来自HDMI输入,视频输出将被发送到连接到HDMI输出的监视器。
2.配置和构建外部模式的软件接口模型:
在生成的模型中,打开配置参数对话框。
选择解算器并将“停止时间”设置为“inf”。
从模型菜单中选择模拟>模式>外部.
单击运行按钮。Embedded Coder构建模型,下载ARM可执行文件到ZedBoard硬件,执行它,并将模型连接到运行在ZedBoard硬件上的可执行文件。
3.现在,设计的硬件和软件部分都运行在Zynq硬件上。使用Sobel_Enable切换到观察现场视频输出在边缘检测器输出和原始视频之间切换。使用阈值或Background_Color切换查看现场视频输出的不同边缘检测效果。这些参数值通过外部模式和AXI4-Lite接口发送到Zynq硬件。
自定义视频参考设计
您可能希望扩展现有的默认视频系统参考设计添加额外的预处理或后处理摄像头流水线ip,或者您可能希望使用不同的SoC硬件或摄像头视频接口。的默认视频系统参考设计是创建自己的自定义参考设计的示例或起点。
例如,默认视频系统参考设计包含两个IP核,用于YCbCr到RGB的颜色空间转换,如下图所示。这两个IP核是由HDL编码器以及使用IP核生成工作流生成的。您可以选择生成其他预处理或后处理摄像机流水线IP核,并将它们添加到自定义参考设计中,以扩展您的视频平台。
有关创建自己的自定义参考设计的详细信息,请参阅为Zynq工作流定义定制板和参考设计的例子。