zoukankan      html  css  js  c++  java
  • 异步复位和同步释放电路的详细解释

    首先给出复位信号亚稳态的原因:
    
    
    复位结束也就是释放的时刻恰在时钟上升沿的建立时间和保持时间之间时无法决定现在的复位状态是1还是0,造成亚稳态。
    
    下面是具体解释:

     

    在带有复位端的D触发器中,当reset信号“复位”有效时,它可以直接驱动最后一级的与非门,令Q端“异步”置位为“1”or“0”。这就是异步复位。
    当这个复位信号release时,Q的输出由前一级的内部输出决定。
    然而,由于复位信号不仅直接作用于最后一级门,而且也会做为前级电路的一个输入信号,因此这个前一级的内部输出也受到复位信号的影响。
    前一级的内部电路实际上是实现了一个“保持”的功能,即在时钟沿跳变附近锁住当时的输入值,使得在时钟变为高电平时不再受输入信号的影响。
    对于这一个“维持”电路,在时钟沿变化附近,如果“reset”信号有效,那么,就会锁存住“reset”的值;如果reset信号释放,那么这个“维持”电路会去锁当时的D输入端的数据。
    因此,如果reset信号的“释放”发生在靠时钟沿很近的时间点,那么这个“维持”电路就可能既没有足够时间“维持”住reset值,也没有足够时间“维持”住D输入端的值,因此造成亚稳态,并通过最后一级与非门传到Q端输出。
    如果reset信号的“释放”时间能够晚一点点,也就是说,让“维持”电路有足够的时间去锁住“reset”的值,那么,我们就可以肯定输出为稳定的“reset”状态了。
    这一小段锁住“reset”值所需要的时间,就是寄存器的removal time要求。

     

    发现网上找的很多关于异步复位、同步释放的解释都是有误的,下面的解释得比较清楚。

    转自:http://www.xue5.com/Developer/Software/665219.html

    如图第一个方框内是异步复位和同步释放电路。有两个D触发器构成。第一级D触发器的输入时VCC,第二级触发器输出是可以异步复位,同步释放后的复位信号。


     

    电路目的:防止复位信号撤除时产生亚稳态事件

    所谓异步复位和同步释放,是指复位信号是异步有效的,即复位的发生与clk无关。后半句“同步释放”是指复位信号的撤除(释放)则与clk相关,即同步的。

     

    下面说明一下如何实现异步复位和同步释放的。

     

    异步复位:显而易见,rst_async_n异步复位后,rst_sync_n将拉低,即实现异步复位。

    同步释放:这个是关键,看如何实现同步释放,即当复位信号rst_async_n撤除时,由于双缓冲电路的作用,rst_sync_n复位信号不会随着rst_async_n的撤除而撤除。

    假设rst_async_n撤除时发生在clk上升沿,如果不加此电路则可能发生亚稳态事件,但是加上此电路以后,假设第一级D触发器clk上升沿时rst_async_n正好撤除,则D触发器1输出高电平“1”,此时第二级触发器也会更新输出,但是输出值为前一级触发器clk来之前时的Q1输出状态。显然Q1之前为低电平,顾第二级触发器输出保持复位低电平,直到下一个clk来之后,才随着变为高电平。即同步释放。

     

    module reset_gen ( 
    output rst_sync_n, 
    input clk, rst_async_n);

    reg rst_s1, rst_s2;
    wire rst_sync_n ;
    always @ (posedge clk, posedge rst_async_n)

    if (rst_async_n) begin 
    rst_s1 <= 1'b0;
    rst_s2 <= 1'b0;
    end
    else begin
    rst_s1 <= 1'b1;
    rst_s2 <= rst_s1;
    end

    assign rst_sync_n = rst_s2; 
    endmodule

  • 相关阅读:
    poj3669 广搜
    检索所有课程都选修的的学生的学号与姓名
    UVA10160 Servicing Stations
    uva11205 The broken pedometer 子集生成
    poj1101 the game 广搜
    poj3009 Curling 2.0 深搜
    poj 1564 Sum It Up 搜索
    HDU 2268 How To Use The Car (数学题)
    codeforces 467C George and Job(简单dp,看了题解抄一遍)
    HDU 2267 How Many People Can Survive(广搜,简单)
  • 原文地址:https://www.cnblogs.com/youngforever/p/3104710.html
Copyright © 2011-2022 走看看