【发布时间】:2019-10-10 23:02:03
【问题描述】:
如何在不使用 2:1 Muxes 的情况下在 chisel 中实现 4:1 Mux?有没有一种方法可以让我们通过像 Mux(sel, A,B,C,D.......N) 这样的东西来选择 N 个输入中的一个输入,其中 N 可以作为参数?我知道凿子中的 MuxCase,但我还没有找到使用 MuxCase 的示例,非常感谢任何类型的文档或示例。谢谢。
【问题讨论】:
标签: chisel
如何在不使用 2:1 Muxes 的情况下在 chisel 中实现 4:1 Mux?有没有一种方法可以让我们通过像 Mux(sel, A,B,C,D.......N) 这样的东西来选择 N 个输入中的一个输入,其中 N 可以作为参数?我知道凿子中的 MuxCase,但我还没有找到使用 MuxCase 的示例,非常感谢任何类型的文档或示例。谢谢。
【问题讨论】:
标签: chisel
MultiWidthFifo.scala@@987654321 中的 Rocket-chip 有几种用法
这很简单。如果提供的条件都不为真,它会采用默认值,否则它会查看一系列元组,其中每个元组的形式(布尔条件,结果)通常写成条件 -> 结果。返回值是第一个布尔条件为真的结果。
这是一个 toy 模块示例,该模块将输入 bool 的数量传递给模块,然后使用该值构造一个 mux 案例序列。
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)
}
【讨论】: