如何从Uint转换为Int

时间:2019-10-17 19:56:39

标签: chisel

我想使用Log2()在IO中提取位宽。哪个Log2()是Uint,但是位宽声明可能需要Int类型。因此,我想将(广播)从Uint转换为Int。

我尝试在IO中执行以下操作;

val hoge = Output(Uint(Log2(BitWidth).W))

然后这会产生类型不匹配的错误。我找不到UInt到Int的转换。怎么做?

3 个答案:

答案 0 :(得分:1)

val hoge = Output(UInt((Log2Up(BitWidth : Int) : Int).W))

我不确定您是否只能使用Log2,请尝试使用具有上述语法的Log2Up或Log2Down。我想这应该可以,请告诉我是否可以解决错误,并且可以使用UInt代替Uint

答案 1 :(得分:1)

Chisel具有chisel3.util.log2Ceil(i:Int),该函数返回保存i值所需的位数。您的示例输入了Uint而不是UInt的错字,这可能会引起问题。我不确定您的示例中的BitWidth是什么?是class还是Int,如果是Int,最好将scala约定用于变量名的小写开头。如果您有val x = UInt(8.W),并且想在x声明中使用IO的宽度,则它看起来像

  val a = IO(Input(chiselTypeOf(x)))

我希望这对您有帮助

答案 2 :(得分:0)

如果您要严格强制转换,则UInt具有asSInt方法。参见: