一、前言
axis_vid_out模块用于将axis视频数据流和VTC视频时序信号对齐,输出成native video视频时序+数据信号。通常来说,在FPGA内部处理视频一般使用axis总线进行,因为axis内的视频数据没有消隐时间,有更高的数据密度,可以处理更高分辨率的视频,当然处理完成后可能需要转回native video视频数据,但在使用axis_vid_out模块进行转换时常见到无法锁定的情况
二、锁定的过程
axis_vid_out模块实现axis转native video输出本质上是将axis数据与VTC时序锁定并结合输出的过程。这个锁定过程有两种模式:
1、在master模式时,VTC模块的作为master,axis_vid_out模块会将axis对齐到VTC上。axis_vid_out模块会先拉高tready读取数据,读取到tuser后拉低,等待VTC输出与tuser对齐,拉低tready的时间在两帧左右,对齐时axis数据需求量小
2、在slave模式时,VTC模块的作为slave受axis_vid_out模块控制,axis_vid_out模块会控制VTC对齐到axis数据上。axis_vid_out模块会先拉高tready读取数据,并拉低gen_clken,使得VTC时序输出暂停,等待axis数据对齐到VTC,并且tready会被连续拉高2帧以上,对齐时axis数据需求量大
三、为什么无法锁定
1、时钟、gen_clken、fid等信号没有正确连接
2、axis的分辨率和VTC的分辨率不匹配
3、axis的数据过慢或没有数据,此时模块内部FIFO发生underflow
四、常见问题
1、逐行扫描模式时,fid错误置高会无输出</