将vec分配给UInt端口

时间:2013-10-15 03:39:01

标签: scala hdl chisel

如果我有一个io端口是io.myoutput = UInt(宽度= 840)

然后我有一个val a = vec.fill(140){UInt(width = 6)}

如何将整个vec分配到输出端口?我尝试用

进行循环
for (i = 0 until 140){ 
io.myoutput(i*6+5,i*6) := a(i)}

但它给了我

finished inference (1)
start width checking
finished width checking
started flattenning
finished flattening (2)
Lbi.scala:37: error: reassignment to Node in class TutorialExamples.Lbi
Lbi.scala:37: error: reassignment to Node in class TutorialExamples.Lbi
Lbi.scala:37: error: reassignment to Node in class TutorialExamples.Lbi

由于

1 个答案:

答案 0 :(得分:1)

val x = Vec.fill(140){UInt(1, width=6)}
io.myoutput := x.toBits

“toBits”方法就是您想要的。它将Vec压平成原点。

我不确定导致错误消息的确切原因,但一般情况下,您无法真正重新分配Chisel中的线路中的特定位。

val y = Bits(0,width=32)
y(1) := UInt(0)
y(3) := UInt(3)
etc.

这将引发错误。