首页 > 其他 > 详细

Rocket - util - Repeater

时间:2019-06-09 01:38:42      阅读:112      评论:0      收藏:0      [点我收藏+]

https://mp.weixin.qq.com/s/xyEq3DgYuf2QuNjssv8pkA

 
简单介绍Repeater的实现。
 
?技术分享图片?
 
1. 基本功能
 
A Repeater passes it‘s input to it‘s output, unless repeat is asserted.
When repeat is asserted, the Repeater copies the input and repeats it next cycle.
 
2. 实现
 
1) io
 
?技术分享图片?
a. repeat:标识是否在输出重复输入;
b. full:标识是否存有待repeat的数据;
c. enq:输入数据的接口;
d. deq:输出数据的接口;
 
2) saved
 
存放要repeat的数据:
?技术分享图片?
 
只有在io.repeat为真时,才存入数据:
?技术分享图片?
 
io.enq.fire()需要对方valid,自己ready:
?技术分享图片?
这个稍后再做讨论。
 
3) full
 
full标志着是否存有要重复的数据,初始值为false:
?技术分享图片?
 
只有当io.repeat为真时,才能存入要重复的数据,并标记full为真:
?技术分享图片?
 
只有当io.repeat为假时,不再重复数据,已存的数据被清空:
?技术分享图片?
 
如果有数据则输出已存储的数据,如果没有则直接输出输入的数据:
?技术分享图片?
 
4) io.deq.valid
 
?技术分享图片?
a. 如果有数据(full),则可以输出已存的数据;
b. 如果无数据,则根据是否有数据输入来决定是否可以输出数据;
 
5) io.enq.ready
 
io.enq.ready代表可以输入数据。
?技术分享图片?
包含两个条件:
a. 当前没有缓存数据;
b. 当前可以输出数据;
 
没有缓存数据,说明io.repeat为假,此时透传数据,所以需要依赖于io.deq.ready;
已有缓存数据,说明io.repeat为真,此时重复数据,所以不可以再输入;
 
6) io.full
 
io.full把full的状态输出:
?技术分享图片?
 
3. 附录
 
略。
 

Rocket - util - Repeater

原文:https://www.cnblogs.com/wjcdx/p/10992219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!