如何初始化向量寄存器?

How to Initialize a Register of Vectors?

我定义了一个这样的向量寄存器

val my_reg = Reg(Vec(n, Bits(32.W)))

然后我使用 my_reg(i).

在 for 循环中访问该寄存器的元素

现在,我想把这个寄存器初始化为零,所以我把变量定义改成这个

val my_reg = Reg(Vec(n, Bits(32.W)), init = UInt(0))

但是,当我想访问这个寄存器的元素时,出现以下编译错误

chisel3.core.Data does not take parameters
my_reg(i) := io.a(i)

如何定义向量寄存器并同步正确地初始化它们?

改为使用 RegInit。我相信下面的语句会做你想做的事

    val my_reg = RegInit(Vec(Seq.fill(n)(0.U(32.W))))

Vector 由 32 位宽的 UInt 零序列初始化

看起来在 Chisel 3 中应该是 VecInit 而不是 Vec:

val initRegOfVec = RegInit(VecInit(Seq.fill(4)(0.U(32.W))))

来源:https://github.com/freechipsproject/chisel3/wiki/Cookbook#how-do-i-create-a-reg-of-type-vec