我正在学习Chisel3。
我对这些代码有一些疑问。
val myVec = Wire(Vec(5, SInt(width = 23))) // Vector of 5 23-bit signed integers.
我想如果我宣布一个向量,我需要写#34; Wire"但是当我看到这些代码时我错了。
class BigBundle extends Bundle {
val myVec = Vec(5, SInt(width = 23)) // Vector of 5 23-bit signed integers.
val flag = Bool()
// Previously defined bundle.
val f = new MyFloat
}
它突然在我的脸上猛击,所以我想知道我什么时候使用" Wire"?
提前致谢。
答案 0 :(得分:5)
这里的关键是Chisel3在“类型”和“值”之间的区别。
Vec
,Bundle
,UInt
,SInt
和Bool
是“类型”的示例。
Wire
,Reg
,Input
,Output
和Mem
是“值”的示例。
上面有BigBundle
:
class BigBundle extends Bundle {
val myVec = Vec(5, SInt(23.W)) // Vector of 5 23-bit signed integers.
val flag = Bool()
val f = new MyFloat // Previously defined bundle.
}
BigBundle
是“类型”,就像Vec(5, SInt(23.W))
是“类型”一样。
如果您希望使用这些类型,可以创建其中一种类型的Wire
,例如。
val myVecWire = Wire(Vec(5, SInt(23.W)))
val myBundleWire = Wire(new BigBundle)
编辑:更新了现代chisel3风格
答案 1 :(得分:4)
您可以将Wire
用于任何可能重新分配值的Chisel节点。
val a = Wire(Bool())
a := Bool(false)
...