企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
随着技术的发展,数字电路的集成度越来越高,设计也越来越复杂。很少有系统会只工作在同一个时钟频率。一个系统中往往会存在多个时钟,这些时钟之间有可能是同步的,也有可能是异步的。如果一个系统中,异步时钟之间存在信号通道,则就会存在CDC(**clock domain crossing**)问题。在下面的文章里,我们将会讨论CDC的一些技术细节。 1. 时钟域(Clock domain) 如果某一设计只有一个或者几个有固定相位关系的时钟驱动,我们称这个设计属于一个时钟域。比如,一个时钟和它的反相时钟以分频时钟一般有固定的相位关系,属于同一个时钟域。而如果两个或者多个时钟之间没有固定的相位关系,则它们属于不同的时钟域。 如下图中,divCLK是由CLK分频得到的,divCLK和CLK被认为是同步时钟,而由divCLk和CLK驱动的设计被认为是属于同一个时钟域。 ![](https://img.kancloud.cn/25/a5/25a545d0ad889539869d643a4f2a5259_292x154.png) 如下图中,CLKA和CLKB之间没有固定的相位关系,是异步时钟。前半部分设计属于时钟域CLKA,后半部分设计属于时钟域CLKB。DA信号从时钟域CLKA进入到时钟域CLKB,是一个跨时钟域的信号,这条path也会被称为CDC path。 ![](https://img.kancloud.cn/41/bf/41bf471d443e82ed7f8378ef1731a409_345x190.png) 如今的数字电路设计中,跨时钟域的情况及其普遍。举一个最简单的例子,一个[USB](http://www.elecfans.com/tags/usb/)转串口的模块,串口因为波特率的不同,会工作在不同的时钟频率下,USB[接口](http://www.hqchip.com/app/1039)也会因为工作在不同的速度而有不同的工作频率。USB接口的时钟和串口的时钟之间不存在任何相位上的关系,也就是说,USB接口模块和串口模块属于不同的时钟域,他们之间相连的path就是跨时钟域的path。