打印

请问复位中有关“异步确立同步释放”的问题

[复制链接]
1262|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lanpad|  楼主 | 2012-12-11 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了很多资料,都推荐“异步确立同步释放”的方式,代码如下:

    assign    outa    = reg1;
    assign    outb    = reg2;
    assign    rst_n    = reg4;

    always @ (posedge clk or negedge reset_n)
    begin
        if (!reset_n)
            begin
                reg3    <= 1'b0;
                reg4    <= 1'b0;
            end
        else
            begin
                reg3    <= 1'b1;
                reg4    <= reg3;
            end
    end

    always @ (posedge clk or negedge rst_n)
    begin
        if (!rst_n)
            begin
                reg1    <= 1'b0;
                reg2    <= 1'b0;
            end
        else
            begin
                reg1    <= dataa;
                reg2    <= datab;
            end
    end

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

可搞不明白:所谓的“异步确立同步释放”方式,上文第一个always模块不还是异步复位方式么?释放时(上文代码红字部分)还是会出现亚稳态的呀?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

25

帖子

0

粉丝