RTL设计思想之乒乓操作

2 篇文章 0 订阅
2 篇文章 0 订阅

在完成了基本verilog等基本知识的学习之后,开始接触到一些RTL设计的思想,目前主要的学习资源是中国MOOC上邸志雄老师的《芯动力——硬件加速设计方法》,本篇博客可以算作是乒乓操作部分的学习笔记。在学习到这部分的内容的时候,我遇到了一些困难,通过反复观看课程视频,以及查阅各种资料,总算是能够理解乒乓操作的思想,以下是我总结的关于乒乓操作的一些知识点。

一、什么是乒乓操作?

乒乓操作就是利用一个输入数据流选择器和一个输出数据流选择器,在一个操作周期内,将数据存储到一个数据缓冲模块的同时,将缓冲模块中的数据读出。具体的工作过程可以参考邸老师在MOOC上的课程第二章第三节。这是RTL设计中用面积换速度的一种方法。

二、为啥要进行乒乓操作?如果没有乒乓操作会怎么样?

(1)设想一个应用场景,现在我需要对一串数据交给显示器显示,如果不采用乒乓操作,我们可以直接将数据给到RAM,等到RAM读完了一帧数据,然后显示器从RAM里读取数据进行显示,如图(a)所示。这样的操作存在一个问题,RAM必须等显示器读取完一帧的数据之后才能开始存储下一帧的数据,RAM在存储数据的时候显示器也不能显示,也就是说,RAM和显示器要相互等待。

如果采用乒乓操作就能避免这个问题,如图(b)所示,数据轮流存储在上下两个RAM中,显示器也轮流从上下两个RAM中读数据,以此实现不间断的显示。对比上下两图,可以发现,采用乒乓操作要多用一个RAM,这就是“用面积换速度”。

以上便是乒乓操作的第一个优点:可以实现数据的无缝缓冲(“缝”就是RAM存储的时间以及显示器读取的时间)

(2)节约缓冲区空间

这里可以参考邸志雄老师课上的例子。WCDMA基带中,一个帧包括15个时隙(不太懂时隙的意思,我的理解是一个帧有15个间隔)。有的时候需要将一整个帧缓冲一个时隙,如果采用一个缓冲区进行缓冲的话,就需要3.84M*10ms=38400位的宽度。如果使用乒乓操作,就不用那么大的空间,使用两个能够存下1个时隙数据的RAM即可,也就是38400/15位。让他们轮流读写。这里这个时隙很重要,多少个时隙就能减少多少倍的缓冲区长度。

(3)用低速模块处理高速数据流

如下图,在两个数据缓冲模块之后分别插入了一个数据预处理模块,这里用的数据缓冲模块需要为双口RAM,这样会带来一个好处,在数据缓冲模块进行写数据的时候,也可以从已经写好的内容中进行读取。举例说明,在某个周期中,数据预处理模块2正在读数据,如果使用的是单口RAM,此时我们的数据预处理模块不能读数据,只能等数据缓冲模块1读好数据,等下一个周期才能从中读取数据。如果我们采用了双口RAM,此时,我们就不用等待,等到数据缓冲模块读了一些数据之后,我们就能开始从中读数据。平均来看,数据预处理模块读取数据的时间比我们使用单口RAM的情况下增加了一倍。也就是说,我们的数据预处理模块的速率要求可以降低一倍。这样一来,就做到了用低速模块处理高速的数据流。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lichong_aaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值