1.软件版本
ISE14.7
2.本算法理论知识
乒乓处理操作的原理如下所示:
乒乓操作的处理流程为:输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM) 、单口 RAM(SPRAM) 、FIFO等。
在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块 1”;在第 2 个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块 2”,同时将“数据缓冲模块 1”缓存的第 1 个周期数据通过“输入数据选择单元”的选择,送到“数据流运算处理模块”进行运算处理;在第 3 个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块 1”,同时将“数据缓冲模块 2”缓存的第 2 个周期的数据通过“输入数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。
假设A 端口处输入数据流速率为100Mbps,在第1个缓冲周期10ms内,通过“输入数据选择单元”,从B1到达 DPRAM1。B1的数据速率也是100Mbps,DPRAM1要在10ms内写入1Mb数据。同理,在第2个10ms,数据流被切换到DPRAM2,端口B2的数据速率也是100Mbps,DPRAM2在第2个10ms被写入1Mb数据。在第3个10ms,数据流又切换到 DPRAM1,DPRAM1被写入1Mb数据。
通过乒乓操作实现低速模块处理高速数据的实质是:通过 DPRAM 这种缓存单元实现了数据流的串并转换,并行用 “ 数据预处理模块 1” 和 “ 数据预处理模块 2” 处理分流的数据,是面积与速度互换原则的体现。
这里,考虑到版本问题,我使用了全verilog进行设计,也就是说,我使用了verilog设计了其中使用的寄存器。实现存储器的功能。
另外,由于数据处理单元是最后的数据处理模块,这个根据实际情况而定,因此,这里我们只设计数据处理模块之前的所有的模块。
整个系统主要包括,输入选择模块,两个RAM模块,输出选择模块,以及最后的控制器模块。
下面简单的对各个模块进行介绍:
tops:即整体的乒乓操作模块;
controller:控制器,即通过产生一个使能信 ,控制两个RAM的读写时序。其主要的功能为:
通过产生一个周期性变化的使能信 ,使得两个RAM达到如下的功能:
在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块 1”;在第 2 个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块 2”,同时将“数据缓冲模块 1”缓存的第 1 个周期数据通过“输入数据选择单元”的选择,送到“数据流运算处理模块”进行运算处理;在第 3 个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块 1”,同时将“数据缓冲模块 2”缓存的第 2 个周期的数据通过“输入数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
MUXER:输入选择模块
即根据控制器的输出使能信 ,产生控制RAM读写的使能。使得实现写入,读取操作交替工作的过程
RAMer:读写存储器。可以将输入的数据进行保存
通过两个RAM同时工作,实现这么一个过程,即当一个RAM在写的时候,另外一个RAM进行读取并开始操作。
MUXER2:输出选择模块
即实现RAM输出模块的交替输出功能。
3.部分源码
4.仿真分析
A02-45
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!