Я пытаюсь разработать простую схему с использованием долота 3 для генерации факториала для числа n .Вот моя реализация:
class Factorial extends Module{
val io = IO(new Bundle{
val input = Input(UInt(8.W))
val output = Output(UInt(16.W))
})
def factorial(n: UInt): UInt = {
when (n === 0.U) {1.U}
.otherwise {n*factorial(n-1.U)}
}
io.out := factorial(io.in)
}
Однако, когда я пытаюсь запустить его, я получаю следующую ошибку:
cmd26.sc:9: type mismatch;
found : Unit
required: chisel3.UInt
.otherwise {n*factorial(n-1.U)}
^Compilation Failed
Есть ли какая-то конкретная причина для этого?Как мне решить эту проблему?
Кроме того, я понимаю, что простое решение состоит в том, чтобы просто иметь номер n типа Int
и вместо него иметь предложение if-else,Есть ли способ набрать приведение параметра, передаваемого во время вызова функции (т.е. от chisel3.UInt
до Int
)?