【问题标题】:What if I used Asynchronous reset, Should I have to make as synchronous turned it?如果我使用异步重置怎么办,我是否必须将其设为同步?
【发布时间】:2015-02-07 11:45:20
【问题描述】:

在我们制造 IC(我的意思是硬件中的物理设计)。 据我所知,输入复位始终是异步的。我想知道如果我使用异步重置怎么办,我是否必须进入同步?或者我们可以只使用异步重置吗?

【问题讨论】:

    标签: vlsi asic


    【解决方案1】:

    事实上,如果你有触发器,它们是同步和异步复位的,你可以随时异步开始复位,但你应该同步结束它。原因很简单:想象一下真正的异步。复位与时钟沿同时结束。您可以在这里轻松获得亚稳态,或者,例如,您的触发器中有一半会接受时钟沿,而另一半仍处于复位状态并错过相同的时钟沿,从而可能会破坏您的设计。

    所以基本上你需要像这样同步外部异步重置:

    module rst_resync
    (
        input  wire clk,
        input  wire ext_rst_n,
        output wire rst_n
    );
    
        reg [1:0] rst_resync;
    
        always @(posedge clk, negedge ext_rst_n)
        if( !ext_rst_n )
            rst_resync[1:0] <= 2'b00;
        else
            rst_resync[1:0] <= { rst_resync[0], 1'b1 };
    
        assign rst_n = rst_resync[1];
    
    endmodule
    

    这样,您仍然可以随时重置您的设计,即使在没有时钟的情况下(就像任何异步重置一样),但内部重置将与时钟同步结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      相关资源
      最近更新 更多