Есть несколько примеров использования ракетного чипа в MultiWidthFifo.scala
Это довольно просто. Он принимает значение по умолчанию для того, что происходит, если ни одно из предоставленных условий не выполняется, в противном случае он просматривает последовательность кортежей, где каждый кортеж формы (условие bool, результат) часто записывается в условие -> результат. Возвращаемое значение является результатом первого логического условия, которое является истинным.
Вот пример toy модуля, который передает число входных булев в модуль, который затем использует это значение для построения последовательности случаев мультиплексирования.
class UsesMuxCase(numCases: Int) extends Module {
val io = IO(new Bundle {
val output = Output(UInt(10.W))
val inputs = Input(Vec(numCases, Bool()))
})
val cases = io.inputs.zipWithIndex.map { case (bool, index) =>
bool -> index.U(10.W)
}
io.output := MuxCase(0.U(10.W), cases)
}