最近的项目中用到Xilinx FPGA做视频处理(主要是缩放和帧率转换),搜索一下官方资料,UG934算是一个总体介绍,学习一下。
接口和信号
看模块先看接口,下面是模块接口图和信号描述表,都是很直白的东西。
关键的握手信号,帧起始信号(使用TUSER)。
行结束信号(使用TLAST),一个有效传输时钟宽度,与最后一个像素同时发送。
数据格式和AXI4-S的参数
随后介绍了数据是如何在AXI4-S总线上进行数据映射和传输的,对于不直接操作AXI4-S接口的场景,这部分可以大致了解一下,无需细究。
系统设计指南
这部分简单介绍了一些使用范例,没有过多的细节,却是需要好好研究的东西,可以了解常规的视频处理流程、涉及的相关IP。
视频时序信息
AXI4-S包含了视频像素、帧起始、行结束信息,不包含视频时序信息。
Video Timing Detector可以检测视频时序信息,Video timing generator可以根据视频时序信息生成需要的视频时序。(Video Timing Controller,简称VTC,可以选择时序检测、时序生成功能,或者同时包含两者)。
指南中强调了不要使用TUSER传输同步信息,可以这么理解,如果是自己实现主从AXI4-S接口,我们可以传输和接收TUSER中的信息,但是其他包含AXI4-S接口的IP不能包含或者接收TUSER中的视频同步信息。即这么使用是非标准操作,不能保证兼容性。
以帧头/水印的形式将时序信息嵌入视频数据中(类似于BT656等)也是不允许的,在传输和转换的过程中可能会产生预期之外的结果。例如,缩放相关IP没有检测和改变嵌入的时序信息的功能。
复位要求
硬件复位
(本条与实现AXI4-S接口IP有关)模块的复位应当是独立的,不依赖于相连的其他IP。模块设计时应确保AXI4-S接口的任何重置都会重新初始化IP,减少对输出的干扰。简而言之,模块应当可以在任意时刻复位和从复位状态恢复,不受前后级IP的影响。
指南建议保持复位信号,确保所有IP正确重新初始化。尽管AXI接口可以组成多个互相隔离的网络,支持部分复位。即使用全局复位,持续超过所有IP中最长复位要求时长。
IP会丢弃SOF信号之前的数据。
AXI4-S接口复位时必须取消VALID和READY输出,无需在复位时立即实现,但是要在相关联的IP取消复位之前达到稳定的复位状态。这有助于实现模块内部复位输入的流水线,包括跨时钟域的同步。
软件复位
在数据链中,按从视频输出开始到视频输入的顺序复位、取消复位。
如果应用允许,为视频IP提供与视频帧边界同步的软件复位。如果帧和帧之间的时间足够长,在帧结束后的软件复位可以复位单个IP不影响整个系统。
输入/输出接口-自动延迟匹配
1.周期性输入流、无约束输入流、无帧缓冲(并不是无缓冲,只是不需要一帧及以上的缓存)
这个很容易实现,之前也写过很多类似的工程,熟悉流水线处理就行,配合FIFO进行单独实现可能更方便、高效,毕竟不需要像官方IP一样要实现很多“兼容性”功能。
2.从帧缓冲中生成输出流
这边提到了AXI-VDMA和Video Scaler,是比较常用的视频处理IP,后面会单独研究。
这个示例系统主要解决的问题有:输出时钟与输入时钟不同;输出时序要与外部同步信号同步;外部同步信号驱动AXI-VDMA读取(数据输出要与外部同步信号同步)
输出时钟与输入时钟不同,解决方案为帧缓冲和预读取;
输出时序与外部同步信号同步,解决方案为配置video timing generator与外部同步信号同步;
外部同步信号驱动AXI-VDMA读取,解决方案其实就是预读取(使用重新生成的时序信号而不是直接使用外部信号或其同步信号)。
失去同步
停止发送数据,直到重新同步。
时序信息错误
以SOF或EOL信号为准。
视频流输入连接
讲到了Video In to AXI-S以及VTC可选的时序信号配置。
建议使用VTC的锁定状态控制VID-IN的axis_enable,保证VTC锁定前VID-IN不会输出。
建议在下游处理核心初始化和使能后使能VTC。
对于需要时序信息进行配置的下游处理核心,在从VTC读取到所需信息后,复位VTC,配置下游核心,使能下游核心,重新使能VTC。
外部帧缓冲
AXI-VDMA方案
(此处涉及的几个概念比较生疏,等后面补充)
时序信息错误会产生错误中断。
多连接
不建议使用流组合器组合不同的流,在没有TID和TDEST字段时无法辨别像素源。
建议使用IP到IP的单独接口。
辅助数据
音频、字母等辅助数据需要使用单独的信道处理或传输。
隔行视频
Xilinx视频IP通过独立于AXI4S-Video接口的field_id或fid接口支持隔行视频。
去隔行功能是VPSS的一部分,详见PG231。
相关IP(支持隔行视频):
AXI4-Stream to Video Out
Video In to AXI4-Stream
Frame Buffer Read/Write
Video Test Pattern Generator
隔行视频系统如下(不含buffer和包含buffer):
去隔行处理(上面提到去隔行器属于VPSS的一部分)