如何在 Chisel3 中将 UInt 转换为 SInt 值



作为瓷砖,如何在 Chisel3 中以正确的方式将 UInt 转换为 SInt 值?IG:

val opC    = RegInit(0.U(64.W))
val result = RegInit(0.U(64.W))
result := Mux(opC.toSInt > 0.S, opC, 0.U)
这取决于

你是想重新解释为 SInt(相同宽度(,还是实际强制转换(即投射 8 位 UInt 会导致 9 位 SInt(。

您应该通过在 UInt 上调用 .asSInt 将 UInt 重新解释为 SInt。 opC.asSInt,结果将是相同的宽度。

您应该通过在 UInt 上调用 .zext 来将 UInt 转换为 SInt。 opC.zext,结果将是 1 位宽,MSB 为零。

最新更新