Chisel 中使用 MuxCase 的示例
Examples in Chisel that make use of MuxCase
如何在不使用 2:1 Mux 的情况下在 chisel 中实现 4:1 Mux?有没有一种方法可以通过 Mux(sel, A,B,C,D.......N) 之类的东西 select N 输入的输入之一,其中 N 可以被接受作为参数?我知道凿子中的 MuxCase,但我还没有找到一个使用 MuxCase 的示例,非常感谢与此相关的任何类型的文档或示例。谢谢。
rocket-chip 在 MultiWidthFifo.scala
中有几个用法
这很简单。如果提供的条件的 none 为真,它会采用默认值,否则它会查看一系列元组,其中 (bool condition, result) 形式的每个元组通常写为 condition -> result。 return 值是第一个布尔条件为真的结果。
这是一个 toy 模块示例,该模块将输入 bool 的数量传递给模块,然后模块使用该值构建多路复用案例序列。
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)
}
如何在不使用 2:1 Mux 的情况下在 chisel 中实现 4:1 Mux?有没有一种方法可以通过 Mux(sel, A,B,C,D.......N) 之类的东西 select N 输入的输入之一,其中 N 可以被接受作为参数?我知道凿子中的 MuxCase,但我还没有找到一个使用 MuxCase 的示例,非常感谢与此相关的任何类型的文档或示例。谢谢。
rocket-chip 在 MultiWidthFifo.scala
中有几个用法这很简单。如果提供的条件的 none 为真,它会采用默认值,否则它会查看一系列元组,其中 (bool condition, result) 形式的每个元组通常写为 condition -> result。 return 值是第一个布尔条件为真的结果。
这是一个 toy 模块示例,该模块将输入 bool 的数量传递给模块,然后模块使用该值构建多路复用案例序列。
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)
}