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

How to cast UInt to SInt value in Chisel3?

作为tile,如何在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 为零。