最近在xilinx的zynq平台上做视频方面的测试,使用VDMA、VTC及VID_Out IP等模块,刚开始自己写了个VGA时序模块测试VDMA的配置是正常的,图像能显示,但是图像对不齐,这是自己写的IP 对AXI STREAM总线的tlast处理的有问题,只是测试用没在深入修改,后续项目中打算使用xilinx自带的Ip来完成,所有测试了上边说的那些IP。
在测试中一直没有视频显示到VGA监视器上。因为之前VDMA模块已经测试过了,从DDR读取数据到PL是正常的,所以把精力放到了VTC及VID_OUT模块的配置上。删了加、加了删、重复了无数遍,参照官方的建议也做了相应处理还是不行。
官方建议如下:
-------------------------------------------------------------------------------
Solution
In situations where the AXI4 Lite interface is available for the AXI4-Stream to Video Out, the core can be reset or enabled through this software.
FID should be grounded for non-interlaced images.
If the core is not properly reset, there will not be output signals.
- AXI4-Stream to Video Out should be set to Master.
- mm2s_HSIZE and mm2s_Stride in the VDMA should be set to bytes per line, not pixels per line.
When the Video Data path contains Video Scaler IP:
- Ensure the input frame size of AXI4-Stream to Video Out is correct.
- Ensure that the Clock frequency is fast enough to give Video Scaler enough time to process pixels.
最后找到原因是因为VID_OUT模块数据输入总线宽度是24位(RGB888),而VDMA输出的数据总线宽度是32位,这就没法连接上,我把VDMA的数据输出改为了24位,但是配置行数据大小时还是按32位配置的,导致VDMA输出的数据与VTC的脉冲对不起来,VID_OUT模块一直对不齐数据,导致模块无输出。