草庐IT

【ZYNQ】IP核_关于视频IP核的详细介绍

阿妹有点甜 2023-07-17 原文

【ZYNQ】IP核_关于视频IP核的详细介绍

接口信号的含义

在ZYNQ的设计中一般视频数据的传输遵循AXI4-Stream协议,视频处理的IP核的AXI4-Stream接口如下图所示:
当传输的是视频数据时,部分接口也有了新的含义,如下图所示:
例如:tuser信号的另一层含义是一帧的起始信号(SOF),SOF信号可用于帧同步信号;而tlast信号的另一层含义是一行的结束信号。为了传输视频数据

数据格式及编码

为了传输视频数据,AXI4视频模块之间的流接口可以使用不同的精度(例如每个彩色通道8位、10位或者12位),或者是不同的格式(RGB、YUV420)以及每个像素拍不同的像素数。数据位使用[N-1:0]位编号来表示,DATA隐式字段组件应紧密封装在一起。举例来说,一个数据位宽为10位的RGB数据会被封装成30位,高位用0填充,应便于最后的位宽是8的整数,如图所示:

下表则列出了更为详细的表示:

注意:对于4:2:2\4:2:0格式的数据,Cb(或U)和Cr(V)采样会被分割成两个数据节拍,但是每个时钟只能分割一个采样,第一个数据节拍保持Cb(或U),第二个数据节拍保持Cr(V)。换句话讲,帧的第一个有效像素包含[Cb0:Y0],下一个有效像素包含[Cr0:Y1]。
Bayer传感器数据也被称为RAW数据,通常采用RAW8\RAW10\RAW12等格式。
当AXI4-Stream数据位宽携带有多个样本数据时,会有以下两种情况:
1、静态TDATA配置
当AXI4-Stream数据位宽携带有多个样本数据时,应将像素从最低有效位(LSB)压缩至最高有效位(MSB),换句话说,最低有效位应该与最早捕获的像素相对应,假如我每个数据节拍发送四个样本,即四个像素点数据,那么第一个样本位于最低有效位,第四个样本位于最高有效位,来看图:

如图所示,一个数据节拍捕获了两个样本,则低位是最早捕获的样本数据,高位是随后捕获的样本数据,二者紧密的贴合在一起,然后高位用0填充。

2、动态TDATA配置
对于视频IP可以动态更改颜色组件宽度,视频格式或者每个数据牌的像素数,像素和组件应保持在由通用参数确定的静态位置,以便进行实例化,例如,如果在每个数据节拍最多支持两个像素的接口上仅传输一个像素,则采样像素应与最低有效像素位置对齐。其次,如果每个组件只有8位通过为每个组件10位生成的接口传输,则活动位应与最高位(MSB)对齐,并且用0填充LSB。

还有一种情况,就是规定“每个组件的最大位数为12”,但是实际位数超过了12,那么实际组件将被截断为每个组件的最高位数,剩余的最低有效位被丢弃。

视频时序

AXI4-Stream仅在组件接口之间传输视频像素数据、SOF信号和EOL信号。信号借口不携带消隐或同步信号,不需要严格的信号周期。除了从输入流提取视频像素数据并将其发送给后续模块外,接口模块在从DVI、HDMI、SDI或图像传感器等标准周期性视频源接收视频时,还必须测量时序信息(包括每条扫描线的像素数、每帧的有效行数等)。输入接口模块将此信息提供给视频处理和输出接口模块,然后再创建周期性时序信号,并入视频处理系统,已重新创建周期性输出流,如DVI,

上图说明了时序信息的提取和传输。视频输入到AXI4-Stream输入接口和视频时序检测器测量时序信息,并提取视频像素数据,时序信息通过可选的AXI4-Lite接口传输。AXI4-Lite主机会从时序检测器中读取测量的时序信息,并对后续程序进行编程。如果说没有AXI4-L控制寄存器接口的时序生成器,那么实例化时,只能处理IP核配置界面里指定的固定视频格式/分辨率。

视频时序的进一步说明

禁止使用tuser信号与视频数据一起传输周期性同步信息,例如hsync或vsync,换句话说,他们都可以作为同步信号使用,但是不能同时用,因为无法保证IP延迟一致性(非周期性),以及data和tuser位之间通过IP核的延迟匹配。此外,当从帧缓冲区写入和检索视频数据时,不会恢复来自tuser的同步信息。

自动延迟匹配

  • 当同步信号丢失时
    当输出接口内核与帧缓冲区结合使用时,如图所示

    无论是否存在外部帧同步脉冲,都应在时序确定后立即开始生成输出时序信号。当接收到不同步的外部帧同步脉冲时,应当重新初始化输出时序生成。应为AXI-VDMA生成一个新的fsync脉冲,并应丢弃现有帧的输入像素,直到SOF脉冲到来。输入接口不应发送不完整的帧。如果时序视频源断开或者重新连接,又或者当系统从复位或通电恢复时,输入AXI4-Stream接口核心应等到时序确定后的第一帧开始,然后再通过AXI4-Stream接口发送和数据。
  • 当时序信号丢失时
    例如AXI-VDMA帧尺寸、或输出接口的时序参数的任何驱动配置不正确,就会出现这种情况。基于EOL和SOF位置测量的帧尺寸与通过IP核GUI配置或者AXI4-Lite寄存器接口缇欧刚给时序生成器的帧尺寸之间可能就会存在差异。如果SOF和EOL帧信号提前出现,处理核心应立即开始处理新行或者新帧,如果帧信号延迟,则处理核心应通过丢弃像素来清除部分帧,直到收到预期的SOF或EOL信号。

视频子系统软件指南

每个构建的视频系统都包括一个或者多个视频流通道。视频流管道是从视频输入开始到视频输出结束的任何视频IP核心的连接链。对于构建的视频系统而言,必须从输出(后端)开始向输入(前端)重置、配置、重新配置、启用或禁用每个管道,这里所说的重置,配置都是指通过AXI4-Lite接口对视频IP核配置。以下是典型的操作顺序:

  • 视频管道重置:重置管道内所有IP核心
  • 视频管道配置:重置后配置所有IP核心。在此步骤内不要启用核心
  • 视频管道动态重新配置:配置所有IP核心而不重置,例如帧大小更改
  • 视频管道启用:启用管道中的所有IP核心
  • 视频管道禁用:禁用管道中的所有IP核心

通常,要初始化视频管道,应按以下顺序执行操作:

  • 初始化所有驱动
  • 从后端开始重置所有IP核心,向前移动
  • 从后端开始配置所有IP核心,向前移动
  • 从后端开始启用所有IP核心,向前移动

总结起来,就是你在PL端用的那些视频IP,等到PS端来配置时,不能瞎搞,要讲究个顺序,诶,规矩一堆,就是玩儿你,还有就是把上面数据格式那一节好好看看,不然你对着红色照,结果这边显示屏显示蓝色,跟你闹呢。

有关【ZYNQ】IP核_关于视频IP核的详细介绍的更多相关文章

  1. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  2. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  3. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  4. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  5. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  6. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  7. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  8. ruby - 在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC? - 2

    我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!

  9. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  10. ruby - 如何更改此正则表达式以从未指定 v 参数的 Youtube URL 获取 Youtube 视频 ID? - 2

    目前我正在使用这个正则表达式从YoutubeURL中提取视频ID:url.match(/v=([^&]*)/)[1]我怎样才能改变它,以便它也可以从这个没有v参数的YoutubeURL获取视频ID:http://www.youtube.com/user/SHAYTARDS#p/u/9/Xc81AajGUMU感谢阅读。编辑:我正在使用ruby​​1.8.7 最佳答案 对于Ruby1.8.7,这就可以了。url_1='http://www.youtube.com/watch?v=8WVTOUh53QY&feature=feedf'url

随机推荐