这个例子说明了如何使用AXI4-流视频接口,使高速视频流的生成HDL IP核。
要运行此示例,您必须安装和设置以下软件和硬件:
支持Xilinx Z金宝appynq平台的HDL编码器包
嵌入式编码支持包赛灵思ZYNQ金宝app平台
基于Xilinx zynq硬件的计算机视觉系统工具箱支持包金宝app
视觉HDL工具箱
Xilinx Vivado设计套件,支持的版本列在金宝appHDL编码器的文档
ZedBoard
FMC HDMI I / O卡(FMC-HDMI-CAM或FMC-IMAGEON)
要设置ZedBoard,请参阅本例中的“设置ZYNQ五金工具”一节。
这个例子说明了如何:
使用流像素协议模型中的视频流的算法。
生成一个带有axi4流视频接口的HDL IP核。
整合所生成的IP核心成ZedBoard视频参考设计,获得HDMI接口。
使用ARM®处理器来调整参数对FPGA架构更改实况视频输出。
创建自己的自定义视频参考设计。
上面的图片是一个高层体系结构图,其示出了如何在一个预先定义的视频参考设计所产生的HDL DUT IP核工程。在该图中,HDL DUT IP块是从IP核心代工作流生成的IP核心。该图的其余部分表示预定义的视频参考设计,其中包含其他IP处理HDMI输入和输出接口。
该HDL DUT IP处理从HDMI输入IP来的视频流,生成输出视频流,并将其发送到HDMI输出IP。所有这些视频流的AXI4插播视频接口传输。
该HDL DUT IP还可以包括用于参数调整的AXI4-精简版接口。相比AXI4-精简版的界面,AXI4-插播视频接口数据传输速度更快,使之更适合视频算法的数据路径。
1。建立ZedBoard和FMC HDMI我,如下图所示/ O卡。要了解更多关于ZedBoard硬件设置,请参考主板文档。
1.1。连接USB电缆UART,以太网电缆和如上面的图中(标记1〜3)的电源线。
1.2。确保JP7
至JP11
跳线设置如上面的(标记4)图中,这样就可以从SD卡启动Linux。JP7
: 下;JP8
: 下;JP9
:最多;JP10
:最多;JP11
: 下。
1.3。确保J18
跳线被如上面的(标记5)图上2V5设置。
1.4。如上述(标记6)的图所示连接HDMI视频源到FMC HDMI I / O卡。视频源必须能够提供1080p视频输出,例如,它可以是一台摄像机,智能手机,平板电脑或电脑的HDMI输出。
1.5。一个监视器连接到FMC HDMI I / O卡,如上面的(标记7)图。显示器必须能够支持1080p显示。金宝app
2。如果你还没有准备好,安装HDL编码器和赛灵思ZYNQ平台的嵌入式编码器支持包和计算机视觉系统工具箱支持包基于赛灵思ZYNQ硬件。金宝app要启动安装程序,到MATLAB工具条,点击附加组件>获取硬件支持包金宝app。欲了解更多信息,请参阅金宝app支持包安装文档。
3。确保您使用由嵌入式编码支持包赛灵思ZYNQ平台提供的SD卡图像。金宝app如果你需要更新你的SD卡图像,运行金宝app支持包固件更新通过运行在MATLAB提示以下命令:
targetupdater
4。在MATLAB命令窗口中输入以下命令,建立Zynq硬件连接:
h = zynq
该ZYNQ
在通过COM端口和运行在该硬件功能的日志使用ifconfig
命令获取板的IP地址。这个函数还测试以太网连接。
5。在MATLAB命令窗口中使用以下命令设置赛灵思Vivado综合工具路径。当你运行该命令使用您自己的Vivado安装路径。
hdlsetuptoolpath( '工具名称', '赛灵思Vivado', '刀具路径', 'C:\赛灵思\ Vivado \ 2017.4 \ BIN \ vivado.bat')
部署上ZYNQ一个简单的Sobel边缘检测算法,第一步是确定哪些部分设计要在FPGA运行,并且其设计的一部分被ARM处理器上运行。在这个例子中,我们要实现对FPGA边缘检测器来处理AXI4插播视频协议的输入视频流。我们要使用的ARM处理器来调整FPGA的参数更改实况视频输出。
在示例模型中,DUT子系统Sobel_HW,使用一个边缘检测器块执行Sobel边缘检测算法。视频数据和控制信号被建模在视频流像素协议,该协议被用来通过在视觉HDL工具箱所有块。pixelIn和pixelOut对于视频流数据端口。ctrlIn和ctrlOut对于视频流控制端口。他们使用的是总线的数据类型来建模(像素控制总线),其中包含以下信号:HSTART,亨德,音速启动,鬻,有效。
四个输入端口,阈,Sobel_Enable,背景颜色和Show_Gradient,是调整控制端口参数的Sobel边缘检测算法。你可以使用滑块增益或手动开关块来调整这些端口的输入值。映射这些端口AXI4-精简版接口后,ARM处理器可以通过写入到生成的AXI接口访问寄存器控制所生成的IP核心。
MODELNAME ='hdlcoder_sobel_video_stream';open_system(MODELNAME);SIM(MODELNAME);
接下来,我们开始HDL工作流程顾问,并使用ZYNQ软硬件协同设计工作流程,部署在ZYNQ硬件这样的设计。对于更详细的一步一步的指导,你可以参考入门HW / SW协同设计工作流程赛灵思ZYNQ平台例。
1。从DUT子系统启动HDL流程顾问,hdlcoder_sobel_video_stream / Sobel_HW
。目标接口设置已经保存在这个示例模型中,因此Task 1.1到1.3中的设置将自动加载。若要了解有关在模型中保存目标接口设置的更多信息,请参考在示范目标另存硬件设置例。
在任务1.1,IP核生成被选中的目标工作流程,ZedBoard被选中的目标平台。
在任务1.2,默认视频系统(需要HDMI FMC模块)被选中的参考设计。
在Task 1.3中,the目标平台接口表如显示在下面的图像被加载。视频数据流端口,pixelIn,ctrlIn,pixelOut,ctrlOut,被映射到AXI4流内视频接口和所述控制参数的端口,如阈,映射到AXI4-精简版界面。
axi4流视频接口以主/从模式通信,其中主设备将数据发送到从设备。因此,如果数据端口是输入端口,则将其分配给AXI4-Stream视频奴隶接口,如果数据端口是输出端口,则将其分配给AXI4视频插播广告主接口。
2。用鼠标右键单击任务3.2,生成的RTL代码和IP核,并选择运行到选定的任务以生成IP核。你可以找到在生成的IP核报告的IP内核寄存器地址映射和其他文档。
接下来,在HDL流程顾问,我们运行嵌入式系统集成任务部署上ZYNQ硬件生成的HDL IP核。
1。运行任务4.1,创建项目。此任务将生成的IP核插入默认的视频系统参考设计。如第一个图所示,这个参考设计包含处理HDMI输入和输出接口的IPs。它还包含了IPs来完成从YCbCr到RGB的颜色空间转换。生成的项目是一个完整的Zynq设计,包括算法部分(生成的DUT算法IP)和平台部分(参考设计)。
2。单击结果窗格中的链接,打开生成的Vivado项目。在Vivado工具,单击开放式模块设计以查看ZYNQ设计框图,其包括所生成的HDL IP核心,其他视频流水线的IP和ZYNQ处理器。
3。在HDL流程顾问,运行的任务,剩下来生成软件界面模型,并建立和下载FPGA比特流。选择下载在任务编程方法计划目标设备将FPGA位流下载到插板上的SD卡上,这样当您电源循环插板时,您的设计将自动重新加载。
软件界面模型在任务4.2生成的,生成软件界面模型。
1。之前生成的软件界面型号代码,注释掉视频源和视频查看器在生成的模型中,如下图所示。这些块不需要在ARM处理器上运行。ARM处理器采用AXI4-Lite接口控制FPGA结构。实际的视频源和显示接口都在FPGA结构上运行。视频源来自HDMI输入,视频输出将发送到连接到HDMI输出的监视器。
2。配置并构建外部模式的软件接口模型:
在生成的模型,打开配置参数对话框。
选择解算器并设置“停止时间”到“INF”。
从模型菜单中选择模拟>模式>外部。
点击跑按钮上的模型工具栏。嵌入式编码器构建模型,将ARM可执行文件下载到ZedBoard硬件,执行它,并将模型连接到运行在ZedBoard硬件上的可执行文件。
3。现在,无论是设计的硬件和软件部件上ZYNQ硬件上运行。使用Sobel_Enable切换到观察到实时视频输出的边缘检测器输出和原始视频之间切换。使用阈或背景颜色切换到上看到实时视频输出的不同的边缘检测效果。这些参数值被发送到经由外部模式和AXI4-精简版接口ZYNQ硬件。
您可能想要扩展现有的默认的视频系统参考设计添加额外的预处理或后处理摄像机流水线IPs,或者您可能希望使用不同的SoC硬件或摄像机接口。该默认的视频系统参考设计是一个例子或一个起点,创建自己的定制的参考设计。
例如,默认的视频系统参考设计包含两个IP核,进行YCbCr到RGB的颜色空间转换,如下图所示。这两个IP核是由HDL编码器以及使用的IP核生成工作流生成的。您可以选择生成其他预处理或后处理摄像机流水线IP核心,并将它们添加到自定义参考设计中,以扩展您的视频平台。
有关创建自己的自定义参考设计的更多细节,可以参考定义和注册定制电路板和参考设计的SoC流程例。