时钟的同步与异步问题,是一个很基础,但是很常见的问题,本文简单总结笔者理解的相关问题,用于对时钟之间同步异步问题进行简单的判断。
时钟相关的属性有频率,相位,是否同源。判断时钟的同步异步,是否同源是一个决定性的因素。不同源的时钟一定是异步的,但是同源的却不一定是同步的。首先需要对时钟的同步异步进行划分的原因是需要满足触发器的建立时间与保持时间,而异步时钟即使是相同的频率,也没有办法确定相位,也是没有办法进行静态时序分析的。因此需要对两种时钟进行区分。
同步时钟
首先判断的重要依据是其是否为同源时钟,不是同源直接为异步处理,是同源接着看其相位与频率。
1,对于同一个时钟的整数分频,可以做为同步处理。
2,对于同一个PLL的整数倍分频,可以做同步处理。
本质上而言,时钟之间彼此的相位关系是确定的,就可以作为同步时钟处理,因为其上升沿之间的关系是可以确定的。
异步时钟
1,不同的源一定是异步的
2,对于同一个PLL的分频倍数是小数,我们一般做异步处理
这里对于同源时钟的相位,并没有做一个很强的要求,主要是由于相位其实是一个不那么重要问题。初始相位差不同,但是频率相同,可以通过后端去修,主要是保证频率的恒定,否则相位就变得不确定了。一般相位的产生主要由于PLL内部产生本身的相位差,或者是由于路径延时。但是都是可以去修正,使得其在一个而可接受的范围内的。主要是看其相位关系是否确定。
EETOP上帖子的问题:
1.两个不同的晶振产生都产生100M的时钟,并且两个相位差固定,这两个时钟是同步还是异步?
其实这个问题本身是有问题的,不同的晶振,相位差不可能固定。因此一定是异步的。
2.一个参考时钟为100M的PLL分频出来一个clk1=50M,又倍频出来一个clk2=500M,请问clk1和clk2是同步时钟吗?参考时钟与倍频或者分频出来的时钟是同步还是异步?
同步的,一个PLL出来的时钟,只要是整数倍,就是同步的
地址:同步时钟和异步时钟
参考IC_learner的两篇博文:
跨时钟域信号传输(一)——控制信号篇
数字设计中的时钟与约束