chisel - 如何写入条件输出

标签 chisel

在我的代码中,我定义了条件输出:

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/

相关文章:

chisel - 在测试仪中使用多个时钟

riscv - 学习凿子-了解火箭芯片代码的高级示例

凿子3 : False Combinational Loop in Fixed Priority Arbiter

scala - 在for循环chisel3中使用yield时如何访问前一个元素

c++ - 如何更改转储的 VCD 文件的时间刻度?

chisel - Chisel/FIRRTL 工具链是否进行 bool 表达式优化?

scala - 无法在 Chisel3 中使用 PeekPokeTester 打印

scala - Chisel 既不为 verilog 也不为 C++ 合成

chisel - 如何在凿子中初始化向量

chisel - 如何在 Chisel3 中将 UInt 转换为 SInt 值?