查看: 595|回复: 0

[经验] 浅析FPGA设计技巧之乒乓操作

[复制链接]

主题

好友

749

积分

举人

  • TA的每日心情
    擦汗
    2018-10-18 15:28
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2019-3-5 15:38:12 |显示全部楼层
    在搭建视频图像采集系统时,为了达到显示的实时性和同步性,视频流的传输存储通常采用乒乓操作来进行。我这里用的是SDRAM作为存储单元,使用SDRAM中的两片Bank组成一个乒乓块。
    乒乓操作要解决的根本问题不是读写不匹配的问题,而是要用低速器件满足高速数据流的处理问题。这里是针对于视频图像采集时的具体情况分析。
    摄像头输入的视频源为640x480@30Hz(我这里使用的是OV7725),VGA的驱动显示为640x480@60Hz,也就是说,摄像头发送过来一帧,但VGA已经扫描了两帧,这里就会存在问题是,直接把摄像头发送过来的视频流数据显示,可能会出现两帧重叠现象。
    1.jpg
    上图是没有乒乓操作的存储,在t0时刻SDRAM完成了1/2帧的存储,VGA已经显示了1帧,t1时刻SDRAM完成1帧的存储,VGA显示了两帧,到了t2时刻可以看到第一帧和第二帧的是交叠的,在理想的情况下这样显示其实是没有什么问题,即使你的t2时刻第一帧图像和第二帧的图像重合,人的肉眼也察觉不到。但是实际上考虑到硬件本身的因素,摄像头输出的帧率并不能保证完美的640*480@30Hz,这样如果持续单帧存储,那么这样的两帧交叠可能会更严重,乒乓操作可以解决这个问题。
    2.jpg
    我们为了确保当前显示的一帧是完整的一帧,使用两个Bank进行分别存取,在刚开始的时候摄像头给Bank0写入数据,写满Bank0然后切换到Bank3写数据,VGA读取Bank3的数据,读完一帧切换到Bank0读取数据。这样基本上可以保证两帧交叠的概率降低。
    在写模块里加上
    3.jpg
    在读模块里加上
    4.jpg
    然后就可以实现乒乓操作了
    这种写法没有考虑到,如果读写处于同一个Bank操作,还有读写请求同时进行该如何解决。
    SDRAM两片Bank乒乓操作出现的情况及解决办法
    https://www.cnblogs.com/aslmer/p/6097882.html
    使用乒乓操作前后视频效果

    作者 NingHeChuan
    来源 公众号 硅农



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /2 下一条

    手机版|电路城

    GMT+8, 2019-8-17 23:34 , Processed in 0.078029 second(s), 14 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部