在上一篇文章的最后,详细说明了什么是同步时钟,什么是异步时钟,在本篇中,主要介绍跨同步时钟域问题,为详细描述异步时钟域间数据传输的方法打好基础。
如果多个时钟都起源于同一时钟,并且它们的香味和频率关系是已知的,那么这些时钟可以看成是跨同步时钟域的时钟。按照相位和频率的关系,可以将这些时钟分成以下类型:
- 同频零相位差时钟
- 同频恒定相位差时钟
- 非同频可变相位差时钟
- 整数倍时钟
- 有理数倍时钟
假定两个时钟之间的相位和时钟抖动相同,并假定他们之间的路径已经按同样的时钟延迟和偏移参数进行了平衡。除此之外,还假设这两个时钟起始处的相位差为零,并且触发器的“时钟到Q端”的延时也为0.
1 同频零相位差时钟
这种情况下,两个时钟其实属于完全相同的时钟,并且这两个时钟虽然在概念上(不考虑各种偏移)是不同的时钟,但是在实际的工作中,没有偏移是不存在的,延时完全相同也是很难达到的。所以实际上我们可以认为这两个时钟属于完全相同的时钟。那么,信号在跨越这两个时钟的时候就不属于跨时钟域。也就不需要在此进行详细分析了。
2 同频恒定相位差时钟
这些时钟有相同的时钟周期,但是相位差恒定。最常见的例子是对一个时钟信号取反使用。同样,如果一个时钟相对于其上级时钟发生了相位移动,以下的分析中假设时钟的移动为T/4.如图1所示,时钟clk1和clk2的频率相同,但在图1中clk1相对于clk2相位前移了3T/4个单位时间。
图 1 频率相同相位不同的时钟
每当数据从clk1传输到clk2的时候,由于更小的建立时间/保持时间裕量,对组合逻辑的延时约束都会变得更紧。如果组合逻辑的延时能保证采样沿处建立时间和保持时间的要求,数据就能正确地传输,并且不会有亚稳态产生。在这种情况下是不需要同步器的,只需要使设计的STA通过就可以了。一般会在S