集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 972|回复: 0

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

[复制链接]
lanpad 发表于 2012-12-11 10:47:26 | 显示全部楼层 |阅读模式
本帖最后由 lanpad 于 2012-12-11 10:54 编辑

看了很多资料,都推荐“异步确立同步释放”的方式,代码如下:

    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模块不还是异步复位方式么?释放时(上文代码红字部分)还是会出现亚稳态的呀?
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-27 02:08 , Processed in 0.060196 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表