【问题标题】:How to soft reset Chisel Counter如何软重置凿子计数器
【发布时间】:2020-06-16 00:14:06
【问题描述】:

我在我的逻辑中使用凿子计数器,并且希望能够在清除输入信号时将其重置。 我怎样才能做到这一点 ? 我在想这样的事情:

withReset(reset || io.clr) {val (count,wrap) = Counter(io.valid,512)}

我的问题(除了丑陋之外)是 val 名称在 withReset 的范围之外不可用。 有更好的方法吗? 尝试分配0.U Counter 的内部值怎么样,我该怎么做?

【问题讨论】:

    标签: chisel


    【解决方案1】:

    withReset returns the last expression in the block,所以你可以写:

    val (count, wrap) =  withReset(reset.asBool || io.clr)(Counter(io.valid,512))
    

    请注意,我在reset 中添加了.asBool,因为在import chisel3._ 中,val reset 具有抽象类型Reset。请参阅Chisel website docs on Reset 了解更多信息。

    我认为上述方法是最好的方法,但您也可以使用 @chiselName macro 允许 Chisel 在范围内命名 val:

    import chisel3.experimental.chiselName
    
    @chiselName
    class MyModule extends Module {
      ...
    
    
      withReset(reset || io.clr) {val (count,wrap) = Counter(io.valid,512)}
      //                               ^ these ^ will now get named
    }
    

    请注意,我们正努力在未来几周内将更好的@chiselName 版本添加到3.4.0 版本中,但@chiselName 暂时可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2018-10-25
      • 2013-03-27
      相关资源
      最近更新 更多