0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

复位电路的同步复位和异步复位讲解

CHANBAEK 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-03-28 13:54 次阅读

为确保系统上电后有一个明确、稳定的初始状态,或系统运行状态紊乱时可以恢复到正常的初始状态,数字系统设计中一定要有复位电路的设计。 复位电路异常可能会导致整个系统的功能异常,所以在一定程度上来讲,复位电路的重要性也不亚于时钟电路。

复位电路可分类为同步复位和异步复位。

同步复位

同步复位是指复位信号在时钟有效边沿到来时有效。 如果没有时钟,无论复位信号怎样变化,电路也不执行复位操作。

同步复位的典型代码描述如下:

module sync_reset(
    input       rstn,  //同步复位信号
    input       clk,   //时钟
    input       din,   //输入数据
    output reg  dout   //输出数据
    );

    always @(posedge clk) begin   //复位信号不要加入到敏感列表中
        if(!rstn)  dout <= 1'b0 ; //rstn 信号与时钟 clk 同步
        else       dout <= din ;
    end

endmodule

该代码描述常常会被综合成如下电路:

图片

同步复位的优点:信号间是同步的,能滤除复位信号中的毛刺,有利于时序分析。

同步复位的缺点:大多数触发器单元是没有同步复位端的,采用同步复位会多消耗部分逻辑资源。 且复位信号的宽度必须大于一个时钟周期,否则可能会漏掉复位信号。

异步复位

异步复位是指无论时钟到来与否,只要复位信号有效,电路就会执行复位操作。

异步复位的典型代码描述如下:

module async_reset(
    input       rstn,  //异步复位信号
    input       clk,   //时钟
    input       din,   //输入数据
    output reg  dout   //输出数据
    );

    //复位信号要加到敏感列表中
    always @(posedge clk or negedge rstn) begin
        if(!rstn)  dout <= 1'b0 ; //rstn 信号与时钟 clk 异步
        else       dout <= din ;
    end

endmodule

该代码描述常常会被综合成如下电路:

图片

异步复位的优点:大多数触发器单元有异步复位端,不会占用额外的逻辑资源。 且异步复位信号不经过处理直接引用,设计相对简单,信号识别快速方便。

异步复位的缺点:由于是异步电路,复位信号与时钟信号无确定的时序关系,异步复位很容易引起时序上 removal 和 recovery 的不满足。 且异步复位容易受到毛刺的干扰,产生意外的复位操作。

异步复位同步释放

综合设计与资源等方面的考虑,一般数字系统设计时都会使用异步复位。

为消除异步复位的缺陷,复位电路往往会采用“异步复位、同步释放”的设计方法。 即复位信号到来时不受时钟信号的同步,复位信号释放时需要进行时钟信号的同步。

异步复位、同步释放的典型代码描述如下:

module areset_srelease(
    input       rstn,  //异步复位信号
    input       clk,   //时钟
    input       din,   //输入数据
    output reg  dout   //输出数据
    );

    reg   rstn_r1, rstn_r2;
    always @ (posedge clk or negedge rstn) begin
        if (!rstn) begin
            rstn_r1 <= 1'b0;     //异步复位
            rstn_r2 <= 1'b0;  
        end
        else begin
            rstn_r1 <= 1'b1;     //同步释放
            rstn_r2 <= rstn_r1;  //同步打拍,时序差可以多延迟几拍
        end
    end

    //使用 rstn_r2 做同步复位,复位信号可以加到敏感列表中
    always @ (posedge clk or negedge rstn_r2) begin
        if (!rstn_r2) dout <= 1'b0; //同步复位
        else          dout <= din;
    end


endmodule

该代码描述常常会被综合成如下电路:

图片

需要说明的是,复位电路也会消耗更多的硬件逻辑和面积资源,增加系统设计的复杂性。 不带复位端的触发器也具有相对较高的性能。 所以在一些初始值不影响逻辑正确性的数字设计中,例如数据通路中一些数据处理的部分,高速流水线中的一些寄存器,可以考虑去掉复位以达到最佳性能。

为方便、快速的仿真非复位逻辑的其他功能,教程所有数字设计中的复位都是从 testbench 中引入异步复位,没有考虑复位电路是否能正常工作。 实际设计数字系统时,一定要对复位电路进行单独、仔细、慎重的设计。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 复位电路
    +关注

    关注

    13

    文章

    308

    浏览量

    44277
  • 时钟电路
    +关注

    关注

    10

    文章

    230

    浏览量

    50354
  • 同步复位
    +关注

    关注

    0

    文章

    25

    浏览量

    10667
  • 异步复位
    +关注

    关注

    0

    文章

    45

    浏览量

    13251
  • 复位信号
    +关注

    关注

    0

    文章

    50

    浏览量

    6169
收藏 人收藏

    评论

    相关推荐

    同步复位电路异步复位电路区别分析

    异步复位信号a是异步复位信号源,异步复位信号b、c、d是到达触发器的
    的头像 发表于 06-26 05:36 2.3w次阅读
    <b class='flag-5'>同步</b><b class='flag-5'>复位</b><b class='flag-5'>电路</b>和<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>电路</b>区别分析

    Xilinx FPGA异步复位同步释放—同步后的复位该当作同步复位还是异步复位

    针对异步复位同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用同步
    发表于 06-21 09:59 815次阅读
    Xilinx FPGA<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b>释放—<b class='flag-5'>同步</b>后的<b class='flag-5'>复位</b>该当作<b class='flag-5'>同步</b><b class='flag-5'>复位</b>还是<b class='flag-5'>异步</b><b class='flag-5'>复位</b>?

    异步复位同步撤离是什么意思?如何做到异步复位同步撤离呢?

    复位消抖之后的下一件事,[异步复位]()同步撤离。这句话什么意思呢?
    的头像 发表于 12-04 13:57 1725次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b>撤离是什么意思?如何做到<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b>撤离呢?

    如何区分同步复位异步复位

    问:如何区分同步复位异步复位?可以理解为同步复位是作用于状态,然后通过状态来驱动
    发表于 04-24 13:23

    如何区分同步复位异步复位

    今天给大侠带来如何区分同步复位异步复位?,话不多说,上货。 如何区分同步复位
    发表于 05-22 17:33

    同步复位异步复位有什么联系与区别,优缺点!

     异步复位原理:异步复位只要有复位信号系统马上复位,因此异步
    发表于 11-30 08:45 9.6w次阅读
    <b class='flag-5'>同步</b><b class='flag-5'>复位</b>和<b class='flag-5'>异步</b><b class='flag-5'>复位</b>有什么联系与区别,优缺点!

    FPGA设计中的异步复位同步释放问题

    异步复位同步释放 首先要说一下同步复位异步复位的区
    发表于 06-07 02:46 2005次阅读

    简谈同步复位异步复位

    大家好,谈到同步复位异步复位,那咱们就不得不来聊一聊复位这个词了。在数字逻辑电路设计中,
    的头像 发表于 05-17 09:30 1.3w次阅读
    简谈<b class='flag-5'>同步</b><b class='flag-5'>复位</b>和<b class='flag-5'>异步</b><b class='flag-5'>复位</b>

    如何区分同步复位异步复位

    问:如何区分同步复位异步复位?可以理解为同步复位是作用于状态,然后通过状态来驱动
    的头像 发表于 06-11 15:15 6468次阅读

    Xilinx FPGA的同步复位异步复位

    对于xilinx 7系列的FPGA而言,flip-flop支持高有效的异步复/置位和同步复位/置位。对普通逻辑设计,同步复位
    发表于 07-13 09:31 6160次阅读

    同步复位异步复位电路简介

    同步复位异步复位都是状态机的常用复位机制,图1中的复位电路
    的头像 发表于 08-12 15:20 6970次阅读
    <b class='flag-5'>同步</b><b class='flag-5'>复位</b>和<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>电路</b>简介

    详细讲解同步后的复位同步复位还是异步复位

    针对异步复位同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用同步
    的头像 发表于 04-27 18:12 4248次阅读
    详细<b class='flag-5'>讲解</b><b class='flag-5'>同步</b>后的<b class='flag-5'>复位</b>是<b class='flag-5'>同步</b><b class='flag-5'>复位</b>还是<b class='flag-5'>异步</b><b class='flag-5'>复位</b>?

    【FPGA】异步复位同步释放的理解

    异步复位同步释放的理解目录目录 同步复位异步复位
    发表于 01-17 12:53 4次下载
    【FPGA】<b class='flag-5'>异步</b><b class='flag-5'>复位</b>,<b class='flag-5'>同步</b>释放的理解

    同步复位异步复位的区别

    请简述同步复位异步复位的区别,说明两种复位方式的优缺点,并解释“异步
    的头像 发表于 08-14 11:49 4110次阅读

    同步复位异步复位到底孰优孰劣呢?

    同步复位异步复位到底孰优孰劣呢? 同步复位异步
    的头像 发表于 01-16 16:25 329次阅读