microblaze之Video Pattern Generator调试误区

内容:在使用xilinx自带的Pattern Generator的时候,出现了一些莫名的问题,现在做一个总结,如下:

1,首先简单搭一个系统,由于原始的BLOCK图的连线过于复杂,于是简化处理;

2,其中VTC和TPG分别可以工作在free run模式和pass thru模式,这些可以通过寄存器配置。对于TPG来说,如果工作在free run模式,那么XV_tpg_Set_enableInput(&tpg, 0x00)一定要写0,就是禁止输入的流,否则会影响后端的码流速率。

3,如果工作在passthru模式,除了0x98寄存器要写1之外,还要把v_axi4s_vid_out配置成slave模式,原因在于master模式无法自动搜寻SOF信号,这里color bar gen模块和VTC启动的时间肯定不一致,这就导致了axi4s_vid_out模块一直无法LOCK住,

无论你把FIFO的空间增加到4096还是更大。我在论坛里面看到有人遇到同样的问题,他采用的方式在码流输入级加FIFO,我不清楚他的时序是怎么精确控制的。但是却让我想到了master模式的缺陷。

4,如果工作在passthru模式下,那么如下两条程序应当有先后顺序,否则无法正常工作,原因不可知。

    XV_tpg_EnableAutoRestart(&tpg);
    XV_tpg_Start(&tpg);

5,我的系统中是一个时钟传输2个像素,于是遇到了问题,配置TPG的寄存器active hor size和active ver size必须按照实际大小配置,就是不用除以2。但是passthru的参数就需要除以2,这就是两者的不统一。比如1280x720大小的图像,应当如下配置才行。

    XV_tpg_Set_width(&tpg,1280);//原始大小
    XV_tpg_Set_height(&tpg,720);

    XV_tpg_Set_passthruStartX(&tpg, 1);
    XV_tpg_Set_passthruEndX(&tpg, 640);//宽度1280除以2
    XV_tpg_Set_passthruStartY(&tpg, 1);
    XV_tpg_Set_passthruEndY(&tpg, 720);

6,最后需要把TPG的输入流视频数据选通,否则还是输出的pattern generator自带的数据:XV_tpg_Set_bckgndId(&tpg, 0x00);

总结:

1,关于VTC,不管使用master模式,还是slave模式,都需要考虑视频的timing和stream能否同步上,这跟搭建的系统有关;

2,xilinx本身的IP的数据手册描述不详细,有些坑需要自己踩一遍才知道。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值