原理:
在两个功能块(function block)对接时,由于瞬时数据率的差异(如block A的写数据频率为200Mhz,而block B的读数据频率为50Mhz),或数据顺序的差异(如block A发送的数据为顺序发送,block B接收数据的顺序为逆序接收,即从最后一个字节开始接收)等原因,导致这两个模块不能同时工作。为了提高电路的数据处理效能,可以用ping-pong buffer结构连接这两个模块,让它们能够同时工作,本质上也是用面积换速度的思想
乒乓buffer是一种常用的提高数据通路带宽的技术,是一种面积换性能的经典设计。在流水线设计中,灵活应用还可以在保证带宽的基础上解决时序问题。乒乓buffer又叫double buffer,由两块同样大小的memory组成,一乒一乓。放在数据通路的中间,在大部分时候都能保证一块memory收上游的数据,一块memory往下游发数据,一读一写并行操作。
乒乓操作可以看成是另一种形式的流水线技术,不同的是,在两个block之间使用的是两个或者多个的buffer进行切割,是function block级的pipeline。而传统的pipeline是使用寄存器对组合逻辑进行切割,是cycle级的操作
乒乓buffer主要应用在以下场景进行带宽的提升:
- 下游必须等到