美文网首页
FPGA复位——同步复位和异步复位

FPGA复位——同步复位和异步复位

作者: 暗夜望月 | 来源:发表于2017-06-17 16:02 被阅读0次

    其他参考资料:
    FPGA中复位信号的设计
    FPGA同步复位异步复位
    异步复位同步释放---关于复位的问题
    FPGA同步复位,异步复位以及异步复位同步释放实例分析

    一、特点:

    同步复位:
    顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:

    always @ (posedge clk) begin
        if (!Rst_n)
            ...
    end
    

    异步复位:
    它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:

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

    二、各自的优缺点:

    1、同步复位:

    • 优点:

    • 有利于仿真器的仿真。

    • 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。

    • 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

    • 缺点:

    • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。

    • 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

    2、异步复位:

    • 优点:

    • 大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。

    • 设计相对简单。

    • 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

    • 缺点:

    • 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。

    • 复位信号容易受到毛刺的影响。

    三、总结:

    所以说,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。

    所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。


    异步复位同步释放的方法以及多时钟系统的复位设计

    1、异步复位,同步释放

    input rst_n,clk;
    output rst_syn_n;//系统的复位信号
    reg reg1,reg2;
    
    always@(posedge clk or negedge rst_n )begin
        if(!rst_n)begin
            reg1<=1'b0;
            reg2<=1'b0;
       end
      else begin
            reg1<=1'b1;
            reg2<=reg1;
        end
    end
      assign rst_syn_n = reg2;
    

    复位是异步的,但是释放确实同步的;用两级寄存器,是消除复位释放中可能存在的亚稳态。

    异步复位,同步释放的好处是:
    1.不要求复位信号必须大于一个时钟周期;
    2.因为释放过程和时钟同步,所以避免了亚稳态。
    兼具同步复位和异步复位的优点。

    不使用reg1的原因是消除毛刺的影响,如果受到毛刺的影响,reg1会产生一个很短的复位信号,这样可能会导致复位不完全,系统出现混乱。

    2、多时钟系统中复位的处理方法
    这是一个很实际的问题,因为在较大型的系统中,一个时钟驱动信号显然不能满足要求,一定会根据系统的要求用多个同源时钟(当然也可以是非同源了)去驱动系统的不同部分。那么在这样的多时钟系统中,复位键怎么设置?它的稳定与否直接关系到了整个系统的稳定性,因此要格外注意(在我看来,复位信号在同步时序系统中的地位和时钟信号一样重要)。下面就说一下具体的处理方法,当然所遵循的原则就仍应该是上文的“异步复位,同步释放”:

    1.non-coordinated reset removal:
    顾名思义,就是同一个系统中的多个同源时钟域的复位信号,由彼此独立的“reset synchronizer”驱动。当异步复位信号有效时,各时钟域同时复位,但是复位释放的时间由各自的驱动时钟决定,也是就说:时钟快的先释放,时钟慢的后释放,但是各复位信号之间没有先后关系。

    2.sequence coordinated reset removal:
    这是相对于上述方式来说的,也就是说各时钟域的复位信号彼此相关,各个部分系统虽然也同时复位,但是却分级释放。而分级的顺序可由各个“reset synchronizer”的级联方式决定。可以先复位前级,再复位后级,也可以反过来。反正方式很灵活,需要根据实际需要而定。

    相关文章

      网友评论

          本文标题:FPGA复位——同步复位和异步复位

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