sungngai 发表于 2015-5-19 13:20:13

乒乓操作可以达到低速模块处理高速数据流的问题


文档《FPGA设计的四种常用思想与技巧》中提到“乒乓操作还可以达到用低速模块处理高速数据流的效果”
如下:


另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。如图2所示,数据缓冲模块采用了双口RAM,并在DPRAM后引入了一级数据预处理模块,这个数据预处理可以根据需要的各种数据运算,比如在WCDMA设计中,对输入数据流的解扩、解扰、去旋转等。假设端口A的输入数据流的速率为100Mbps,乒乓操作的缓冲周期是10ms。以下分析各个节点端口的数据速率。

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数据。

仔细分析就会发现到第3个缓冲周期时,留给DPRAM1读取数据并送到“数据预处理模块1”的时间一共是20ms。有的工程师困惑于DPRAM1的读数时间为什么是20ms,这个时间是这样得来的:首先,在在第2个缓冲周期向DPRAM2写数据的10ms内,DPRAM1可以进行读操作;另外,在第1个缓冲周期的第5ms起(绝对时间为5ms时刻),DPRAM1就可以一边向500K以后的地址写数据,一边从地址0读数,到达10ms时,DPRAM1刚好写完了1Mb数据,并且读了500K数据,这个缓冲时间内DPRAM1读了5ms;在第3个缓冲周期的第5ms起(绝对时间为35ms时刻),同理可以一边向500K以后的地址写数据一边从地址0读数,又读取了5个ms,所以截止DPRAM1第一个周期存入的数据被完全覆盖以前,DPRAM1最多可以读取20ms时间,而所需读取的数据为1Mb,所以端口C1的数据速率为:1Mb/20ms=50Mbps。因此,“数据预处理模块1”的最低数据吞吐能力也仅仅要求为50Mbps。同理,“数据预处理模块2”的最低数据吞吐能力也仅仅要求为50Mbps。换言之,通过乒乓操作,“数据预处理模块”的时序压力减轻了,所要求的数据处理速率仅仅为输入数据速率的1/2。

问题是为什么“DPRAM1最多可以读取20ms时间”,DPRAM1的后500k数据是什么时候读出来的,具体整体的读写操作是怎样的?

masonson 发表于 2015-6-1 16:55:40

真的没啥人做乒乓操作的,问题都得不到解决。

.赵 发表于 2015-6-1 17:23:36

按照 楼主转帖的字面意思   DPRAM1 是同一时间读写操作都是进行的~   除了一开始的第一个周期,DPRAM1 的 1Mb 数据没有存满,所以比较慢。   之后DPRAM1是满负荷工作的话,当DPRAM2从A得到数据的时间, C1依然可以从DPRAM1获得数据进行工作。 C1 的 工作时间是100%,但是工作的数据流量只有50%。运行的速度只需要50%就可以了。   不好理解其实主要是“读写”这种词,和方向有关,这篇文章写的不清楚。
页: [1]
查看完整版本: 乒乓操作可以达到低速模块处理高速数据流的问题