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

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

3天内不再提示

同步复位和异步复位讲解

CHANBAEK 来源:新芯设计 作者:新芯设计 2023-06-21 11:55 次阅读

引言

  本文主要是提供了 ASIC 设计中关于复位技术相关的概念和设计。

一、同步复位 Sync

  当时钟上升沿检测到复位信号时,执行复位操作(有效的时钟沿是前提)。

always @( posedge clk )begin
    if(!rst_n)
        b <= 0;
    else
        b <= a;
end

图片

同步复位的 RTL 电路图

优点

  • 有利于仿真器仿真
  • 可以使所设计的系统成为 100% 的同步时序电路,有利于时序分析,而且可综合出较高的 Fmax;
  • 由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺。

缺点

  • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务,同时还要考虑诸如 Clock Skew、组合逻辑路径延时、复位延时等因素;
  • 由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位 SR 端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口上插入组合逻辑,这样就会一方面额外增加 FPGA 内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。

二、异步复位 ASync

  无论时钟上升沿是否到来,只要复位信号有效,就执行复位操作。

always @( posedge clk or negedge rst_n )begin
    if(!rst_n)
        b <= 0;
    else
        b <= a;
end

图片

异步复位的 RTL 电路图

优点

  • 大多数目标器件库的 DFF 都有异步复位 SR 端口,直接使用的话,就不需要额外的组合逻辑,从而节省资源;
  • 设计相对简单;
  • 异步复位信号识别方便(电路在任何情况下都能复位而不管是否有时钟出现)。

缺点

  • 最大的问题在于它属于异步逻辑,问题出现在复位释放时,而不是有效时,如果复位释放接近时钟有效沿,则触发器的输出可能进入亚稳态(此时 clk 检测到的 rst_n 的状态就会是一个亚稳态,即是 0 是 1 是不确定的),从而导致复位的失败;
  • 可能因为噪声或者毛刺造成虚假复位信号(比如以前的游戏机玩到一半突然复位)(注意:时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题);
  • 静态时序分析比较困难;
  • 对于 DFT 设计,如果复位信号不是直接来自于 I/O 引脚,在 DFT 扫描和测试时,复位信号必须被禁止,所以还要消耗额外的同步电路。

三、异步复位、同步释放

  推荐异步复位、同步释放的方式,并且复位信号为低电平有效:异步复位、同步释放指的是复位信号的到来与撤除都与 clk 无关,但是复位信号的撤除是在下一个 clk 到来之后才执行,也就是复位信号 rst_sync_n 由高到低时实现异步复位。电路的目的是防止复位信号的撤除时可能产生的亚稳态。

图片

珍贵的手绘图

  对于同步释放,这个是关键,即当复位信号 rst_async_n 撤除时(由低到高),由于双缓冲电路(双寄存器)的作用,rst_sync_n 不会随着 rst_async_n 的撤除而撤除。假设 rst_async_n 撤除时发生在 clk 上升沿,如果不加此电路则可能发生亚稳态事件。

  但是,加上此电路之后,假设第一级 D 触发器 clk 上升沿时 rst_async_n 正好撤除,(第一个 DFF 此时是出于亚稳态的,假设此时识别到高电平;若是识别到低电平,则增加一个 Delay)则 DFF1 输出高电平,此时第二级触发器也会更新输出,但是输出值为前一级触发器 clk 来之前时的 Q1 输出状态。显然,Q1 之前为低电平,所以第二级触发器输出保持复位低电平,直到下一个 clk 来之后,才随着变为高电平,即同步释放。

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)
        rst_r <= 2'b00;
    else
        rst_r <= {rst_r[0],1'b1};     
end

assign sys_rst_n = rst_r[1];

always @(posedge clk or negedge sys_rst_n)begin
    if(!sys_rst_n)
        b <= 1'b0;
    else
        b <= a;  
end

图片

异步复位、同步释放的 RTL 电路图

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

    关注

    34

    文章

    1158

    浏览量

    119266
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • SYNC
    +关注

    关注

    1

    文章

    14

    浏览量

    11327
  • 同步复位
    +关注

    关注

    0

    文章

    25

    浏览量

    10667
  • 异步复位
    +关注

    关注

    0

    文章

    45

    浏览量

    13251
收藏 人收藏

    评论

    相关推荐

    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 1726次阅读
    <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>撤离呢?

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

    今天给大侠带来如何区分同步复位异步复位?,话不多说,上货。 如何区分同步复位
    发表于 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 6469次阅读

    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>电路简介

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

    针对异步复位同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用同步
    的头像 发表于 04-27 18:12 4249次阅读
    详细<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>释放的理解

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

    为确保系统上电后有一个明确、稳定的初始状态,或系统运行状态紊乱时可以恢复到正常的初始状态,数字系统设计中一定要有复位电路的设计。复位电路异常可能会导致整个系统的功能异常,所以在一定程度上来讲,复位电路的重要性也不亚于时钟电路。
    的头像 发表于 03-28 13:54 5773次阅读
    <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>

    同步复位异步复位的区别

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

    浅析异步复位同步释放与同步复位打拍模块

    异步复位同步释放:rst_synchronizer.v
    的头像 发表于 08-21 09:27 573次阅读
    浅析<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>打拍模块

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

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