0

我正在尝试在 CSR 中创建一个新寄存器。到目前为止,我可以成功地从测试程序向它写入值,但是当我尝试写入 32 位或更多位的东西时,火箭芯片会添加前导 1。例如,如果我尝试将其编写0x800000000xffffffff800000000. 我已经追踪了数据路径,并且数据进入 CSR 时已经损坏。任何关于实际情况的指导都会很棒。

下面是我如何实现寄存器。

val addr_PCStart = 0x800
val reg_PCStart = RegInit(0.U(csrFile.vaddrBitsExtended.W))

val addr_PCEnd = addr_PCStart + 1
val reg_PCEnd = RegInit(0.U(csrFile.vaddrBitsExtended.W))

csrFile.read_mapping += addr_PCStart -> reg_PCStart
csrFile.read_mapping += addr_PCEnd -> reg_PCEnd

when(csrFile.csr_wen) {
 when (csrFile.decoded_addr(addr_PCStart)) {
  reg_PCStart := csrFile.wdata(csrFile.vaddrBitsExtended-1,0)
 }

 when(csrFile.decoded_addr(addr_PCEnd)) {
  reg_PCEnd := csrFile.wdata(csrFile.vaddrBitsExtended-1,0)
 }
}
4

0 回答 0