FPGA乒乓操作疑问
乓操作的最大特点是通过 “ 输入数据选择单元 ” 和 “ 输出数据选择单元 ” 按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到 “ 数据流运算处理模块 ” 进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。
请问,这种一笔数据进去一笔数据出来的,何必不直接给到处理模块,要乒乓操作来干嘛?能给一个实际的例子吗?
因为像5级流水线,它流水的处理阶段,把取值译码执行... 这几个阶段来分片流水,但是乒乓操作并不是流水处理模块啊。
求大神回答,谢谢!
我用到的功能是无缝连接,比如你下发 数据1,数据2, FPGA需要处理数据1 ,数据2,并且两个处理之间不可间断,那我处理完成数据1,应该在FPGA内已经有数据2的值,而不是通过CPU再把数据2的值传输过来,那段传输时间是不允许的,我在处理2的同时,CPU会把数据再发送到数据1模块,这样我的处理和CPU的发送是不冲突的,两个同时进行,但多了一块ram,其实就是用面积换取速度。
乒乓操作可以保证处理器每次都访问到当前处理的整个帧的数据, 而不是接到多少处理多少. 比如fft需要遍历整个帧, 必须可以同时访问到该帧所有数据.
而如果是来多少数据处理多少的做法, 处理器依然需要另外的ram来存储当前帧, 同时在处理期间不能继续输入数据, 造成速度减半
乒乓操作就相当于两级流水
假如你使用乒乓操作来进行数据处理,那么假如数据来的频率是100M,而一个缓存加处理的频率是50M,那么使用乒乓操作就可以将处理频率变为100M
乒乓操作至少需要2个缓存。
首先,我们知道,如果后级系统需要一定的数据处理时间,前级系统是不能连续送数据给后级,送了一批数据后,要等待足够的时钟周期才可以送下一批,所以你说的连续送数据的方法是不行的,而乒乓操作,恰恰是解决这个问题的方法。
刚才说到2个缓存,前级系统送数据的通道,是不断在这两个缓存间切换的,先送满第一个缓存,然后再切换到第二个缓存继续送,同时第一个缓存将数据送至后级系统,如果我们把2个缓存看成1个黑盒通道,那么这样就存在了一个假象:
前级系统连续送数据给黑盒通道,而黑盒通道也连续送数据给后级系统。
这样就实现了前级系统“连续”送数据给后级系统。
类似于流水线吧,一边采集数据一边处理数据
如果我的猜测没错的话, 小编对"处理"的理解有点偏差, 对数据进行处理的过程并不是给什么处理什么, 而是在多数情况下需要同时能够访问到缓存下来的一整帧的数据
