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

时间:2018-03-03 06:02:56

标签: chisel

作为tile,如何以正确的方式将UInt转换为Chisel3中的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)

1 个答案:

答案 0 :(得分:3)

这取决于你是想重新解释为SInt(相同宽度),还是实际强制转换(即将8位UInt转换为9位SInt)。

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

您应该通过调用UInt上的.zext 强制将UInt转换为SInt。例如。 opC.zext,结果将是1位宽,msb为零。