打印

【TI DSP分享季】+单RAM实现乒乓操作

[复制链接]
1617|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小木欧尼|  楼主 | 2016-4-30 20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先简单说一下乒乓RAM操作的应用场合,当对数据进行处理时,如果数据来的速率比较快,而处理数据的速率相对较慢,并且在进行数据处理的时候是需要先对进来的数据做一缓冲,等数据量达到一定的程度时再集中对数据进行处理,比如FFT运算就是一个典型的例子。现拿一个64点的FFT运算来举例外说明:假设输入的原始数据的速率是5M,而ADI信号处理器的工作时钟为100M,而每处理一次64点的FFT运算需要30个系统时钟(系统时钟频率是数据速率的20倍),假如现在输入数据数已经达到64个,则信号处理器需要进行FFT运算,当FFT运算结束时,下一个数据有可能已经过了,如果不采取缓存措施,则有可能会导致数据丢失,所以,为了防止上述情况发生,可采用双RAM操作,即:用两块64个存储单元的RAM,当数据来时先对数据进行一下缓存,比如,当前64个数据来时,先把数据缓存在第一块RAM里,当第一块RAM存储满时,这时便以系统时钟速率将第一块RAM的数据给FFT信号处理器,让其完成FFT去处,并将以后的数据缓存到第二块RAM里,由于系统时钟的速率是数据速率的20倍,当第二块RAM里的数据存储满后,FFT处理器有64*20=1280个系统时钟的工作时间,对于处理仅需94(30(FFT运算处理时间)+64(从RAM块里读出64个数据给FFT运算处理器所需的时间))个系统时钟的FFT运算来说已经足够。
图1 传统的双RAM操作框图
    但是,采用传统的双RAM块进行操作时也会存在一定的缺陷,比如,采用两块RAM会占用比较大的面积,这对集成电路的小型化发展带来不利,所以,考虑以上原因,现利用一块RAM完成双RAM乒乓操作的功能。将原来的两个RAM块合成一块,大小变为128*16bit,前64个数据存入地址为0-63的单元里,后64个数据存入64-127的单元中。结构如下图所示。
图2 一片RAM实现双RAM乒乓操作结构图
下图是利用ISE软件仿真的逻辑功能图
图3 功能仿真图
    如上图所示,写地址线的操作只受输入数据的影响,而读地址线则受输入数据个数的影响,当第64个数据到来时,读地址线便从0变到63,并且将64个数据全部送入FFT处理器时,FFT处理器便在系统时钟下进行工作,当写地址线变到0时,便对64-127单元里的数据进行操作,如此循环,便实现一片RAM的双RAM乒乓操作功能。

相关帖子

沙发
小木欧尼|  楼主 | 2016-4-30 20:53 | 只看该作者
假设两个Block分别为B0、B1。

Write之操作准则:写完一个Block加1;写一个Block之前与Read比较,全不同即禁止操作。

Read之操作准则:读完一个Block加1;读一个Block之前与Write比较,全同即禁止操作。

计数使用格雷码。

假设写比读快,在允许写操作的前提下,高低位相同时操作B0,高低位相异时操作B1。

传递需比较之数值时,应提前2、3个周期做好准备。

同时还需要注意4种情况:启动条件、结束条件、结束于一般位置、结束于边界处。

1、写的启动条件

     (1)读地址归零;并且

     (2)数值判断为真;

2、写的结束条件

     (1)写地址到达顶点;或者

     (2)数值判断为假;

3、写结束于一般位置

      当作到达某Block终点处理

4、写结束于边界处

      若结束点在边界处,排除掉一个边界计数值

5、读的启动条件

      检测到写启动

6、读的结束条件

     (1)读到达终点处;并且

     (2)数值吻合。

标签: FPGA小提示

使用特权

评论回复
板凳
小木欧尼|  楼主 | 2016-4-30 20:54 | 只看该作者
第二个分享的是一些小技巧  
资料来自收集   供大家学习

使用特权

评论回复
地板
suzhanhua| | 2016-5-4 21:05 | 只看该作者
以前做fpga可以乒乓接口

使用特权

评论回复
5
suzhanhua| | 2016-5-4 21:08 | 只看该作者
楼主dsp是怎么相应的呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

603

帖子

1

粉丝