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. Git 中 “fatal: Not a valid object name: 'master'.”

    报错: fatal: Not a valid object name: 'master'. 问题主要是,master并不合法,也就是没有 git commit -m "" 提交一个 ...

  2. 真香!PySpark整合Apache Hudi实战

    1. 准备 Hudi支持Spark-2.x版本,你可以点击如下链接安装Spark,并使用pyspark启动 # pyspark export PYSPARK_PYTHON=$(which python ...

  3. Qt自定义文本输入框实现支持输入度分秒和度两种格式(简易无限制输入)

    1.自定义文本输入框 #ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include <QLineEdit> #include "ui_my ...

  4. leetcode-4. 寻找两个正序数组的中位数

    leetcode-4. 寻找两个正序数组的中位数. 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(l ...

  5. 单片机之静态局部变量static

    HL-1慧静电子 上程序: main.c #include <reg52.h>#include "Timer.h" /********P1口低有效*********** ...

  6. [ACdream 1212 New Year Bonus Grant]贪心

    题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金.求总共最多可以产生多少的奖金流动 思路:每次选择没有下级并且有上级的员工a,令它的上级为b ...

  7. Unity接入友盟分享遇到的坑

    最近项目接了一下友盟分享的SDK,中间遇到了几个坑,写下几条注意事项记录一下. 接入之前需要准备友盟开发者账号,相应平台开发者账号(微信.QQ.新浪微博)等... 安卓端: 1.确保 AndroidM ...

  8. 黑马程序员_毕向东_Java基础视频教程——switch语句练习(随笔)

    switch(练习) /* if和 switch 语句很像. 具体什么场景下使用什么语句呢? 如果判断的具体数值不多且符合byte.short.int.char.String类型,虽然两个语句都可以使 ...

  9. python实现简易词频统计-源码

    需求:给瓦尔登湖文章统计单词出现的频率 思路:首先读取文件并以空格分割得到列表,然后利用for循环遍历列表中的元素并把去掉列表元素中的符号,第三步去掉相同的元素,将列表转换为一个字典,最后按照键值对升 ...

  10. Arthas 使用(一) —— 基础命令

    Arthas 简介 Arthas 是 Alibaba 开源的 Java 诊断工具,根据官方介绍,它提供了如下工功能: 官方文档地址: https://alibaba.github.io/arthas/ ...