chisel - 如何软重置凿子计数器

标签 chisel

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

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

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

最佳答案

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

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

请注意,我将 .asBool 添加到 reset,因为在 import chisel3._ 中,val reset 具有抽象类型 Reset。查看Chisel website docs on Reset获取更多信息。

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

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暂时有效。

关于chisel - 如何软重置凿子计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62399013/

相关文章:

chisel - 我可以在 Chisel 开始设计硬件之前在软件中计算常量吗?

scala - 解决大型 Chisel 文件所触发的 JVM 代码大小限制的任何方法

chisel - 如何设置emitVerilog的生成目录?

chisel - 如何表达Vec的指定索引范围?

chisel - Chisel 模块中的条件端口

chisel - Chisel 中的高级参数化手册

jvm - Firrtl 在输入较大时耗尽堆内存

scala - 凿子中的 != 和 =/= 有什么区别?

riscv - 如何在 Chisel 中做出断言只是警告而不是停止模拟

complex-numbers - 复数的类型类