Rocket - util - Repeater
Posted wjcdx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rocket - util - Repeater相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
Rocket - util - ECC
Rocket - util - AsyncQueue
Rocket - util - PrefixSum
Rocket - util - MaskGen
Rocket - util - ReduceOthers
Rocket - util - Timer