如何将 UInt() 拆分为 UInt 的 Vec 来进行子词提取和赋值?

How to split an UInt() into a Vec of UInt to do subword extraction and assignment?

我有一个这样声明的 16 位寄存器:

val counterReg = RegInit(0.U(16.W))

我想像这样对模块输出进行索引双位赋值:

//..
  val io = IO(new Bundle {
     val dibit = Output(UInt(2.W))
  })
//..
var indexReg = RegInit(0.U(4.W))
//..
io.dibit = vectorizedCounter(indexReg)

但是我不知道如何申报vectorizedCounter()

我找到了一些使用 Bundles 的示例,但对于 Vector 我不知道。我无法用 UInt():

做到这一点
val counterReg = RegInit(UInt(16.W))
//...
io.dibit := counterReg(indexReg*2.U + 1.U, indexReg*2.U)

您可以动态移位并提取结果:

io.dibit := (counterReg >> indexReg)(1, 0)