如何初始化向量寄存器?

Mah*_*hdi 4 chisel

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

val my_reg = Reg(Vec(n, Bits(32.W)))
Run Code Online (Sandbox Code Playgroud)

我使用来在for循环中访问该寄存器的元素my_reg(i)

现在,我想将此寄存器初始化为零,所以我将变量定义更改为此

val my_reg = Reg(Vec(n, Bits(32.W)), init = UInt(0))
Run Code Online (Sandbox Code Playgroud)

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

chisel3.core.Data does not take parameters
my_reg(i) := io.a(i)
Run Code Online (Sandbox Code Playgroud)

如何定义向量寄存器并正确地对其进行同步初始化?

Chi*_*ley 5

请改用RegInit。我相信以下声明将满足您的要求

    val my_reg = RegInit(Vec(Seq.fill(n)(0.U(32.W))))
Run Code Online (Sandbox Code Playgroud)

向量由32位宽的UInt零的Seq初始化

  • 由于以下原因,将 Vec 更改为 VecInit:`Warning:(235, 34) 对象 Vec 中的方法 do_apply 已弃用(因为 chisel3): Vec(elts) 已弃用,使用 VecInit(elts) 代替 val loadEnableReg = RegInit(Vec(Seq) .fill(config.LoadersNum)(0.U)))` (3认同)

小智 5

看起来在 Chisel 3 中这应该VecInitVec

val initRegOfVec = RegInit(VecInit(Seq.fill(4)(0.U(32.W))))
Run Code Online (Sandbox Code Playgroud)

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