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. 附录
 
略。
 

最新文章

  1. IT培训行业揭秘(四)
  2. Python学习之运算符
  3. 文件上传——servlet实现
  4. Unity连Photon服务器入门详解
  5. Java XML解析工具 dom4j介绍及使用实例
  6. oracle----sqlldr用法
  7. OC: Block回调的使用demo
  8. c#获得目标服务器中所有数据库名、表名、列名的实现代码
  9. Vivado学习笔记_002
  10. Linux Shell编程(5)——shell特殊字符(下)
  11. createjs基础
  12. PL/SQL程序中调用Java代码(转)
  13. Linux教程之配置权限受限制的SFTP
  14. 【python原理解析】gc原理初步解析
  15. PerformCallback(珍藏版)
  16. js 验证码倒计时
  17. python爬虫(三)
  18. 从一个多项目Web工程看Eclipse如何导入Gradle项目
  19. nginx配置--event模块
  20. react native 生成APK

热门文章

  1. CGI (通用网关接口)
  2. JPA---Spring-data-JPA---Hibernate
  3. 【HBase】集群搭建/安装部署
  4. Mysql 常用函数(14)- lower 函数
  5. 疑问_网址参数不同的时候改如何选择_MySQL_芬兰站
  6. 前端面试题-http和https区别
  7. Redis的几种集群方式分析
  8. C# 数据操作系列 - 11 NHibernate 配置和结构介绍
  9. Angular中的数据绑定
  10. 02 Redis数据结构基础