今天面试被问到异步复位同步释放和异步复位打两拍有什么区别,没回答上来,主要忘记了异步复位同步释放的实现方式,回来查了一下资料,觉得复位还是值得写一写的。

在FPGA或者数字IC设计中肯定会涉及到同步和异步复位的问题,首先介绍一下同步复位和异步复位。

同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:
always @ (posedge clk) begin
if (!Rst_n)

end
同步复位的优点:

  1. 有利于仿真器的仿真。
  2. 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
  3. 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

同步复位的缺点:

  1. 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
  2. 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:
always @ (posedge clk,negedge Rst_n) begin
if (!Rst_n)

end
异步复位的优点:

  1. 大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
  2. 设计相对简单。
  3. 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

异步复位的缺点:

  1. 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
  2. 复位信号容易受到毛刺的影响。
    为什么会产生亚稳态呢,这里就需要明确两个概念removal time 和recovery time。


Removal timing check

Removal time是指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。满足这个最短时间才能确保对寄存器进行正常的复位。Removal time check的波形图如下图所示。Removal timing check与hold time check类似。

Recovery timing check

Recovery time是指在时钟有效沿到来之前,复位信号保持高电平的最短时间。即复位信号变到非复位状态的电平必须在clk之前一定的时间到达。满足这个Recovery time,可以确保在时钟有效沿来临时,异步复位信号处于无效状态,从而确保正常的数据采样。

从Removal 和Recovery time的定义知道,只要DFF的复位信号不在时钟有效沿附近变化(复位信号远离时钟有效沿),就可以保证电路的正常复位和撤销。

下面举例说明异步复位的亚稳态产生,当触发器的复位和解复位都是异步的,与时钟的边沿无关时称之为完全异步复位。如下图所示,图中触发器DFF的复位信号由复位控制电路给出,复位控制电路与触发器的时钟没有任何关系。

触发器解复位与解复位后与下一个时钟有效沿之间必须保持的最小时间称之为复位恢复时间(reset recovery time)也就是上面介绍的recovery time。下图是复位恢复时间违规时序图,当异步复位释放点不满足复位恢复时间时,会导致输出不定态或亚稳态,使系统功能出现异常。

结论:
为了避免纯粹的同步复位和纯粹异步复位的问题,可以使用一种叫做同步化的异步复位,我们称其为第三类复位。这种复位完全结合了异步复位和同步复位的优势,我们知道异步复位的优势是不参与数据路径,所以不影响数据路径速度,而复位几乎是瞬间起作用;而同步复位的优势是百分百地同步时序分析且具有抗噪声性能。这种复位其实就是通常我们所说的异步复位同步释放。就如同我之前讨论的那样,异步地进入复位是最好的,只是异步地退出复位会导致一些类似亚稳态和由同步电路参与反馈而引起不想要的状态之类的危害等问题。

异步复位同步化
啰嗦的一大堆终于进入正题了。
异步复位同步化的方式有两种,一种是同步化的异步复位,另外一种是大名鼎鼎的异步复位同步释放。
首先介绍第一种同步化的异步复位。
同步寄存器(Synchronizer Register)像同步复位那样被使用,不过被同步后的异步复位和原始异步复位经过门控以后用来异步地复位后续寄存器。这个电路中异步复位信号异步地复位后续电路,并且复位是异步地释放。它的缺点就是复位路径上引入了门电路的延迟。
其实简单的理解就是异步复位信号打两拍进行同步化,因此增加了复位电路的延时。
为了解决上述电路复位路径上门电路延迟。异步复位输入直接连接到同步寄存器(Synchronizer Register)的CLRN端口上,这样复位立即生效。当复位撤除(释放)时,一个逻辑“1”从同步器(Synchronizer)被时钟打出用来同步地释放后续寄存器的复位,也就是异步复位同步释放。

注意
当有PLL涉及时,有些特殊情况需要考虑。比如我们来如图19所示的电路。需要同步的复位跟之前一样直接接到了同步器中寄存器的CLRN端口,而同步后的寄存器也同样接到了reg1和reg2的CLRN端口,同时也被接到PLL的areset端口。所有寄存器包括同步器中的寄存器的驱动时钟来自PLL的输出时钟。虽然看起来PLL使用了同步后的复位,实际上这是行不通的。当PLL处于复位状态时,PLL的c0是没有时钟输出的,因此同步器中的寄存器将无法清除复位(意思是复位无法得到释放)。结果是,这个电路将永远无法跳出复位。
RDC(Reset Domain Crossing)跨复位域
这里顺便提一下RDC,当前复杂FPGA或者数字IC设计除了包含多个时钟域外还包含了多个异步复位域,检测人员对CDC跨时钟域处理已经有了足够的重视,而实际上,如果设计种存在跨异步复位域时同样会经常会遇到亚稳态的问题。 具体而言,对于有多个异步复位域的设计,如果某个异步复位在复位时,其复位的信号可能正好落在接受域时钟的建立和保持时间窗口内,这会造成接受端采样到发送端信号复位前后或复位后的值,从而造成仿真行为和FPGA真实行为的不一致。因此,需要不同异步复位域之间需要进行有效隔离或同步,或者提前指定异步复位的先后顺序,以确保设计可以可靠复位,避免由于跨异步复位域而引起的亚稳态问题。
当一个复位域的异步复位边沿太接近另一个复位域的触发器的时钟边缘或不复位时,就会发生亚稳态,导致触发器的值不确定,并在整个设计中传播,从而导致功能故障。

两种异步时钟同步化区别分析相关推荐

  1. 第八章 对立统一——异步时钟同步化

    一.什么是对立统一 什么是CEO,就是首席执行官,是在一个企业中负责日常经营管理的最高级管理人员,又称作行政总裁,或最高执行长或大班. 那么,在FPGA系统,需不需要一个最高级别的执行官,来管理所有进 ...

  2. 以两种异步模型应用案例,深度解析Future接口

    摘要:本文以实际案例的形式分析了两种异步模型,并从源码角度深度解析Future接口和FutureTask类. 本文分享自华为云社区<[精通高并发系列]两种异步模型与深度解析Future接口(一) ...

  3. POWER BI:desktop 两种数据连接模式区别

    总结了下powbi两种连接模式的区别:这里指的是服务器版本即RS版. PowerBI Service为每个发布的Report自动创建一个Dataset,每一个Dataset的大小的上限是1GB.在导入 ...

  4. oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别...

    create table  as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...

  5. Java中的两种异常类型及其区别?

    Java中的两种异常类型及其区别? 参考文章: (1)Java中的两种异常类型及其区别? (2)https://www.cnblogs.com/zxfei/p/11182730.html (3)htt ...

  6. iOS学习——UITableViewCell两种重用方法的区别

    今天在开发过程中用到了UITableView,在对cell进行设置的时候,我发现对UITableViewCell的重用设置的方法有如下两种,刚开始我也不太清楚这两种之间有什么区别.直到我在使用方法二进 ...

  7. MTP和MPO两种光纤有什么区别呢?

    随着数据中心的快速发展,云计算,云存储等应用逐渐***各个行业,网络通信的带宽要求也随之迅猛增加,MTP/MPO光纤配线标准则成为了目前高密度高带宽的最佳解决方案.MTP和MPO两种光纤有什么区别呢? ...

  8. drf-路由组件:自动生成Routers路由、 使用方法、视图集中附加action的声明、自动生成路由router的两种方式的URL区别

    目录 一. 自动生成Routers路由 二. 使用方法 1) 创建router对象,并注册视图集,例如 2)添加路由数据 三. 代码演示 四. 视图集中附加action的声明 五. 自动生成路由rou ...

  9. nuxt框架Universal和Spa两种render mode的区别

    如下图,官网上对于Universal 和 Spa 两种render mode的区别,并没有加以说明,相信大多数人跟我一样有点懵,不知道选什么好.虽然两个模式创建的项目看不出区别. 先给出推荐选项: U ...

  10. diy 扫地机器人 滚刷_无滚刷PK有滚刷:关于保洁机器人两种常见清扫结构的分析...

    目前市面上销售的保洁机器人从底部清扫结构上来看,主要分为两种结构类型:一类是以iRobot Roomba为代表的有滚刷三段式清扫结构,另一类则是以V-BOT为代表无滚刷双重清扫结构,今天爸爸乐轻松网主 ...

最新文章

  1. grdraw显示区域 lisp_lisp函数按功能分类
  2. 物联网基础之了解CCP协议,COAP协议,MTQQ协议等
  3. atlas单机模式代码_游戏日报:3DS源码遭泄露,COD吃鸡更新经典模式,重装机兵再跳票...
  4. java mod函数的使用方法_java 数学计算的具体使用
  5. 静默错误:为什么看了那么多灾难,还是过不好备份这一关?
  6. 【专栏精选】网络封包神器protobuf简介
  7. 类名 窗口句柄 结束进程
  8. 【知了堂学习笔记】java 自定义异常
  9. 服务器栈虚拟交换机,FusionSphere分布式虚拟交换机技术白皮书1.docx
  10. 傅立叶变换、拉普拉斯变换、Z变换的联系
  11. linux 小企鹅输入法,Linux(FC) 小企鹅输入法的安装
  12. XGboost 出现UserWarning: Use subset (sliced data) of np.ndarray is not recommended
  13. CSS中添加背景图+盒子边框样式
  14. 微信小程序--wx-charts图表插件使用教程
  15. 【备忘】达内2017Java全套最新价值2万元视频教程
  16. FFmpeg之sws_scale库的应用(sws_getContext、sws_scale、sws_freeContext)
  17. 心理学导论--- 1 心理学在搞什么
  18. 软件工程经济学期末复习第三章
  19. 什么云服务器比较好?大家用过哪家?
  20. 续流二极管的作用及选型

热门文章

  1. IBX TableVew
  2. 滴滴上市年营收超千亿,程维:我必须时刻保持危机感
  3. excel多级联动和不规则分组转置
  4. ubuntu的iso文件下载
  5. XCTF 3rd-HITB CTF-2017 arrdeepee 复现
  6. 基于Python的指数基金量化投资——指数基金估值榜
  7. matlab统计颗粒数,一种基于Matlab的谷物颗粒计数方法
  8. java.lang.IllegalArgumentException: Merged region H2 must contain 2 or more cells
  9. python 实验七 字典与集合 (下)
  10. Python数据挖掘 之 数据处理(使用pandas对智联招聘上的北京地区python岗位进行数据清洗)