美文网首页FPGA
如何理解「复位 」?

如何理解「复位 」?

作者: 马哥_Marin | 来源:发表于2017-09-09 18:59 被阅读42次

    复位目的:使整个系统进入一个指定的初始状态


    同步复位

    always  @(posedge clk)
    begin
      if(!rst_n)    
        ......
      else
        ......   
    end
    

    优点:

    1. 可使整个电路为完全的同步设计,有利于静态时序分析(STA)。
    2. 有利于仿真工具仿真(Modelsim、Vcs)。
    3. 只在时钟触发沿发生发生作用,滤除毛刺。

    缺点以及注意事项:

    1. 复位脉宽必须超过一个时钟周期。
    2. 复位依赖于时钟信号。
    3. 若复位信号发生在时钟沿,可能产生亚稳态。
    4. 对于同步复位信号管脚在数据通路中或者是没有专用的同步复位管脚的器件,同步复位将耗费更多资源实现。

    异步复位

    always  @(posedge clk or negedge rst_n)
    begin
      if(!rst_n)
        ......
      else
        ......
    end
    

    优点:

    1. 复位不会出现在数据通路,减少额外逻辑以及数据延迟
    2. 复位不依赖于时钟信号

    缺点及注意事项:

    1. 对毛刺敏感
    2. 若在始终触发沿附近去除复位,可能产生亚稳态

    复位策略

    1. 异步低复位
    2. 同步的异步复位。即异步复位,同步释放。
    3. 能不用复位的地方尽量不用。
    4. 对于RAM、ROM、乘法器、数据计算通路,不需要复位,同时也节省资源。
    5. 移位寄存器,若不复位,则可充分进行资源优化。
    6. 对于控制信号、计数器、状态机的状态寄存器等必须要用复位。
    异步复位HDL代码:
    module  arsr           //Asynchronous reset, synchronous release
    
      (
    //        input              i_clk_a    ,
            input              i_rst_n_a  ,
            input              i_clk_b    ,
    
            output  reg        o_rst_n_b  
      )
    //-----------------------------  reg && wire   -------------------------------
    
            reg        rst_n_temp_0  ;
            reg        rst_n_temp_1  ;
    
    //--------------------------------  o_rst_b_n   -----------------------------------
    
            always  @(posedge i_clk_b or negedge i_rst_n_a)
            begin
                if(!i_rst_n_a)
                begin
                        rst_n_temp_0 <= 1'b0;
                        rst_n_temp_1 <= 1'b0;
                        o_rst_n_b    <= 1'b0;
                end
                else
                begin
                        rst_n_temp_0 <= 1'b1;
                        rst_n_temp_1 <= rst_n_temp_0;
                        o_rst_n_b    <= rst_n_temp_1;            
                end
            end
    
    endmodule
    

    如代码那样,即可将在(A时钟域的复位信号)变成(B时钟域也可以用的复位信号)。

    来源:马哥 - Marin
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

      • JING_Jun:最后一个时钟域转换的复位信号,和仅用B时钟把A时钟域复位信号锁存一拍有何优势,除了复位脉冲宽度变宽了?
      • 菲琴:你在写啥
        马哥_Marin:@蛮仔仔 工作经验
        蛮仔仔:@马哥_Marin 你在写啥
        马哥_Marin:按错了,还没写完。还是工作领域的东西。。。

      本文标题:如何理解「复位 」?

      本文链接:https://www.haomeiwen.com/subject/jtjajxtx.html