乒乓操作
乒乓操作”是一个常常应用于数据流控制的处理技巧。通过乒乓操作实现低速模块处理高速数据的实质是:通过 DPRAM 这种缓存单元实现了数据流的串并转换,并行用 “ 数据预处理模块 1” 和 “ 数据预处理模块 2” 处理分流的数据,是面积与速度互换思想的体现!
处理流程:
输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(DPRAM) 、单口RAM(SPRAM) 、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”。在第2 个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1 个周期数据通过“输出数据选择单元”的选择,送到“数据流运算处理模块”进行运算处理。在第3 个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2 个周期的数据通过“输出数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
乒乓操作的最大特点是通过 “ 输入数据选择单元 ” 和 “ 输出数据选择单元 ” 按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到 “ 数据流运算处理模块 ” 进行运算与处理。把乒乓操作模块当作一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。
乒乓操作的第二个优点是可以节约缓冲区空间。比如在 WCDMA 基带应用中, 1 个帧是由 15 个时隙组成的,有时需要将 1 整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时 1 个时隙进行处理。这时缓冲区的长度是 1 整帧数据长,假设数据速率是 3.84Mbps , 1 帧长 10ms ,则此时需要缓冲区长度是 38400 位。如果采用乒乓操作,只需定义两个能缓冲 1 个时隙数据的 RAM( 单口 RAM 即可 ) 。当向一块 RAM 写数据的时候,从另一块 RAM 读数据,然后送到处理单元处理,此时每块 RAM 的容量仅需 2560 位即可, 2 块 RAM 加起来也只有 5120 位的容量。
另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。如图 2 所示,数据缓冲模块采用了双口 RAM ,并在 DPRAM 后引入了一级数据预处理模块,这个数据预处理可以根据需要的各种数据运算,比如在 WCDMA 设计中,对输入数据流的解扩、解扰、去旋转等。
乒乓buffer是一种常用的提高数据通路带宽的技术,是一种面积换性能的经典设计。在流水线设计中,灵活应用还可以在保证带宽的基础上解决时序问题。乒乓buffer又叫double buffer,由两块同样大小的memory组成,一乒一乓。放在数据通路的中间,在大部分时候都能保证一块memory收上游的数据,一块memory往下游发数据,一读一写并行操作。
乒乓buffer主要应用在以下场景进行带宽的提升:
- 下游必须等到上游数据全部写完或者积累到某个程度才能开始读
- 上游必须等到下游数据全部读完或者读到某个程度才能开始写
串并转换
串并转换是 FPGA 设计的一个重要技巧,它是数据流处理的常用手段,也是面积与速度互换思想的直接体现。串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用 寄存器、 RAM 等实现。前面在乒乓操作的图例中,就是通过 DPRAM 实现了数据流的串并转换,而且由于使用了 DPRAM ,数据的缓冲区可以开得很大,对于数量比较小的设计可以采用寄存器完成串并转换。如无特殊需求,应该用同步时序设计完成串并之间的转换。比如数据从串行到 并行,数据排列顺序是高位在前,
流水线操作
流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是 “ 单流向 ” 的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法来提高系统的工作频率。
参考:https://blog.csdn.net/weixin_30724853/article/details/94772770
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!