本文将介绍如何创建一个支持HDMI输入到输出的图像处理平台。这可以用作基于HLS的图像处理演示的基础。
概述
该项目将演示如何基于XilinxZynq创建一个简单的图像处理平台。然后,该项目将用作后续开发的基础,这些开发侧重于基于高级综合的开发,允许使用行业标准OpenCV库。
为了创建这个示例,我使用ZyboZ7,因为它提供HDMI输入和输出,以及用于MIPI相机的CSI-2接口,我们也可以将其用于未来的开发。
除了Zybo-Z7,我们还将使用:
HDMI摄像头,例如Apeman1080P运动摄像头
HDMI输入和输出端口的相关电缆
HDMI显示
为了创建应用程序,我们将使用以下开发工具和库:
维瓦多2017.4
赛灵思SDK2017.4
DigilentVivado库
要创建此示例,我们需要执行以下准备步骤:
将DigilentVivado库下载并解压到您的计算机
安装DigilentBoard定义,如果您不确定如何执行此操作,请单击此处
创建一个针对Zybo-Z7的新Vivado项目
在Vivado中创建新的框图
构成
在Vivado框图中,我们需要添加以下IP:
Zynq处理系统-这将提供图像处理系统的配置和控制,同时它的DDR也用作帧缓冲区以确保以下配置
PL时钟0=200MHz
PL时钟1=100MHz
HP0Slaveenabled-这将用于将图像传输到PSDDR或从PSDDR传输图像
GP0Masterenabled-用于配置图像处理链
DVI2RGB-这将HDMI视频流转换为具有适当垂直和水平同步的24位RGB总线。
AXIGPIO-用于断言HDMI源上的热插拔检测的单个输出,未能断言这可能意味着没有接收到视频。
视频定时控制器-配置为检测,这将检测从HDMI源接收的视频的模式。
视频输入到AXIS-这会将并行视频和同步转换为AXI流。与TDATA上的图像数据一起,帧的开始由TUser信号标识,而行尾由TLast信号标识。
将此配置为具有独立时钟,以便像素时钟和AXI流时钟不同。
AXIS子集转换器-此组件将24位视频输出的格式重新映射为正确的RGB格式。其中两个在VDMA之前和之后使用。
视频直接内存-写入通道将AXI流视频移动到AXI内存映射形式,以便存储在PSDDR内存中。而读取通道访问PSDDR并将AXI内存映射格式转换为AXI流以供输出。确保启用两个方向。
视频时序控制器-配置为时序源,配置所需的时序取决于输入视频时序。这被AXIS用于视频输出以生成输出并行视频和同步
RGB2DVI-这将输出并行视频和垂直和水平同步转换为HDMI
为了支持动态配置输出时钟,使用了DigilentVivado库中的动态时钟发生器。这允许使用AXIlite根据接收到的视频格式来改变像素时钟频率。
Vivado项目
将所有这些放在一起可以创建一个Vivado项目,如下所示。
然后可以构建Vivado项目并将其导出到XilinxSDK以使我们能够创建应用软件。
在XilinxSDK中,我们需要编写我们的软件应用程序来执行以下操作:
断言连接到HDMIIN热插拔检测的GPIO-断言此信号后,处理器等待5秒以确保HDMI源生成视频。
配置视频定时控制器(检测器)以报告传入视频模式。
配置视频时序控制器(生成器)以根据检测视频模式生成时序。
配置动态时钟
将VDMA配置为从PSDDR读取和写入数据
运行应用程序SW应该可以让您看到所选HDMI源上的图像。
实物
总而言之,这个项目为我们提供了一个想法平台,我们可以在未来使用它来展示我们基于HLS图像处理的应用程序。
全部0条评论
快来发表一下你的评论吧 !