我正在学习Chisel3。

我对代码有一些疑问。

val myVec = Wire(Vec(5, SInt(width = 23)))  // Vector of 5 23-bit signed integers.

我以为如果声明一个向量,我需要写“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

}

它突然打在我的脸上,所以我想知道何时使用“电线”?

提前致谢。

最佳答案

这里的关键是Chisel3中“类型”和“值”之间的区别。
VecBundleUIntSIntBool是“类型”的示例。
WireRegInputOutputMem是“值”的示例。

使用上面的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风格

关于chisel - 关于凿子:Vec & Wire的语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40816397/

10-11 23:54