大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~
在前几篇文章里,我们讨论了通过建立时间和保持时间,来进行时序分析,并介绍了同步电路中如果建立时间或保持时间违例,该如何修复。
本篇文章主要讨论异步电路中,该如何保证时序,避免时序违例。
一、同步时钟和异步时钟
首先我们补充一下异步时钟和同步时钟概念。
同步时钟指的是来自于同一个时钟源,他们之间相位存在固定关系的。比如来自于同一个锁相环(pll)的时钟是同步时钟。
而异步时钟,指的是彼此之间没有固定的相位关系的时钟,比如来自于不同pll的时钟肯定是异步时钟。
由于异步时钟没有固定相位关系,因此当一个时钟域下的信号传输到另外一个时钟域时,就不能够保证满足建立时间和保持时间了。
因此,我们需要一些其他的办法来保证时序能够得到满足。
二、两拍同步
首先是最基本的同步方法——两拍同步(2filp-flop synchronizer),即对从源时钟域aclk输入的信号,通过目标时钟域bclk下的两级寄存器进行同步,即:

这种方法也就是俗称的“打两拍”。打两拍”的目的主要是为了降低亚稳态的传递概率,即通过多加一个寄存器,多给adata1个周期的时间让其稳定下来,从而避免亚稳态传递到时钟域b中。可通过平均故障间隔时间(Mean Time Between Failures)来描述寄存器采样失败进入亚稳态的时间间隔:

其中,c1和c2是常数,取决于器件工艺。
tmet是寄存器从亚稳态转换到稳定状态的时间该值由寄存器的时间裕量决定,如果有多个寄存器,则为每个寄存器时间裕量之和。
f为采样时钟频率,α为异步数据的变化频率,因此越高的采样时钟频率以及越快变化的异步信号,会导致MTBF越小,就越容易产生亚稳态。
通常来说,只有一级寄存器情况下的异步信号采样MTBF可能只有几天,即每几天就可能出现一次亚稳态,而两级寄存器的异步信号采样的MTBF非常大,有的工艺下的寄存器甚至大于一亿年,因此通过“打两拍”可以大大降低同步后的信号bdata产生亚稳态的概率。
此外,为了降低亚稳态,从源时钟域aclk下输入的信号adata必须是寄存器输出的,也就是说adata不能由组合逻辑产生,否则由于组合逻辑输出会有毛刺,从而会提升亚稳态产生的概率。

本文详细阐述了异步电路中保证时序、避免时序违例的方法,包括两拍同步、针对不同信号类型的同步策略(如慢到快和快到慢),以及使用脉冲同步器和握手机制来确保信号稳定同步。
9665

被折叠的 条评论
为什么被折叠?



