热度 22
2013-12-6 22:56
2239 次阅读|
0 个评论
前一段时间接到了一个新项目,今天开始着手写逻辑。在数据的同步缓冲设计准备使用乒乓操作,原来仅仅是限于书上看到的,现在要好好的研究一下了。 “ 乒乓操作 ” 是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图 1 所示。 乒乓操作的处理流程为:输入数据流通过 “ 输入数据选择单元 ” 将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM) 、单口 RAM(SPRAM) 、 FIFO 等。在第一个缓冲周期,将输入的数据流缓存到 “ 数据缓冲模块 1” ;在第 2 个缓冲周期,通过 “ 输入数据选择单元 ” 的切换,将输入的数据流缓存到 “ 数据缓冲模块 2” ,同时将 “ 数据缓冲模块 1” 缓存的第 1 个周期数据通过 “ 输入数据选择单元 ” 的选择,送到 “ 数据流运算处理模块 ” 进行运算处理;在第 3 个缓冲周期通过 “ 输入数据选择单元 ” 的再次切换,将输入的数据流缓存到 “ 数据缓冲模块 1” ,同时将 “ 数据缓冲模块 2” 缓存的第 2 个周期的数据通过 “ 输入数据选择单元 ” 切换,送到 “ 数据流运算处理模块 ” 进行运算处理。如此循环。 书本上就笨就看到了这么多内容,我打算是使用一个双口RAM来实现乒乓操作,把RAM的前半部分和后半部分分别用来存储数据。首先写前半段写满后通知外部接口读RAM。当外部接口读前半段RAM时,逻辑往RAM的后半段地址中写入后续数据,再给外部接口发送状态信号,通知其另一部分数据有效。外部接口的地址控制由FPGA完成,只留给外部接口一个读写地址。简化了外部接口,同时使用乒乓操作不会造成读写冲突,保证了数据传输的可靠性。 今天先写到这里,等逻辑设计完成,改日再继续完善。