两级同步为什么能解决亚稳态问题?
前言
不知道大家有没有一个疑惑,为什么两级同步电路结构能够解决亚稳态问题,之前一直疑惑的地方在于,当第一级DFF发生亚稳态时,他的输出呈现不确定性,会出现0或者1任意一个值。若输入是1,第一级DFF亚稳态之后稳定到了0,那么第二级采样的话不就错了吗?这个问题困扰了很久,现在终于解决了,无非就是同步后的有效信号会延时1拍还是2拍的问题。
单比特CDC
对于单比特信号在两个时钟之间传递时,一般都会使用两级DFF的电路结构来避免产生亚稳态。以前遇到这种问题都是无脑使用这种同步器,对其为什么能避免亚稳态和它的使用条件从没有考虑过,这不对呀,所谓学东西要学个明白,这次咱就来深入探究下~~
首先来了解下什么是亚稳态:
每个DFF都有一个由建立时间和保持时间定义的时间窗口,在这个窗口内,输入数据不能变化,如果输入数据在这个窗口内变化,就会引起输出端口的值的不确定性。也就是说它,它是稳定到高电平还是低电平这不好说。但是经过一段时间后输出端口最终会稳定到一个确定的值,这段时间会比正常的Tck->q大。(ps:有的文章说亚稳态之后DFF也可能一直输出震荡状态)
为什么会出现亚稳态:
在两个时钟的交界面上,由于外部数据到本地输入端口的稳定时间与本地触发器的采样窗口在时序上没有必然联系,因此会造成跨时钟域接口间的亚稳态问题。当一个信号跨越某个时钟域时,对新的时钟域来说这就是个异步信号,这时就需要特殊的电路结构把这个异步信号同步到新的时钟域。这种电路结构就是两级DFF电平同步器。
对于同步电路来说,它必须保证同步后数据(事件)的值,个数,顺序不能错,且同步后不会再出现亚稳态(亚稳态不可能完全避免)
两级电平同步器的使用是有要求的,它要求异步输入信号在新时钟域中至少稳定两个时钟周期(ps:一个时钟周期+set_up+hold time)。此外,在信号再次有效之前要先变成无效状态,每一次信号有效时接收逻辑会把它看作单一事件,不管它持续了多长时间。那么回答开始的问题,为什么两级DFF能避免亚稳态?当第一级触发器出现亚稳态时,它经过一定的时间恢复到稳定状态,再经过组合逻辑和走线延迟到达下一级触发器,假设总的延迟是4ns,那么若此时时钟周期大于4ns+第二级DFF的set up time,则第二级触发器就不会再出现亚稳态。
Q1: 为什么同步器之间不能插入组合逻辑?
Q2: 为什么同步器之前不能插入组合逻辑?
Q3: 为什么同步器之后可以添加组合逻辑了?
Q4: 如何约束?一个set_false_path就够了吗?
几个问题可以考虑一下
多比特CDC
对于多比特CDC问题,一般采用握手信号或FIFO的方式。那么问题来了,为什么多比特信号不能用两级DFF同步?这些后续文章会详细说明。
两级同步为什么能解决亚稳态问题?相关推荐
- 异步FIFO的设计详解(格雷码计数+两级DFF同步)
文章目录 一.异步FIFO介绍 1.1.空满判断 1.2.跨时钟域问题 1.3.格雷码转换 1.4.格雷码计数器 二.代码code 一.异步FIFO介绍 FIFO有同步和异步两种,同步即读写时钟相 ...
- 单根信号跨时钟域——两级D触发器消除亚稳态
meta_harden 这个模块是在Xilinx的例程工程Wave Generator中看到的,来看一下有什么用. 描述 在源文件注释中有描述到,这是一个基础的亚稳态固化方法:通过两级的时钟同步,将异 ...
- 在OSI参考模型中,当两台计算机进行文件传输时,为防止中间出现网络故障而重传整个文件的情况,可通过在文件中插入同步点来解决,这个动作发生在( )
在OSI参考模型中,当两台计算机进行文件传输时,为防止中间出现网络故障而重传整个文件的情况,可通过在文件中插入同步点来解决,这个动作发生在( B ) A. 表示层 B. 会话层 C. 网络层 D. 应 ...
- 【Caffeine进阶】Redis+Caffeine 两级缓存实战,性能爆缸
往期回顾 博主前面发过一篇[缓存框架Caffeine]初级篇,主要介绍了Caffeine的入门级使用!地址https://blog.csdn.net/Number_oneEngineer/articl ...
- Redis+Caffeine两级缓存
1.前言 在高性能的服务架构设计中,缓存是一个不可或缺的环节.在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库.在提升 ...
- 4.1.3 OS之文件目录目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身
文章目录 0.思维导图 1.文件控制块 对目录的操作 2.单级目录结构 3.两级目录结构 4.多级目录结构(树形目录结构) 5.无环图目录结构 6.索引节点(FCB的改进)瘦身 0.思维导图 1.文件 ...
- 【学习笔记】第三章——内存 II(分页存储、快表与局部性原理、两级页表)
文章目录 一. 分页存储概念 二. 地址转换 1)为什么页面大小为2的次幂? 三. 页表 1)页表项长度.页号"隐含" 四. 局部性原理与快表 五. 二级页表 1)单级页表存在的问 ...
- SpringBoot 集成 layering-cache 实现两级缓存调研与实践
前言 对于系统查多改少的数据,可以通过缓存来提升系统的访问性能.一般情况下我们会采用 Redis ,但是如果仅仅依赖 Redis 很容易出现缓存雪崩的情况.为了防止缓存雪崩可以通过 Redis 高可用 ...
- git stash后怎么恢复_苹果换卡后怎么恢复通讯录?两种方法帮你解决
苹果换卡后怎么恢复通讯录?今天小编分两种情况给大家介绍恢复苹果手机通讯录的两种方法,根据自己的情况选择适合自己的操作步骤来找回手机里的通讯录即可. 情景一:使用iCloud同步了通讯录 iCloud是 ...
最新文章
- 写if-else不外乎两种场景:异常逻辑处理和不同状态处理。
- 20180827-Java网络编程
- [html] 前端需要注意哪些SEO?
- LeetCode 2115. 从给定原材料中找到所有可以做出的菜(拓扑排序)
- Python maximum recursion depth exceeded while calling a Python object (gevent的SSL无限递归错误)的问题解决
- oracle中直方图的使用
- Android Studio 3.2升级后的编译问题解决办法
- 每日一C(函数指针)
- 找到驱动精灵屏幕保护图片
- JAVA垃圾回收器与垃圾回收算法
- Unity项目在pc和ios设备上黑屏的原因探究
- EditPlus代码补全设置
- 上twitter_如何在Twitter上更改您的显示名称
- revit附加模块 sat_revit附加模块怎么弄?如何解决Revit附加模块加载失败问题
- WPS怎么统计相同名称的数据_教你如何将垃圾的WPS,玩得高大上!
- SQL SERVER 2019卸载和安装
- 赖世雄老师---不完全不及物动词---become/turn/get/seem及感官动词
- 从球场捡拾矿泉水瓶的老人,看市场经济下的供求关系
- 为什么将-Xms和-Xmx设置为相同的值?
- openssl 开发库下载集合