[X]关闭

关于DDR3三缓存机制的一些疑问

文档创建者:ijhytzea
浏览次数:3975
最后更新:2022-10-15
答疑分类
答疑分类: 4-FPGA开发 » 2-AMD(XILINX)
  • 技术支持
  • FPGA
  • 联系人:陈***
  • 手机号:****
  • 邮箱:****@163.com
  • 板卡型号:xc7a35t的开发板
基于米联客2020版DDR3三缓存方案(02-mig-3buf-test),有以下三个疑问

0.需要确认以下理解是否正确
       根据写入或读出源的场同步复位相应fifo;
       ddr写入或读出是根据相应fifo中当前是否够一次突发进行的;
       写入的优先级大于读出优先级。
1.最大的困惑在于,三块缓存依次去写,总是读取上一个缓存,这个机制是如何避免图像撕裂等情况的发生的?由于每次突发只写一行像素数据,假设当读出速度大于写入速度的时候,那么由于写入速度慢,相同一行数据应该是会被读取多次,这种情况下图像也能没有问题?这种情况该如何处理?
2.那当写入速度大于读出速度的时候,应该是存在某个别刚未读出的数据被覆盖的情况吧?综上1.2不太清楚这个机制的原理是啥。
3.这种三块缓存和两块的乒乓操作有什么区别,原理是啥?感觉多了一块好像没体会到区别。

关于DDR3三缓存机制的一些疑问

文档创建者:ijhytzea
浏览次数:3975
最后更新:2022-10-15

发表评论已发布 1

答疑分类
答疑分类: 4-FPGA开发 » 2-AMD(XILINX)
这位同学的问题非常好,所以我做了长幅度的解答,
没错,同步VS机制同于状态机准备开始写DDR或者读DDR,进入到等待写或者等待读状态机。
当写FIFO的时候,通过FIFO的Counter计数器,当写FIFO中的数据接近或者等于满足一次FDMA设置的burst数据长度,就可以启动FDMA写请求,这个时候可以确保数据是连续的从FIFO中取出来。
同理当读FIFO的时候,通过FIFO的Counter计数器,可以知道当前读FIFO的剩余空间可以满足存放一次通过FDMA从DDR中取出数据的长度,以此作为读请求条件通过FDMA,从DDR中取出数据。

图像显示系统,图像不被撕裂是一个基本要求,那么3帧缓存,和2帧他们有什么差异呢?为什么3帧缓存是大部分显示采集系统用的缓存方案呢?

在我们绝大部分的摄像头采集系统中,输入输出的帧率是不一致,至少有细微的差异,为了方便理解,我们可以假设,写入速度是读出速度的2倍。

那么对于使用2帧乒乓存储的系统,比如写速度是读速度的2倍,这样就存在一个情况,当你在读的时候,你的上一帧每读完的时候,就被新的一帧写入数据破坏了,这样对于动态运动采集,就是有一帧图像,一部分是上一帧数据,一部分是最新的数据,这样图像就是不完整的,这就会发生图像撕裂的情况

所以我们需要3帧缓存,3帧缓存设计中,我们设计了写同步计数器,和读同步计数器。当我们的写入速度小于读的速度时候,由于写通道的计数器更新的慢,我们读通道的更新,只要晚于1帧的写通道,就永远不会读到正在更新的的缓存,并且写通道也永远不会写入到正在读出的缓存,因为即便是写通道快写结束了,还有一帧缓存空间剩余的。

这样就衍生出了另外一个问题,当写通道的速度慢于读通道,那么读通道会采取重复读帧的方式工作

那么当写速度大于读通道的时候,我们应该用慢的读通道计数器工作,这样,写通道,即便再快,也不会去破坏正在读的通道的数据

关于DDR3三缓存机制的一些疑问

文档创建者:ijhytzea
浏览次数:3975
最后更新:2022-10-15
答疑分类
答疑分类: 4-FPGA开发 » 2-AMD(XILINX)
感谢米联客快速、专业的支持与回复,非常给力!已经理解!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则