接口信号的含义
在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端来配置时,不能瞎搞,要讲究个顺序,诶,规矩一堆,就是玩儿你,还有就是把上面数据格式那一节好好看看,不然你对着红色照,结果这边显示屏显示蓝色,跟你闹呢。
|