如何初始化向量寄存器?

时间:2017-04-26 23:10:16

标签: chisel

我已经定义了这样的矢量寄存器

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)

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

2 个答案:

答案 0 :(得分:5)

请改用RegInit。我相信以下声明会做你想做的事情

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

Vector由32位宽的UInt零的Seq初始化

答案 1 :(得分:0)

在凿子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