【问题标题】:how to pack zeros in to bundles in chisel如何在凿子中将零打包到捆绑包中
【发布时间】:2019-08-09 02:11:34
【问题描述】:

我有一个关于将零打包成包的问题。例如考虑下一个代码:

    class CmplxNum(val bitwidth: Int) extends Bundle {
       val real = SInt(INPUT,bitwidth.W)
       val imag = SInt(INPUT,bitwidth.W)
    }  

    class MyClass extends Module {
       val io = IO(new Bundle {
          val in = new CmplxNum(16)
          val load = Bool(INPUT)
          val clr  = Bool(INPUT)
          ...
       })
       ...
       val sample = RegEnable(io.in,0.S,io.load) // <-- how do i set the reset value     
       When(io.clr) {
          sample <> sample.fromBits(0.S) // <-- I tried this it compiles, but dont know if it is correct  
       }

    }

如何在 RegEnable 和 clr 案例中将零打包到此捆绑包中? 对于 RegEnable,我有错误匹配类型的详细说明错误,这是有道理的

【问题讨论】:

    标签: chisel


    【解决方案1】:

    这是一种方法。它依赖于相对较新的 BundleLiterals (new CmplxNum(16)).Lit(_.real -&gt; 0.S, _.imag -&gt; 0.S)。我还稍微重构了您的代码以使用当前的 chisel3 习语。如果没有特定需要,我不建议将您的输入/输出放在 Bundle 中。此外,更现代的方法是将 IO 字段包装在 Input() 或 Output() 中

    import chisel3._
    import chisel3.util.RegEnable
    import chisel3.experimental.BundleLiterals._
    
    
    class CmplxNum(val bitwidth: Int) extends Bundle {
      val real = SInt(bitwidth.W)
      val imag = SInt(bitwidth.W)
    }
    
    class MyClass extends Module {
      val io = IO(new Bundle {
        val in = Input(new CmplxNum(16))
        val load = Input(Bool())
        val clr  = Input(Bool())
          ...
      })
    
        ...
      val sample = RegEnable(
        io.in,
        init = (new CmplxNum(16)).Lit(_.real -> 0.S, _.imag -> 0.S),
        enable = io.load
      )
      when(io.clr) {
        sample <> sample.fromBits(0.S) // <-- I tried this it compiles, but dont know if it is correct
      }
    
    }
    

    【讨论】:

    • 感谢 Chick Markley,您能否评论一下代码中清晰的示例部分?这是正确的做法吗?
    • 对不起,是的,我没看到。但它应该是同一种任务。示例 := (new CmplxNum(16)).Lit(_.real -> 0.S, _.imag -> 0.S)
    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2010-10-15
    • 1970-01-01
    • 2013-10-08
    • 2010-12-15
    相关资源
    最近更新 更多