大家好,欢迎来到IT知识分享网。
异步系统中数据和时钟间的时序关系可能没有被修正,因此很容易违反建立时间和保持时间从而引发亚稳态(metastability)。
所谓的亚稳态指的就是在时钟沿采样时数据发生了变化,导致输出的电压处在高电平和低电平的范围之外。如下图所示
建立时间\(t_{su}\)和保持时间\(t_h\)之间的窗口称为 亚稳态窗口(metastability window)
,在这个时间内数据发生了变化就可能导致亚稳态,输出在经过了\(t_{co}\)(clock to output)之后会有一段稳定时间(settling time)\(t_{met}\)才能再恢复到稳定的 0 或者 1。
在错误率是一个常数的情况下可以将错误率的倒数定义为平均故障时间间隔 MTBF(Mean Time Between Failures),以此来衡量 FF 的错误信息
下面是这几个符号的含义,其实有些我还没搞懂
- \(t_r\) 允许的正常传播延迟时间
- \(\tau\) 触发器的亚稳态时间常数
- W 亚稳态窗口
- \(f_c\) 时钟频率
- \(f_d\) 异步数据边沿频率
其中 \(W\) 和 \(\tau\)取决于工艺节点。对上面的公式进行变换
这样可以得到下面的错误率-时间的关系图
产生亚稳态的原因有很多,例如
- 输入信号是异步信号
- 时钟偏移过大
- 两个时钟域工作在不同的频率下,或者同频率相位不同
- 组合逻辑延迟
完全消除亚稳态是不现实的,但是可以尽可能降低亚稳态。最简单的一个方法是采用多级触发器进行同步
这种方法为亚稳态数据提供里一个时钟周期来恢复到稳定状态(即从第一级 FF 到第二级),当然这里要去掉第二级的建立时间。但是这种方法的缺点就是增加了同步逻辑中数据的延迟(每级寄存器延迟一个时钟周期)。一种解决这个问题的方法称为 Clock Doubler(Clock Boost),简单描述就是接受的时钟频率翻倍
需要注意的是不要用多个同步器采样同一个异步信号,因为可能会产生不同的输出。除了增加寄存器以为还可以使用同步器 Synchronizers,这里介绍两种同步器。
第一种同步器的电路如下
注意这种同步方式要求 clk1 的时钟频率远小于 clk2 的时钟频率,否则就要用第二种同步模式
这种同步器将第一级 FF 的数据端拉高,异步数据作为时钟并且连接到第一级 FF 的异步复位端。如果异步数据从 0 变为 1 则 Vcc 被传递到下一级 FF,如果数据从 1 变为 0 则异步复位端生效。(yysy,设计的非常巧妙)。
总结一下减小亚稳态发生概率的方法
- 采用同步器
- 采用亚稳态窗口更小的触发器
- 级联触发器进行采样
- 降低采样的时钟频率
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32045.html