随着技术的发展,数字电路的集成度越来越高,设计也越来越复杂。很少有系统会只工作在同一个时钟频率。一个系统中往往会存在多个时钟,这些时钟之间有可能是同步的,也有可能是异步的。如果一个系统中,异步时钟之间存在信号通道,则就会存在CDC(clock domain crossing)问题。在下面的文章里,我们将会讨论CDC的一些技术细节。
一, CDC的基本概念
我们首先来看CDC的一些基本的概念:
1. 时钟域(Clock domain)
如果某一设计只有一个或者几个有固定相位关系的时钟驱动,我们称这个设计属于一个时钟域。比如,一个时钟和它的反相时钟以分频时钟一般有固定的相位关系,属于同一个时钟域。而如果两个或者多个时钟之间没有固定的相位关系,则它们属于不同的时钟域。
如下图中,divCLK是由CLK分频得到的,divCLK和CLK被认为是同步时钟,而由divCLk和CLK驱动的设计被认为是属于同一个时钟域。
如下图中,CLKA和CLKB之间没有固定的相位关系,是异步时钟。前半部分设计属于时钟域CLKA,后半部分设计属于时钟域CLKB。DA信号从时钟域CLKA进入到时钟域CLKB,是一个跨时钟域的信号,这条path也会被称为CDC path。
如今的数字电路设计中,跨时钟域的情况及其普遍。举一个最简单的例子,一个USB转串口的模块,串口因为波特率的不同,会工作在不同的时钟频率下,USB接口也会因为工作在不同的速度而有不同的工作频率。USB接口的时钟和串口的时钟之间不存在任何相位上的关系,也就是说,USB接口模块和串口模块属于不同的时钟域,他们之间相连的path就是跨时钟域的path。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)