Как конфертировать из Uint в Int - PullRequest
1 голос
/ 17 октября 2019

Я хотел бы использовать Log2() для извлечения ширины в битах в IO. Какой Log2() является Uint, но для описания ширины в битах, вероятно, требуется тип Int. Итак, я хочу преобразовать (приведение) из Uint в Int.

Я попытался сделать следующее в IO;

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

Тогда это приводит к ошибке несоответствия типов. Я не мог найти UInt для Int преобразования. Как это сделать?

Ответы [ 3 ]

1 голос
/ 18 октября 2019

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)))

Надеюсь, это поможет

1 голос
/ 18 октября 2019
val hoge = Output(UInt((Log2Up(BitWidth : Int) : Int).W))

Я не уверен, что вы можете использовать только Log2, попробуйте использовать Log2Up или Log2Down с синтаксисом, как показано выше. Я думаю, это должно работать, дайте мне знать, если это исправит ошибку, и да, используйте UInt вместо Uint

0 голосов
/ 18 октября 2019

Если вы ищете строго для приведения, у UInts есть метод asSInt . См:

...