reset - 异步 negedge 重置的可能解决方法?

标签 reset chisel

我想要一个带有异步复位信号的寄存器,如下所示:

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        out <= 1'b0
    else
        out <= in
end

我试过 AsyncReset()withReset() 类。但是,生成的代码使用了 posedge 重置并且 AsyncReset() 的变量不接受 !

有什么解决方法吗?

最佳答案

虽然您不能直接反转 AsyncReset 类型(通常将逻辑应用于 AsyncReset 是不好的,因为它可能会出现故障),但您可以转换为 Bool 并返回:

  val reset_n = (!reset.asBool).asAsyncReset
  val reg = withReset(reset_n)(RegInit(0.U(8.W)))

可运行示例:https://scastie.scala-lang.org/ERy0qHt2Q3OvWIsp9qiiNg

关于reset - 异步 negedge 重置的可能解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229422/

相关文章:

sql - 在 postgres 中重置自动增量计数器

swift 3 : Rounding a result embedded in text in a simple calculator

git - 重置 --hard git 远程分支到远程 reflog 中的 SHA 但不在本地 repo 中

c# - 重置表单中的所有项目

r - 如何在 R 中重置 Keras 数据生成器?

scala - firrtl 中的 AND 运算未进行符号扩展

scala - Chisel 中的 RegisterFile 测试

凿子同步

hardware - 是否可以避免指定默认值以便在 Chisel 中获得 X?

chisel - 在 Chisel3 中公开仅模拟行为