在我的代码中,我定义了条件输出:
class EccGenerate[D <: Data](data: D, doubleBit : Boolean = true) extends Module {
val eccBits = calcCodeBits(data.getWidth)
val io = IO(new Bundle {
val in = Input(data.cloneType)
val out = Output(UInt(eccBits.W))
val par = if (doubleBit) Some(Output(Bool())) else None
})
尝试在 par 输出上使用 := 运算符会失败,因为它并不总是输出。使用条件输入时,我会使用 io.par.get() 来检索输入的当前值,是否有相应的原语、运算符或函数调用可以用来设置条件输出的值?
最佳答案
问题是您无法连接到 par
,因为它的类型是 Option[Bool]
并且 :=
未定义对于选项
。如果选项包含某些内容,您需要将其解压并分配给其中的 Bool
。
执行此操作的函数式编程方法是:
io.par.foreach(_ := foo)
如果您愿意,您也可以更详细地描述它:
io.par match {
case Some(a) => a := foo
case None =>
}
if
语句也可以工作:
if (par.nonEmpty) {
io.par.get := foo
}
关于chisel - 如何写入条件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234116/