https://mp.weixin.qq.com/s/g7Q9ChxHbAQGkbMmOymh-g

 
ReadyValid通信接口。通信的双方为数据的生产者(Producer)和消费者(Consumer)。
 
通信协议:
1. Producer有数据要发送,则把Valid位置位为1;
2. Consumer准备好接收了,则把Ready为置位为1;
3. Producer发现Ready为1后,开始发送数据;
4. Producer发送完成后,把Valid置位为0;
5. 不排除Producer在等待一定时间后,未等到Ready置位,而把Valid清除;
6. Ready和Valid没有先后关系;
 
参考链接:
 
1. ReadyValidIO
 
这是一个用户自定义的数据类型,继承自Bundle。
 
其中:ready/valid分别代表ready和valid位;bits代表要传递的数据;
 
伴生对象object ReadyValidIO内部定义了一个隐式内部类,用于向ReadyValidIO类添加方法。
 
类的名字就叫做AddMethodsToReadyValid,已经表达了这个类的用意。与直接把这些方法定义到ReadyValidIO类中是等效的。这种定义隐式类的方法,是一种为现有类扩展方法的机制。
 
这四个方法代表了针对ReadyValidIO的四种操作,一种状态:
a. 有数据要发:enq()
b. 数据发完(无数据要发): noenq()
c. 有数据要收:deq()
d. 数据收完(无数据要收):nodeq()
e. 正在发送状态:fire()
 
2. Decoupled
 
 
3. Irrevocable
 
 
4. EnqIO/DeqIO
 
 
EnqIO创建Producer侧的接口;DeqIO创建Consumer一侧的接口。Flipped是把方向反转的意思。
 
EnqIO的方向如下:
这个方向是以Producer的角度来定义的。
 
DeqIO的方向为:
a. ready为Output;
b. valid为Input;
c. bits为Input;
这是以Consumer的角度来定义的。
 
 
 
 
 

Chisel3 - util - ReadyValid的更多相关文章

  1. Chisel3 - util - Arbiter

    https://mp.weixin.qq.com/s/7Y23gV6yPvtmvKHTo2I8mw   基于ReadyValid接口实现的多入单出仲裁器.   参考链接: https://github ...

  2. Chisel3 - util - OneHot

    https://mp.weixin.qq.com/s/Jsy8P3m9W2EYKwneGVekiw   独热码相关的电路生成器.   参考链接: https://github.com/freechip ...

  3. Chisel3 - util - MixedVec

    https://mp.weixin.qq.com/s/mO648yx4_ZRedXSWX4Gj2g   可以容纳不同类型的变量的向量.   参考链接: https://github.com/freec ...

  4. Chisel3 - util - Mux

    https://mp.weixin.qq.com/s/TK1mHqvDpG9fbLJyNxJp-Q   Mux相关电路生成器.   参考链接: https://github.com/freechips ...

  5. Chisel3 - util - Lookup

    https://mp.weixin.qq.com/s/g85Si6n37D9PYfR5hEoRQQ     实现一个查找逻辑.   参考链接: https://github.com/freechips ...

  6. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...

  7. Chisel3 - util - Math vs. CircuitMath

    https://mp.weixin.qq.com/s/8lC8vQnBdKW9C39H0QFFkA     对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现.   ...

  8. Chisel3 - util - LFSR16

    https://mp.weixin.qq.com/s/DSdb4tmRwDTOki7mbyuu9A     实现16位线性反馈移位寄存器.可用于生成简单的伪随机数.     ​​     ​​   参 ...

  9. Chisel3 - util - Bitwise

    https://mp.weixin.qq.com/s/MQzX1Ned35ztz0vusPdkdQ   比特相关的操作.   参考链接: https://github.com/freechipspro ...

随机推荐

  1. 001_python变量,if,while

    Python介绍 python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间, ...

  2. CSS躬行记(10)——CSS方法论

    方法论是一个哲学术语,会对一系列具体的方法进行分析研究.系统总结并最终提出较为一般性的原则.CSS方法论是一种面向CSS.由个人和组织设计.已被诸多项目检验且公认有效的最佳实践.这些方法论都会涉及结构 ...

  3. CF#214 C. Dima and Salad 01背包变形

    C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...

  4. PC端软件配置

    一,cmder软件安装 二,Snipaste软件安装 三,vwmare虚拟机安装 四,sublime安装 五,notepad++安装 六,Python环境 anaconda navigator安装 七 ...

  5. 贝叶斯优化(Bayesian Optimization)只需要看这一篇就够了,算法到python实现

    贝叶斯优化 (BayesianOptimization) 1 问题提出 神经网咯是有许多超参数决定的,例如网络深度,学习率,正则等等.如何寻找最好的超参数组合,是一个老人靠经验,新人靠运气的任务. 穷 ...

  6. 聚类算法——DBSCAN算法原理及公式

    聚类的定义 聚类就是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小.聚类算法是无监督的算法. 常见的相似度计算方法 闵可夫斯基距离M ...

  7. Java基础之数据类型

    一.数据类型 基本数据类型介绍 byte 1字节 char 2字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节 以上有Java中八大基本类型的7种, ...

  8. lonic常用组件之五------按钮

    一.Ionic常用组件之五------按钮 <ion-button  color="主题色"   size="small/large"  expand=& ...

  9. Go语言学习目录

    第一章 Go环境搭建 1.1 Linux搭建Go环境 1.2 Mac搭建Go环境 1.3 Windows搭建Go环境 第二章 Go语言特性 2.1 Go特征 2.2 Go变量类型 2.3 Go内置函数 ...

  10. Kali Linux 2020.1安装以及安装后要做的事

    Kali Linux是基于Debian的Linux发行版,预装了许多渗透测试软件,让大家从各种繁琐的软件安装中解脱出来,专注于测试本身. 本文章介绍了如何安装目前最新的2020.1版本,以及安装好后补 ...