孩子都能学会的FPGA:第十四课——FPGA的乒乓操作

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真(前提是安装了modelsim),降低了初学者的门槛。如需整个工程请留言(WX:Blue23Light),不收任何费用,但是仅供参考,不建议大家获得资料后从事一些商业活动!

乒乓操作法是FPGA 开发中的一种数据缓冲优化设计技术,可以看成是一种形式的流水线技术。输入的数据流在通过“输入数据流选择单元”时,时间等分地将数据流分配到两个数据缓冲模块内。数据缓冲模块可以是FPGA 中的任何存储模块,如双口RAM、单口RAM 和FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1; 在第二个缓冲周期,通过“输入数据流选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第一个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运算处理模块”进行运算处理:而在第三个缓冲周期,通过“输入数据流选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第二个周期的数据通过“输出数据流选择单元”的切换,送到“数据流运算处理模块”进行运算处理,如此循环往复。

简单的解释就是我们常说的工厂里面的两班倒,把工人分成白班和夜班,白班的工人是白天上班,晚上休息,夜班的工人是白天休息,晚上上班,这样就能保证机器是时刻工作着,产生最大的效益。而FPGA的乒乓操作一般是两个缓存,数据交替着写入两个缓存,同时交替着读出缓存,让数据以最大的带宽进行传输。

乒乓操作的好处就是用两个缓存来处理数据,而且在同一个时刻一个缓存只负责写,另一个缓存只负责读,不会对一个缓存同时进行读写,从而降低了控制的难度!如果仅仅读数据流进行控制,双口RAM或者FIFO都可以实现,但是要同时进行读写,很容易引起读写的冲突!

将起来可能不太直观,下面同时一个工程实例来说明。要求是系统时钟是100MHz,低电平复位,一个RAM用于0-255递增数据的读写,另一个RAM用于255-0递减数的读写,最终输出的是0-255-0的三角波。

设计如下所示,主要通过weaweb信号控制数据的读写,weaweb是高电平的时候写ram,低电平的时候读ramaddraaddrb分别是RAM的读写地址信号,dinadinb分别是RAM的输入信号,doutadoutb分别是ram的输出信号。

设计要点就是weaweb一定是相反的,就是wea高的时候web一定低,就是wea低的时候web一定高,就是ram0写的时候ram1一定是在读,ram0读的时候ram1一定是在写!因为用到的ram都是256深度的,地址计数都是0-255,&addra的意思是对addra的每一位取&,就是addra的8位全部都是1的时候&addra才是1,这时候将wea反转。

其实addra和addrb是同步一直累加的,当累加到最大值255的时候清零再重新进行累加。

dina在wea为高的时候产生0-255的递增数,在wea为低的时候保持为0。dinb在web为高的时候产生255-0的递减数,在web为低的时候保持为255。

把两个ram例化一下。

最后将两个ram中输出的数据合并后输出,之所以把wea和web都打一拍,是因为ram中读数据会延迟一拍,就是在当前时刻读addra=0地址的数据,必须要等到下个时钟周期才能把数据读出来。

双击sim目录下的top_tb.bat文件,完成自动化的仿真。

仿真波形如下所示。

采用模拟信号的方式看更明显,dina输入的是递增数,dinb输入的是递减数,而dout输出的是三角波。

本实例主要是演示FPGA的乒乓操作,实用性可能不太大,在实际的应用中,比如图像的处理,常常用到乒乓操作,就是数据边传输边处理。后续在图像处理的专项中会详细介绍。

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值