0 参考资料

0.0 图文,公式详细介绍了什么是亚稳态/产生/消除/危害/稳定

认识FPGA触发器的亚稳态

浅谈IC设计中亚稳态的问题以及信号同步电路简单实现

亚稳态与跨时钟域

高级FPGA设计技巧!多时钟域和异步信号处理解决方案

高级FPGA设计技巧!多时钟域和异步信号处理解决方案

1.1 什么是亚稳态

假设器件输出在电压0-VL认为数字逻辑0,VH-VDD之间认为是数字逻辑1.当器件超过规定时间内输出电压仍在VL--VH之间时不能判定是逻辑0还是逻辑1,经过更长时间电压稳定时也不能确定稳定在0-VL还是VH-VDD。我们称之为亚稳态。

1.2 为什么会有亚稳态

本段摘自亚稳态与跨时钟域--冯旭

为什么要满足建立时间和保持时间的要求?因为虽然说数字电路中只有1和0,但实际上电路在从1到0和从0到1变化时是不可能瞬间完成的,是有一个变化的过程的(性能越好的器件这个变化的时间越短,但不可能完全没有)。

在时钟变化的这段时间里,寄存器将对数据进行锁存。如果数据在这段时间内发生了变化,对于寄存器来说也就无法识别应该锁存哪个数据,到底是变化前的还是变化后的,寄存器的输出也将变得无法预测。因此,数据在建立时间和保持时间内必须保持稳定不变。

从更加宏观的设计角度来看,异步逻辑是亚稳态出现的重要原因。

在正常的同步电路中,亚稳态出现的可能性很小,除非时钟的设计有很大问题(比如时钟延迟、时钟抖动、时钟偏斜很严重)。在设计过程中designer会通过sdc等约束保证同步电路的时序收敛。而异步逻辑则很容易出现亚稳态,异步逻辑没有统一的时钟,也无法通过sdc约束和工具检查 完全发现异步逻辑的时序问题。没有统一的时钟也就意味着控制信号随时可能发生变化,想要满足建立时间和保持时间的约束当然也就变的十分困难。

亚稳态的出现归根到底就是因为建立时间和保持时间不满足要求。

1.3 为什么异步电路更容易亚稳态,同步电路能不能保证没有亚稳态

原因见1.2节,同步电路肯定要保证在正常工作频率/电压/温度/工艺下是没有亚稳态的。异步电路是无法保证一定没有亚稳态,但designer识别风险并保证亚稳态概率降到可控范围内。

1.4 异步FIFO使用格雷码做地址同步的原因

首先必须是+1或者-1,才能保证两次改变只有1bit变化

a.格雷码没有毛刺,不会引入额外的亚稳态

b.如果地址同步错误(仅限+1/-1同步错误,突然读和写都连续进行,导致地址变化过快,同步可能错误太多会出现mem空或者满,这种情况只能靠其他rtl设计保证)功能上虚空虚满不会造成逻辑错误。

2.多级寄存器的同步电路,Physical Design能不能通过约束保证setup/hold不违例

当src clk和des clk完全异步关系,时钟没有任何频率与相位的关系时,Physical Design也无法通过sdc等约束来保证setup/hold的满足。所以只能通过多级寄存器级联降低亚稳态,rtl design通过设计保证跨时钟域的信号传输正确性。cdc会找到所有这些寄存器,后端替换使用专用的cell来改善亚稳态

3.亚稳态的巨大危害到底是什么

最大的危害就是亚稳态的传播,如果发生亚稳态输出负载了很多组合逻辑,这些组合逻辑又输入到不同的寄存器,就会极其容易导致这些寄存器也进入亚稳态,然后继续传播。最终能够导致整个系统崩溃(范围太大,rtl设计也无法保证错误被纠正或被放弃)

亚稳态可能会导致cell的输出值错误,但这个错误如果不传播问题不大,也可以通过设计放弃或纠正错误值。2级或更多级的寄存器级联同步器的第一级寄存器就很可能输出错误的值,但是多级级联增加了亚稳态的稳定时间使最后一级寄存器进入亚稳态的概率极大的降低(可以达到几十年上百年一次),就相当于降低亚稳态的概率和传播。

4.多级寄存器级联的同步电路是为了防止亚稳态的传播和降低亚稳态的概率

并不能完全消除亚稳态及其传播,只能降低到可接受的范围之内。

两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 < = 时钟周期。

假设每一级寄存器输出在下一级寄存器capture时间还没有稳定的概率为p,那么多加n级寄存器最后一级输出亚稳态的概率就是p的n次方,所以大大降低了亚稳态的传播

5.不满足建立/保持时间是否一定有亚稳态

不一定。不满足建立保持时间寄存器不知道capture logic ‘0’ 还是logic ‘1’,输出最终稳定值可能不确定,但寄存器可能会在规定的时间内输出稳定。

6.多级寄存器同步之间不能加组合逻辑为何?

不是不能,而是由于经过了组合逻辑和走线的延时,亚稳态传播到目的寄存器的时间增大很多。本来可能在到达下一级寄存器的时候满足下一级的setup/hold时间,结果又不能满足setup。这种情况下,只有在很低速的时钟频率时,第二拍触发器才可以避免亚稳态。因此是不正确的处理方法。也就是说同步器两级触发器之间不要添加任何逻辑,这样可以使得信号获得尽可能长的时间来回到稳定状态。否则还有经过组合逻辑的时间。

组合逻辑还会产生glitch,导致增加亚稳态的几率

通过组合逻辑信号沿可能变差

7.多级寄存器同步电路的第一级输入信号需要寄存器输出为何?

原因和问题6一致。

7.1为什么多bit数据不能用一位同步器分别同步?

不是不能,比如说准静态信号 经常是可以这么做的。就APB配置信号 可以这么做。

但是大多情况下 由于多bit之间的走线延时不一样(假设中间没有组合逻辑),到达destination clk domain 寄存器的D端时间不一样 ,导致被采样时间有的早一拍,有的晚一拍,输出Q端就永远无法得到想要的数据。同时由于bit位宽增加,亚稳态的概率也增加了。所以要加握手信号或者经过fifo。

对于一位同步器 或者用多个一位同步器同步多bit数据 本身即使降低了亚稳态的传播,并不能保证数据的正确性。应用在静态或准静态数据好使,其他情况要添加握手机制。

最重要的是多bit信号,bit之间的相关性丢失了(无论是否有亚稳态,这种相关性在跨时钟域采样之后都会丢失)。官方的解释如下:

可参考本人另一篇转载文章https://blog.csdn.net/cy413026/article/details/103141979

相关信号在跨越时钟边界后失去相关。这个问题是最不直观的。这将导致非常不确定的行为,如数据丢失,算术结果破坏。

这类不直观的问题在可视化的检查中很难被发现,特别是用RTL电路形式,在设计审查是经常被忽视。必须将严格的设计规则和有效的自动分析用于这类问题。

在广泛的相关信号中,可能产生相关性丢失的几种不同方式,包括:

  • 总线的多数据位
  • 单信号的多次复制
  • 握手信号,如请求与应答信号
  • 明显不相关的信号合并在接收时钟域的同一逻辑中

无论何时一个信号进入亚稳态,可以使用同步器确定它的值,但是在接收时钟域不能保证在信号有效之前的精确周期数。因此,任何一个多位信号,每位有独立的时钟同步,每位在到达接收时钟域时,相对其它位将产生倾斜。

即使亚稳定不发生,任何成对数据位信号在到达相应的同步器之前,通过不同的线路或者电特性使两个信号产生不同的延时,都可能丢失同步。

可能一个同步器采样输入信号,并且在另一个同步器捕获信号变化之前,先捕获信号的变化,这样,两个信号将在一个时钟周期内倾斜,并且不再相关。

8.glitch的严重危害是什么?

和亚稳态一样,最怕glitch在组合逻辑中大面积传播。

对于启动信号、控制信号、握手信号,触发器的清零信号(CLEAR)、预置信号 (PRESET)、时钟输入信号(CLK)或锁存器的输入信号/异步电路就会产生逻辑错误。任何一点毛刺都可能使系统出错。非常敏感。

D触发器是对毛刺不敏感的,毛刺如果要通过D触发器到达Q端,就需要在时钟跳变沿产生,且满足setup/hold时间。概率要小很多,通常是不能满足的。

9.glitchFree clk切换电路

参考本人另一篇文章GlitchFree的时钟切换技术

10.glitch在时钟/复位/异步电路中的危害?

在时钟电路中,引起错误 驱动寄存器工作,或则毛刺时钟时序不好引起亚稳态。

在复位电路中也是会导致系统错误的复位,或者不满足remove/recovery时间,导致复位亚稳态。

异步电路最怕glitch引起亚稳态,所以同步电路过程的寄存器之间不要有组合逻辑,以免引入glitch导致额外的亚稳态。

11.怎么消除或减少glitch

利用冗余项消除毛刺,采用格雷码,采样法,吸收法,延迟办法,具体可参考

FPGA中竞争冒险问题的研究

组合逻辑电路的分析与设计

Race_condition

12.遗留问题

12.1 soc的后端会考虑毛刺吗,后仿真加sdf的信息能不能发现毛刺

12.2 寄存器自动加门控,门控通常是if 的条件信号,可能是个复杂的组合逻辑条件。这个门控对时钟沿的影响是怎么考虑进去的,这个门控信号的毛刺又是如何保证不影响时钟的。

亚稳态/异步电路/glitch(毛刺)/glitchFree clk切换的一些疑问及理解相关推荐

  1. 无毛刺的时钟切换电路(Glitch-free clock switching circuit)设计(Verilog)

    从秋招的经验来看,Verilog设计类的题目,如:奇偶分频,状态机,序列检测,波形产生,跨时钟域处理,门控时钟,同步FIFO,格雷码与二进制码转换,异步复位同步释放,时钟切换,异步FIFO等,其中最为 ...

  2. 关于fpga的语言逻辑异步电路同步时序电路终于读懂了

    原文链接: http://m.elecfans.com/article/575270.html 从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢 ...

  3. 同步电路和异步电路的区别

    摘自 何宾著<XilinxFPGA设计权威指南>P86~P91 同步电路和异步电路的区别在于电路触发是否与驱动时钟同步,从行为上讲,就是所有电路是否在同一时钟沿下同步地处理数据. 同步复位 ...

  4. 【异步电路碎碎念1】 —— 到底什么是异步电路

    异步电路是我们在进行IC设计时候必须要跨越的一道坎,必须要掌握的基础知识.个人认为对异步电路的理解以及处理经验是衡量一个IC前端水平的重要指示.不过最可怕的是哪怕你想的再明白理解的再清楚,也还是可能会 ...

  5. FPGA同步和异步电路

    在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门.所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的.但小编认为,若能先结合& ...

  6. (5)FPGA面试题同步电路和异步电路

    1.1 FPGA面试题同步电路和异步电路 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题同步电路和异步电路: 5)结束语. 1.1.2 本节引言 &quo ...

  7. 单片机电源自动切换电路,mos双电源自动切换电路,电池与usb供电自动切换电路

    日常电器中,双电源自动切换的例子随处可见如:交流适配器和USB供电的电源切换.电池供电和USB供电的自动切换. 这些电路一般都遵守一个原则:优先选择电压高者使用. 其实最开始这个电路是在 锂电充电电路 ...

  8. Mysql主从复制之异步与半同步以及主从切换(实验)

    什么是异步,半同步: 一.异步复制(Asynchronous replication) 1.逻辑上 MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...

  9. 从源码处理一理Retrofit的异步网络请求如何把结果切换到主线程

    前提,需要具备的知识点是:动态代理,反射,注解. 场景:某日面试的时候被问道,Retrofit异步网络请求是怎么把结果返回给主线程的? 答曰:具体原理不是很清楚,最后应该是通过handler把结果发送 ...

最新文章

  1. 程序员到底为什么要掌握数据结构与算法?
  2. 大学python和vb哪个简单-vb和python哪个速度快
  3. python3.7.4+Django2.2.6一直提示path404报错问题:“Using the URLconf defined in XXX.urls, Django tried this...”
  4. mfc让图片与按钮一起_MFC 基础知识:对话框背景添加图片和按钮Button添加图片...
  5. Android SQLite (一) 数据库简介
  6. Linux 命令之 ls -- 列出指定目录下的内容
  7. const 常量_条款03:尽可能使用const
  8. mysql 空位补0_MySQL-13(表的创建、数值类型整型、float/decimal、ZEROFILL、BIT(M))
  9. 事件处理介绍(简要学习笔记十七)
  10. linux终端执行二进制文件命令,Linux下查看二进制文件命令
  11. 模拟集成电路—拉扎维第三章知识点
  12. 微信企业号开发接口文档
  13. lego-loam在Ubuntu16.04下安装、跑包及实时建图
  14. Cocos2D-HTML5开源2D游戏引擎
  15. 阿里云网站备案-备案流程问题解答汇总
  16. Oracle客户端工具介绍
  17. Visual Studio 2022 免费版最新版本下载安装教程
  18. HDU 2209 翻纸牌游戏 模拟
  19. 微信小程序——video视频全屏播放
  20. linux命令:head、tail

热门文章

  1. 概率论__EXCEL查值
  2. 2021年电工(技师)答案解析及电工(技师)考试平台
  3. Vue 安装 less 报错 While resolving: hblvbigdata@0.1.0
  4. MySQL参数级优化和系统级优化
  5. android 21什么手机,值得买的手机 篇二十一:2019最强千元机之一,2021它还香吗…………荣耀9x...
  6. AR眼镜推动移动安防向智能化发展
  7. WebP 原理和 Android 支持现状介绍
  8. Win11图标闪烁不停怎么办?Win11图标不停闪烁的解决方法
  9. 高防CDN的知识了解
  10. 未来计算机的发展趋向于什么化,未来计算机的发展趋向于巨型化、微型化、网络化、多媒体话和()。...