4端口DDR控制器的设计与实现


1

    在视频图像显示界面中,需要用到DDR作为视频缓存的存储器,在一路视频输入的过程中,我们采用DDR的两个BANK的乒乓操作来实现视频的缓存,实现了数据的无损耗缓存和显示,这种方法已经得到了广泛的应用,但是,当我们是两路视频的输入呢,两个DDRBANK已经无法满足我们的需求,一个乒乓的循环操作满足不了两路数据输入,此时我们会想到一个DDR4BANK,我们可以采用两个BANK作为一路视频的输入,另外两个BANK作为另外一路的输入,这样就可以实现两路视频的循环缓存了。


2

     我们如何实现两路视频的仲裁机制呢,一路视频的操作影响另外一路视频的输入呢,此时我们就需要在整个系统中引入一个仲裁机制来仲裁两路视频的循环操作。我们知道在一路视频中的整体架构如下图所示。



image.png

我们采用的是写FIFO作为输入数据的临时缓存,读FIFO作为LCD显示的临时数据,保证输入数据和输出的数据的完整性。而在4端口DDR控制器中,我们可以采用再添加一路视频的数据缓存FIFO,作为数据的临时缓存,作为第二路视频数据。系统的整体架构如下图所示。

image.png


两路视频输入相对于一路视频输入其实并没有添加更多的东西,只是添加了两个FIFO缓存,一个双路读写DDR的仲裁模块,仲裁模块主要是完成了控制视频1和视频2的写入和读取DDR2。


3


当一路视频视频1进行输入时,我们将视频的数据写入FIFO中,如果DDR2读写空闲,此时我们就占用DDR2的控制资源,将FIFO中的数据写入DDR2中,另一路视频视频2数据只能进行写进FIFO中,等待视频1的对DDR操作的完成,等视频1FIFO中的数据写入完成之后,释方对DDR2的占用,视频2将占用DDR控制器,将视频2FIFO中的数据写入DDR2中,如此循环操作,完成两路视频的循环操作,将数据从DDR读取也是同样的道理,只是因为外部显示的时序比较缓慢,而DDR读取的时序比较快速,所以需要采用读FIFO来缓存行DDR中读取的数据,匹配数据时序的不同。


如果是为了实现更多路视频的实时显示,只是添加更多的FIFO缓存和修改仲裁模块,如果是多路视频,可以采用设置视频输入的优先级,完成一路一路视频的输入缓存,来完成多路视频数据的缓存。


我做这个项目的初衷是为了实现双目摄像头的实时显示,欢迎对此有兴趣的朋友一起交流和学习。


工程文件和仿真下载:工程为Quartus文件,版本为13.0。链接:http://pan.baidu.com/s/1eR9fJCe 密码:hk6r





  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值