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

[复制链接]
1738|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

粉丝
快速回复 在线客服 返回列表 返回顶部