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