https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA

 
Chisel提供的Valid接口。如果valid为置1,则表明输出的bits有效;反之,则输出无效。
 
参考链接:
 
 
1. Valid是一组用户自定义的输入输出接口
 
类的声明如下:
class Valid[+T <: Data](gen: T) extends Bundle
 
类Valid是一个泛型类(generic class),参数类型为T。
 
首先,T <: Data 表明T在类型结构树(hierarchy)中为Data的子类,就是说传入的T需要是Data类的子类。
其次,+T 在Scala中成为协变(covariance), 意思是,Valid[ChildClassOfT]是Valid[T]的子类,即是Valid[T]的子类型关系,与参数类型T的子类型关系是一致的,所以叫协变。反过来就叫逆变(contravariance),还有个不变(invariance)。有兴趣可以了解一下,没兴趣略过即可。
 
Valid类继承自Bundle,表明自己是一个用户自定义的复合数据类型。
 
包含两个数据成员:
val valid = Output(Bool())
val bits = Output(gen)
 
很好理解,当valid置1时,bits输出有效;当valid置0时,bits输出无效。
 
2. object Valid提供一个创建Valid接口的工厂方法
 
Companion object Valid起到的作用是一个工厂方法,可以省略new的使用,直接创建一个valid对象:
val enq = Input(Valid(gen))
 
3. 附录
 
Valid.scala:

/** Wrappers for valid interfaces and associated circuit generators using them.
*/ package chisel3.util import chisel3._
import chisel3.core.CompileOptions
import chisel3.experimental.DataMirror
import chisel3.internal.naming.chiselName // can't use chisel3_ version because of compile order /** An Bundle containing data and a signal determining if it is valid */
class Valid[+T <: Data](gen: T) extends Bundle
{
val valid = Output(Bool())
val bits = Output(gen)
def fire(dummy: Int = 0): Bool = valid
override def cloneType: this.type = Valid(gen).asInstanceOf[this.type]
} /** Adds a valid protocol to any interface */
object Valid {
def apply[T <: Data](gen: T): Valid[T] = new Valid(gen)
}
 

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

  1. Chisel3 - util - Pipe

    https://mp.weixin.qq.com/s/WeFesE8k0ORxlaNfLvDzgg   流水线,用于添加延迟.   参考链接: https://github.com/freechips ...

  2. Chisel3 - util - LockingArbiter

    https://mp.weixin.qq.com/s/5oAwH3scumARzPidRBfG2w     带锁多入单出仲裁器,输出会被锁定指定的时钟周期.   参考链接: https://githu ...

  3. Chisel3 - util - RRArbiter

    https://mp.weixin.qq.com/s/GcNIFkHfa0gW0HKkKvHZEQ     循环优先级(Round Robin)仲裁器.   参考链接: https://github. ...

  4. Chisel3 - util - Arbiter

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

  5. Chisel3 - util - Queue

    https://mp.weixin.qq.com/s/vlyOIsQxR6bCqDDMtRQLLg   实现队列模块,先入先出(FIFO).   参考链接: https://github.com/fr ...

  6. Chisel3 - util - ReadyValid

    https://mp.weixin.qq.com/s/g7Q9ChxHbAQGkbMmOymh-g   ReadyValid通信接口.通信的双方为数据的生产者(Producer)和消费者(Consum ...

  7. Chisel3 - util - OneHot

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

  8. Chisel3 - util - MixedVec

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

  9. Chisel3 - util - Mux

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

随机推荐

  1. ubuntu安装java方法

    详情请点链接:https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-1 ...

  2. Spring IOC使用详解

    SpringIOC使用详解 一.IOC简介 IOC(Inversion of Control):控制反转,即对象创建的问题.通俗地讲就是把创建对象的代码交给了Spring的配置文件来进行的.这样做的优 ...

  3. 未联网下,在eclipse中编辑xml文件如何自动提示设置

    断网情况下,用eclipse编辑xml文件如何自动提示? 以编辑hibernate中的xml为例: 首先,我们都知道xml提示是引用.dtd文件的. 1.复制这个dtd路径,设置eclipse属性,搜 ...

  4. Spring AOP实现接口验签

    因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...

  5. React实践debug:JSX输出的限制(存疑)

    今天在练习React构建组件的时候遇到一个问题. 由于文档中反复提倡将组件尽可能按功能单位分解复用.在练习用React做一个todolist时候,我把todolist分解成两部分: class Tod ...

  6. Codeforces1176B(B题)Merge it!

    B. Merge it! You are given an array aanna1,a2,…,ana1,a2,…,an In one operation you can choose two ele ...

  7. Django ORM性能优化之count和len方法的选择(非常详细推荐干货)

    接下来我将从源码层面分情况和应用分析我们在计算queryset数据集时是用orm的count函数计算长度还是用len函数计算数据集长度. 首先,我们知道ORM查询queryset数据集是惰性查询的,只 ...

  8. 《C程序设计语言》 练习3-5

    问题描述 练习 3-5 编写函数 itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中.例如,itob(n, s, 16)把整数n格式化成十六进制整数保存在 ...

  9. vscode环境配置(三)——解决控制台终端中文输出乱码

    由于系统终端默认编码为GBK,所以需要修改为UTF-8 方法一 打开cmd输入chcp查看编码格式,查看以及修改如下图所示: 方法二

  10. Istio的流量管理(实操二)(istio 系列四)

    Istio的流量管理(实操二)(istio 系列四) 涵盖官方文档Traffic Management章节中的inrgess部分. 目录 Istio的流量管理(实操二)(istio 系列四) Ingr ...