异步忽略重置的可能解决方法?

问题描述 投票:1回答:1

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

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

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

是否有任何解决方法?

reset chisel
1个回答
0
投票

虽然您不能直接反转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

© www.soinside.com 2019 - 2024. All rights reserved.