• 什么情况下复位信号需要做异步复位同步释放处理
  • 异步复位同步释放原理
    • 利用前面两级触发器实现特点
  • 问题1 如果没有前面两级触发器的处理异步信号直接驱动系统的触发器会出现什么情况
  • 问题2 复位信号存在亚稳态有危险吗
  • 问题3 如果只做一级触发器同步如何
  • 问题4 两级触发器同步就能消除亚稳态吗
  • 问题5 第一级触发器的数据端口为什么是1b1
  • 综上所述异步复位同步释放的电路结构是稳定可靠最省资源的是最优的方案请按套路出牌即可
  • 存在不同时钟域的系统环境中请检查并正确处理异步复位同步释放

什么情况下,复位信号需要做“异步复位,同步释放”处理?

回答:一般来说,同步系统,都使用异步复位。这是因为同步复位的电路实现,比异步复位的电路实现,要浪费更多电路资源。
未在本模块时钟域做过“异步复位,同步释放”处理的复位信号,提供给本模块做异步复位使用时,都需要做“异步复位,同步释放”处理。常见于系统内两部件不在同一时钟域的情况下。

工程实践中,确实见过由于未做异步复位的同步处理,而出现大概率系统死机现象(复位的作用域是很大的)。

异步复位同步释放原理

代码实现:

always @ (posedge clk, negedge rst_async_n)
if (!rst_async_n) begin
rst_s1 <= 1'b0;
rst_s2 <= 1'b0;
end
else begin
rst_s1 <= 1'b1;
rst_s2 <= rst_s1;
end  assign rst_sync_n = rst_s2;
endmodule  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

利用前面两级触发器实现。特点:

  • 第一级触发器的数据端口是接电源,即高电平1’b1。
  • 第一级触发器的输出,不能使用,因为仍存在亚稳态的危险。两级触发器做同步,是非总线信号的最常见异步处理方法。总线信号的异步处理方法,最常见的是异步fifo实现。

下面讲述理解点。

问题1. 如果没有前面两级触发器的处理。异步信号直接驱动系统的触发器。会出现什么情况?

回答:很多人只知道触发器D端口来源是异步的话,会因为建立保持时间的时序违反而在触发器Q端口产生亚稳态。
但是不清楚,异步复位信号为什么会导致亚稳态的产生。

首先,回顾理论教材里介绍的建立保持时间违反分析,教材一般都是拿没有复位端口的D触发器举例。
然后,画出带有异步复位端口的D触发器,下图带异步复位Rd,并带有异步置位端口Sd。
由此得知,异步复位信号或者异步置位信号,跟数据端口D信号,没有什么区别,都会存在建立保持时间的违反,从而时序冲突,引发输出亚稳态。

问题2. 复位信号存在亚稳态,有危险吗?

回答:
亚稳态,出现的问题或者麻烦,是在信号变化的时候,不能保证第一拍采样的值是固定的。
如果信号稳定,不会出现亚稳态的。就是采样后的跳变,时刻不确定,也许早,也许晚。
系统不希望这样的未知状态发生,系统希望知道在某一个时刻,后续逻辑需要的输入信号,是稳定值。

二级触发器同步后,第二季触发器的输出基本上是稳定值。后续逻辑根据稳定值,会有稳定的行为。这就是追求的系统稳定性。

最好是系统一起复位释放,但是时钟域不同,不可能保证系统一起复位释放。一般来说,系统复位释放的顺序,是需要保证的。否则系统就是不安全的。

举个例子,系统启动时,内核读取启动指令,要powerdown某外设;但是powerdown的逻辑要求外设和内核没有通信请求正在发生。此时,外设比内核先释放复位的情况(复位释放的时刻,外设有可能已经开始与内核发生请求),与内核比外设先释放复位的情况(复位释放的时刻,外设肯定与内核没有发生请求),是不一样的,powerdown也许不能处理成功。

这也是异步复位信号需要同步释放的原因,目的都是为了避免亚稳态的产生。

问题3. 如果只做一级触发器同步,如何?

回答:不可以。第一级触发器的输出,永远存在亚稳态的可能。亚稳态,导致系统不会复位初始化到已知状态。
当第一级触发器采样异步输入之后,允许输出出现的亚稳态可以长达一个周期,在这个周期内,亚稳态特性减弱。在第二个时钟沿到来时,第二级同步器采样,之后才把该信号传递到内部逻辑中去。第二级输出是稳定且已被同步了的。如果在第二级采样时保持时间不够,第一级的输出仍然处于很强的亚稳态,将会导致第二级同步器也进入亚稳态,但这种故障出现的概率比较小。

一般情况下,两级同步器总体的故障概率是一级同步器故障概率的平方。在大部分的同步化设计中,两级同步器足以消除所有可能的亚稳态了。

问题4. 两级触发器同步,就能消除亚稳态吗?

回答:可以。但需要综合或者静态时序分析的工作配合。第一级触发器,永远存在亚稳态的情况,因为建立保持时间不能保证不发生时序冲突。第二级触发器,可以保证不发生时序冲突。
~~一般来说,第一级触发器,可以在综合的时候,设置伪路径,忽略时序冲突。~~
第二级触发器,在综合的时候,分析时序冲突(一般出现保持时间违反,综合会插入buffer解决吧?!)。

如此,第二级触发器,由于避免了时序冲突的发生,输出不会出现亚稳态。
回答:不能。大大降低概率,如果几十年出现一次,也无所谓了。毕竟芯片不会用几十年,早就老化严重淘汰了。

问题5. 第一级触发器的数据端口为什么是1’b1?

回答:
1. 如果第一级触发器的数据端口,使用rst_async_n。综合后的第一级触发器电路图如下
(下图为转载图片,来自http://www.cnblogs.com/qiweiwang/archive/2010/11/25/1887888.html):

2. 如果第一级触发器的数据端口,使用1’b1。综合后的第一级触发器电路图如下:

考虑到电路实现的资源,还是第2种方案最节省,为最佳设计。

综上所述,异步复位同步释放的电路结构是稳定可靠最省资源的,是最优的方案。请按套路出牌即可。

存在不同时钟域的系统环境中,请检查并正确处理“异步复位,同步释放”。

  • 也不知道上述说法,有没有误区,请指点。纯属个人理解,仅供参考。

异步复位,同步释放的理解相关推荐

  1. 关于“异步复位,同步复位,异步复位同步释放”的理解

    文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理异步复位,同步复位,以及亚稳态中的异步复位同步释放. 1. 异步复位 一般让复位信号低电平有效 复位信号不受时钟的控制, ...

  2. verilog异步复位jk触发器_异步复位同步释放原理

    关键词:同步释放,recovery,removal 在数字IC设计中肯定会涉及到异步复位的问题,因为需要对电路进行复位操作.这种复位设计主要依靠前端设计以及工具来检查,从数字IC后端的角度上讲,只要在 ...

  3. 异步复位同步释放原理

    深度揭秘异步复位同步释放原理 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 明天就放端午小长假了,提前祝大家节日快乐.腾讯官网已经给小编公众号开通了赞赏功 ...

  4. 同步复位和异步复位同步释放

    目录 同步和异步时序电路 同步复位 1.原理图 2.Verilog实现 3.TB代码 4.波形 5.PS 异步复位 1.原理图 2.Verilog实现 异步复位同步释放 1.原理图 2.Verilog ...

  5. (47)FPGA同步复位与异步复位(异步复位同步释放)

    (47)FPGA同步复位与异步复位(异步复位同步释放) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA同步复位与异步复位(异步复位同步释放) 5)技术交流 ...

  6. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码

    1.1 FPGA面试题-使用Verilog语言编写异步复位同步释放代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog语言编写异步复位 ...

  7. (10)Verilog HDL异步复位同步释放

    (10)Verilog HDL异步复位同步释放 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL异步复位同步释放 5)结语 1.2 FPGA简介 F ...

  8. 异步复位同步释放机制-系统完美稳定

    原文地址:FPGA之家 首选我们来聊聊时序逻辑中最基础的部分D触发器的同步异步,同步复位即复位信号随系统时钟的边沿触发起作用,异步复位即复位信号不随系统时钟的边沿触发起作用,置数同理,rst_n表示低 ...

  9. 异步复位同步释放 打两拍

    同步复位问题:复位信号持续时间太短,在clk下没采集到就没了. 异步复位问题:释放时可能会出现亚稳态(见最后两张图). 文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理 ...

  10. 异步复位同步释放_简谈同步复位和异步复位

    简谈同步复位和异步复位 大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊数字电路设计中的同步复位和异步复位. 谈到同步复位和异步复位,那咱们就不得不来聊一聊复位这个词了.在数字逻辑电路设计中,电路通 ...

最新文章

  1. 求高精度幂(java)
  2. Scala项目启动方式:extends App和main的区别
  3. dll 源码_重新编译mono——Android动态更新dll
  4. 数据库原理学习笔记(一)关系完整性以及数据库完整性
  5. 深度学习之卷积神经网络(12)深度残差网络
  6. 卡通角色表情驱动系列二
  7. 使用Infinispan作为持久性解决方案
  8. 卷积神经网络(CNN)及其实践
  9. Cocos2d-x win7 + vs2010 配置图文详解(转)
  10. Python time 获取本地时间戳(包含毫秒)
  11. vim 删除,复制和粘贴
  12. sklearn逻辑回归参数设置_【机器学习笔记】:逻辑回归实战练习(二)
  13. Kinect 深度测量原理
  14. 拓端tecdat|基于R统计软件的三次样条和光滑样条模型数据拟合及预测
  15. Python帮助文档
  16. 开发一款3D场景编辑器
  17. Python定时执行程序(schedule)
  18. ​ SequoiaDB 简介​,巨杉数据库整体介绍
  19. Hie with the Pie
  20. Android 面试必备 - 线程

热门文章

  1. 全国大学生智能汽车竞赛讯飞 -智慧餐厅技术报告 ——信号与系统课程论文
  2. 如何让自学更有效率?
  3. 漂亮的PCB设计图案
  4. 改变示波器TDS3054D图片颜色
  5. 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出
  6. AD5272数字变阻器
  7. 简单分解帮助看清复杂问题
  8. php负载均衡原理_PHP超级负载均衡
  9. python在linux报错xe6,python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误
  10. php 位运算与权限,PHP巧妙利用位运算实现网站权限管理的方法