如何避免亚稳态

摘要:
输入信号是异步信号时钟偏移超过公差值。信号在两个具有不同频率或相同频率的不同相位的时钟域中工作。组合延迟使得触发的输入信号在亚稳态窗口中改变。亚稳态将导致过度的传输延迟和系统故障。避免亚稳态的常见方法是使用同步器。2.使用多级同步器的最常见方法是在交叉时钟域中的信号之后添加同步触发器。该方法使用一个时间段(不包括第二级触发器的建立时间)来解决第一级同步触发器的亚稳态问题。
如何避免亚稳态
1、简介

每当违背建立和保持时间时,亚稳态就会出现。在以下的情况下,可能违背时序要求:

  • 输入信号是异步信号
  • 时钟偏移超过容限值
  • 信号在两个不同频率或者同频不同相的时钟域下工作
  • 组合延时使触发器的输入信号在亚稳态窗口内发生变化

亚稳态会引起过多的传输延时和系统故障。虽然亚稳态不能根除,但是可以减小亚稳态发生的概率。避免亚稳态发生常见方法就是使用同步器。

2、使用多级同步器

最常见的方法就是在跨时钟域内的信号后加上同步触发器。该方法是用一个时间周期(不包括第二级触发器的建立时间)来解决第一级同步触发器亚稳态的问题。但是这种方法增加了观察同步逻辑输入的延时。
N级同步器

3、使用倍频时钟同步器

多级同步器的局限就是系统需要花费较长的时间去响应异步输入信号。解决办法就是使用倍频时钟作为两个同步触发器的输入时钟。
倍频时钟同步器

这两种方法都不能保证同步器阻止亚稳态传播下去,但是可以减小亚稳态发生的概率。


同步器有以下两种类型:
A
B


4、建议

在两个异步系统交界的地方亚稳态是不可避免的。但以下建议可以明显减小亚稳态发生的概率:

  1. 采用同步器
  2. 采样相应更快的触发器(亚稳态窗口小)
  3. 降低采样速率
  4. 避免使用dVdt 低的输入信号

参考资料
1 The Art of Hardware Architecture
2 Understanding Metastability in FPGAs



来自为知笔记(Wiz)


免责声明:文章转载自《如何避免亚稳态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ESLint的使用Lua中的控制结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

定时器与系统时间(续)

额外问题处理: -------------------------------------------------------------------------------- 13) 定时器之外的一些处理     a) window环境下,定时器通知执行定时任务的时间点可能误差1毫秒;Linux环境也有类似情况,但是误差频率低很多(只是在指定时间点前后1...

随机数的深究

几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数。比如在.Net中编写下面的代码: Random rand = newRandom(); Console.WriteLine(rand.Next()); 运行后结果如下:     Next()方法用来返回一个随机数。同样的代码你执行和我...

Redis集群实现分布式锁-RedLock

一、redis集群分布式锁 Redis单节点实现分布式锁 ,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 1. 客户端1在Redis的master节点上拿到了锁。 2. Master宕机了,存储锁的key还没有来得及同步到Slave上。 3. master故障,发生故障转移,slave节点升...

借助AWR报告分析解决oracleCPU过高的问题(转)

原文地址:http://www.cnblogs.com/crystal-guoguo/p/4213458.html 简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise Manager)和AWR(Automatic Workload Repository)。其中,通过AWR报告可以生成易于阅读的监控报告,可协助进行性能问题的...

Django——缓存机制

一、缓存介绍 缓存就是将常用的一些数据保存在内存或者们擦车中,在一定时间内,如果有请求访问这些数据的时候,则不用去服务器操作数据库渲染,直接缓存中获取,节约时间,增加访问速度,环节服务器压力 二、Django中的6种缓存方式 开发调试缓存 内存缓存 文件缓存 数据库缓存 Memcache缓存 Memcache缓存 三、Django缓存配置 1.2.1...

C# 分布式自增ID算法snowflake(雪花算法)

概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassan...