主要内容

为Zynq-Based硬件开发视觉算法

这个例子展示了如何设计和部署一个流媒体视频算法的FPGA Zynq®设备。

使用视觉HDL工具箱™支持包Xilinx®Zynq®的硬件,金宝app您可以部署在视觉HDL工具箱™边缘检测和图像叠加例子Zynq设备。工作流也可以应用于其他视觉HDL工具箱的例子。

这个例子使用一个HDMI融合卡输入和输出视频流在黑板上。例如使用MIPI®融合卡作为输入视频,明白了角点检测与Zynq-Based硬件和MIPI传感器

设置先决条件

您可以使用此支持包Zynq-bas金宝apped板开发目标的算法。这个例子展示了一个完整的工作流程,从框架仿真模型部署像素流算法运行在ZedBoard®。演示一个边缘检测和图像叠加工作流算法在这个例子。该算法对应于视觉HDL工具箱的例子,边缘检测和图像叠加。Zynq-Base金宝appd硬件的支持包,你会得到一个硬件参考设计,允许轻松集成的目标算法的视觉系统。

你也可以应用这个工作流角点检测和图像覆盖与Zynq-Based硬件,伽马校正与Zynq-Based硬件,图像锐化与Zynq-Based硬件的例子。

如果您尚未这样做,通过指导运行安装向导部分Zynq支持包安装。金宝app您可能已经完成了这一步当你安装这个包的支持。金宝app

在MATLAB选项卡,环境部分的将来发布,点击附件>管理插件。定位视觉HDL工具箱支持包Xilinx Z金宝appynq-Based硬件,然后单击设置

引导安装向导执行一些初始设置步骤,并确认目标可以引导和主机和目标可以交流。

有关更多信息,请参见设置为视觉硬件

如果你计划生成嵌入式ARM代码来控制AXI-Lite寄存器FPGA控制逻辑,你必须执行额外的设置步骤配置Xilinx交叉编译工具。这些步骤的详细设置部门目标

框架模型与视频文件输入

从框架的边缘检测和图像叠加模型算法。

open_system (“vzEdge_01_FrameBased”)

您可以运行这个模拟没有硬件的视频源来自于这个例子从多媒体文件块,从一个多媒体文件读取视频数据。这一步可以验证不定位算法对已知固定的视频数据。

摄像头采集框架模型

算法通常是敏感的具体视频输入。在这个步骤中,您可以验证该算法对真实数据来自相机连接到HDMI输入。要做到这一点,右键单击左下角的变体选择图标图片来源块,选择标签模式积极的选择,并选择HW

使用实际数据时,选择一个帧尺寸相匹配你的相机设置。如果你的相机允许不同大小,你可以选择小尺寸为更快的吞吐量。HDMI输入支持480 p的最小大小。金宝app

所有的设置视频捕捉HDMI块在仿真期间发送到目标正确配置它捕捉相机视频。

Pixel-Stream模型与视频文件输入

现在,改进的算法在硬件实现。而不是在全帧图像,这HDL-ready算法适用于pixel-streaming接口。之间的模型包括比较逻辑框架版本的算法和基于像素。它使用一个YCbCr调整块调整更好的模拟性能的源视频帧。

open_system (“vzEdge_02_PixelStream”)

你可以运行这个没有硬件仿真确定pixel-stream和框架版本的算法是相同的。如果,您应该看到“正”PSNR值的输出。

有两件事需要注意的模拟输出:

  1. 在模拟输出的第一帧,视频显示范围显示绿色形象。这种情况表明,没有图像数据是可用的。这种行为是因为pixel-streaming算法必须缓冲的输出形式显示之前一枚。不定位算法的输出是由一帧延迟来弥补这一点。

  2. 在第二次模拟框架,pixel-streaming输出的视频显示范围是不正确的cThresholdcAlpha在仿真软件中配置模型参数值。金宝app的PSNR Y范围还将展示一个non-Inf值第二帧。这种差异是由于算法使用初始cThresholdcAlpha的价值0.0。当你使用率转换块中配置单位延迟模式的输入值只有注册后输出一个完整的样本输入的速度。在这种情况下,输入速率对应于一个视频帧。在这最初的过渡时期,块将输出初始条件(一个值0.0)。这些块必须确保单频中的所有模块子系统,HDL代码生成所需。有关更多信息,请参见率转换(金宝app模型)

Pixel-Stream模型相机采集

您可以运行相机像素流模型数据的配置图片来源相应的块。和之前一样,右键单击左下角的变体选择图标图片来源块,选择标签模式积极的选择,选择HW

虽然捕获可以支持大型框架,像素流算法运行非常缓慢。金宝app最好使用尽可能最小的帧的大小。你可以选择调整240 p使用捕获的框架YCbCr调整块。如果你改变帧大小,改变它的参考设计,帧的像素YCbCr 4:2:2块,像素帧YCbCr 4:2:2块。

目标的算法

你满意后像素流和不定位算法匹配,你可以目标像素算法的FPGA Zynq董事会。前面的模型转换移除不定位算法和验证逻辑,以创建一个模型作为输入,生成用户的硬件逻辑。

open_system (“vzEdge_03_TargetSource”)

为了目标,建立Xilinx工具链通过调用hdlsetuptoolpath。例如:

> > hdlsetuptoolpath (“ToolName”,“Xilinx Vivado”,“路径”,“C: \ Xilinx \ Vivado \ 2022.1 \ bin \ vivado.bat ');

执行hdlsetuptoolpath(高密度脂蛋白编码器)为更多的信息。

通过右键单击启动针对工作流边缘覆盖算法子系统和选择高密度脂蛋白HDL代码>工作流顾问

  • 在步骤1.1中,选择IP核心代工作流和适当的平台的选择:ZedBoard FMC-HDMI-CAM,ZC706 FMC-HDMI-CAM,ZC702 FMC-HDMI-CAM,PicoZed FMC-HDMI-CAM,ZCU102 FMC-HDMI-CAM,ZCU106 FMC-HDMI-CAM

  • 在步骤1.2,选择相对应的参考设计中使用的像素格式设计。这一步计算所需的时钟频率来支持你选择的分辨率,并添加合成约束。金宝app步骤4.3后,检查综合日志为你设计验证合成达到请求的时钟频率。这个示例中生成一个愿景HDL工具箱像素流接口。在这一步你可以选择选择一个AXI4-Stream HDL代码生成界面。有关详细信息,请参见用户生成FPGA逻辑AXI4-Stream视频接口

  • 在步骤1.3中,将目标平台接口映射到输入和输出端口的设计。的选项目标平台的接口列取决于像素格式。接口表的图显示了一个示例配置YCbCr 4:2:2以及不同颜色选择可能的接口值。

在模型的例子中,港口已经标记,这样他们像是正确的条目目标平台的接口下拉列表。这些名字显示的港口的名字列。的目标平台的接口包括四种类型的信号:

像素流数据信号:这些信号接口依赖于像素格式的设计。这个示例使用YCbCr像素格式,所以只有选择YCbCr出现在列表中。如果你选择RGB参考设计,然后三个选项,R,G,B,是可用的。如果您选择Y只,唯一的选择是数据接口Y。这些信号接口适用于输入和输出接口。

像素流控制总线这些总线接口为所有像素格式出现。看到像素控制总线为更多的信息。

外部接口板这些信号接口对应于物理GPIO接口在你的目标硬件平台。有两类:输入和输出。在本例中,输入端口pbEdgeOnly被映射到一个按钮接口;输入端口dsGrayscale映射到变光开关接口;和输出端口领导映射到一个领导接口。

部门用户逻辑接口在这个类别中唯一接口选项AXI-Lite。选择这个接口将高密度脂蛋白编码器生成内存映射寄存器的FPGA结构。您可以访问这个寄存器从软件运行在ARM处理器上。这个接口允许您调整参数在实时运行针对硬件仿真或者一个软件界面模型。

对于这个示例,选择YCbCr 4:2:2参考设计匹配的像素格式Pixel-Stream边缘覆盖算法子系统。与参考接口表图,地图港口的Y输入[0:7]接口。同样,地图CbCrIn港口的Cb / Cr输入[0:7]接口。像素流控制输入和输出端口映射到相应的控制信号接口。利用外部接口在目标硬件平台上,映射pbEdgeOnly港口按钮0;dsGrayScale端口0变光开关;和领导端口0。同样,地图cAlphacThresholdAXI4-Lite软件控制。

  • 第二步准备设计一代通过做一些设计检查。

  • 第三步生成HDL代码的IP核心。

  • 第四步将新生成的IP核心集成到更大的视觉Zynq参考设计。

按顺序执行每一步体验完整的工作流程,或者,如果你已经熟悉,准备和HDL代码生成阶段,在目录中右键单击步骤4.1左边和选择选择任务运行

  • 在步骤4.2中,工作流模型生成一个目标硬件接口,如果嵌入式程序员Zynq支持包已经安装,Zynq软件界面模型。金宝app两个库模型,包含所需的模块和接口的配置和控制目标的算法,也创造了。这些模型是解释说。点击运行这个任务按钮使用默认设置。

步骤4.3和4.4

其余的工作流程生成一个FPGA比特流,下载到目标,重新启动。

因为这个过程可能需要20 - 40分钟,你可以选择跳过这一步使用预生成的比特流对于这个示例附带的产品,放置在SDCard期间设置。

注意:这个比特流生成与HDMI像素时钟约束为148.5 MHz最高分辨率为1080 p高清电视在60帧每秒。Zynq硬件上运行这个例子与更高的分辨率,从下拉列表中选择源视频分辨率值在步骤1.2。

使用这个预生成的比特流执行以下:

> > vz = visionzynq ();> > changeFPGAImage (vz“visionzynq-zedboard-hdmicam-edge_overlay.bit”);

‘zedboard’替换为‘zc706’,‘zc702’,‘picozed’,‘zcu102’或‘zcu106如果合适。

或者,您可以继续步骤4.3和4.4。

  • 在步骤4.3中,工作流顾问生成一个FPGA比特流。你可以选择执行这个步骤在外部壳通过保持选择外部运行构建过程。这个选择允许你继续使用MATLAB在FPGA。步骤将在几分钟后完成一些基本的检查已经完成,项目和步骤将标志着一个绿色的复选标记。然而,你必须等到外部壳层显示一个成功的比特流构建在继续下一步之前。

一旦代bistream完成,比特流文件位于以下位置:

< PROJECT_FOLDER > \ vivado_ip_prj \ vivado_prj.runs \ impl_1 \ design_1_wrapper.bit

在哪里“< PROJECT_FOLDER >”是1.1步中指定的项目文件夹。默认情况下,这是hdl_prj

  • 在步骤4.4中,工作流重命名生成的比特流,复制到一个新目录,下载到目标,重新启动。

改名后的bitsteam位于以下位置:

< PROJECT_FOLDER > \ vivado_ip_prj \ sdcard \ visionzynq-zedboard-hdmicam-edge_overlay.bit

在哪里“< PROJECT_FOLDER >”是1.1步中指定的项目文件夹。默认情况下,这是hdl_prj

配置Zynq设备在稍后的阶段,该比特流文件执行以下:

> > vz = visionzynq ();> > downloadImage (vz“FPGAImage”,' < PROJECT_FOLDER > \ vivado_ip_prj \ sdcard \ visionzynq-zedboard-hdmicam-edge_overlay.bit”);

使用另一个平台的比特流,取代“zedboard”与平台的名字。

高密度脂蛋白的生成模型工作流顾问

步骤4.2生成的两个或四个模型取决于嵌入式安装编码器:有针对性的硬件接口的模型和相关的库模型,和一个软件界面的模型和相关的库模型。有针对性的硬件接口的模型可以用于控制仿真软件模型的参考设计没有嵌入式编码器。金宝app软件界面的模型支持完整的软件针对Zynq当嵌入式编码器和Zyn金宝appq(嵌入式编码器)支持包安装,使外部模式模拟,Processor-in-the-loop,全面部署。

图书馆创建模型,对硬件生成模型的任何更改传播到任何自定义目标存在的硬件仿真或软件界面模型。

使用生成的目标硬件接口模型

在这个模型中,您可以调整的配置参考设计和阅读或硬件的驱动控制港口用户逻辑。这些配置更改影响的设计虽然在目标系统上运行。您还可以显示视频捕获目标设备。

生成的模型包含块,使目标算法配置和控制模型。金宝app领域模型的标记进一步强调,视频处理算法,和算法来控制目标硬件用户逻辑,应该放置。

的一个例子如何使用目标硬件仿真模型提供了一个保存模型。

open_system (“vzEdge_03_TargetSource_tgthw_interface_saved”)

  • 更新的帧大小视频捕捉HDMI块匹配设置你的相机。

  • 该模型包括一个捕获显示块允许进一步分析仿真软件的用户逻辑输出。金宝app这是一个可选的步骤。HDMI输出在目标板上还显示输出。如果你只需要视觉算法的确认工作,您可以删除捕获显示块。

  • 打开“cThreshold”不断的块和变化值。注意,边缘检测或多或少变得咄咄逼人。

  • 因为算法在硬件上运行,推动PB0 Zynq董事会只显示边缘检测的图像到HDMI输出,DS0之间进行切换,切换颜色和灰度。

  • 修改其他设置的影响。

使用生成的软件接口模型

在这个模型中,您可以运行在外部模式控制的配置参考设计,和读或驱动任何控制端口的硬件用户逻辑连接AXI-Lite寄存器。这些配置更改影响的设计虽然在目标系统上运行。您可以使用这个模型完全部署软件设计。(这个模型生成只有嵌入式编码器和嵌入式编码Zynq支持包安装)。金宝app

生成的模型包含块,使目标算法配置和控制软件。面积模型标记突出的软件算法来控制目标硬件用户逻辑应放置。

如何使用的一个示例中提供的软件界面模型生成软件保存模型。

open_system (“vzEdge_03_TargetSource_interface_saved”)

在运行这个模型之前,您必须执行额外的设置步骤配置Xilinx交叉编译工具。有关更多信息,请参见设置部门目标

这个模型可以在运行外部模式。这种模式允许您控制仿真软件的配置模型。金宝app调整常量值cThresholdcAlpha。你也可以绕过硬件用户逻辑的数据路径Zynq设备通过检查绕过硬件用户逻辑选项软件界面块的属性,点击应用

你也可以完全部署设计。在仿真软件工具金宝app栏,单击部署到硬件

尝试的东西

算法配置选项

除了处理边缘检测的图像,该算法提供了一些可配置的控制参数。

  • pbEdgeOnly被映射到一个Zynq板按钮,推时,只显示原始图像的边缘检测结果和没有。将指定的特定的按钮目标的算法部分。

  • dsGrayScale映射到Zynq板变光开关,反之,消除了CbCr像素数据,只有输出Y数据。具体的将指定的变光开关目标的算法部分。

  • cThreshold是一个配置选项调整边缘检测阈值。即使针对可控从仿真软件模型金宝app外部模式目标硬件执行。

  • cAlpha是一个配置选项来调整原始图像的混合和边缘检测的图像。的值1.0意味着完整的原始图像和一个0.0完整的图像边缘检测方法。这个配置也可以通过远程配置外部模式目标硬件执行。

请注意,pbEdgeOnlydsGrayScale纯硬件控制端口连接在有针对性的设计。这些端口可以运行在任何期望的速度包括像素时钟频率。

然而,cThresholdcAlpha值控制的嵌入式处理器(或主机外部模式目标硬件模式)。因为无论是主持人还是嵌入式CPU可以更新这些控件在像素时钟频率,速度上的帧速率。

类似的例子

这个例子演示了开发算法的工作流处理Xilinx Zynq设备。您可以应用此工作流:

此外,您还可以调整视觉HDL工具箱的例子与Zynq设备工作。

模板

示例模型是基于与Zynq YCbCr 4:2:2不定位算法金宝app模型模板和YCbCr 4:2:2 HDL与Zynq Pixel-Streaming算法金宝app模型模板,可以从仿真软件开始页面。