Примеры в долоте, которые используют MuxCase - PullRequest
1 голос
/ 11 октября 2019

Как мне реализовать 4: 1 Mux в долоте, не используя 2: 1 Mux? Есть ли способ, где мы можем выбрать один из входов N входов, имея что-то вроде Mux (sel, A, B, C, D ....... N), где N можно принять в качестве параметра? Я знаю о MuxCase в долоте, но мне еще предстоит найти пример, который использует MuxCase, любая документация или пример по этому поводу очень важен. Спасибо.

1 Ответ

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

Есть несколько примеров использования ракетного чипа в 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)
}
...