隨著技術的發展,數位電路的整合度越來越高,設計也越來越複雜。很少有系統會只工作在同一個時鐘頻率。一個系統中往往會存在多個時鐘,這些時鐘之間有可能是同步的,也有可能是非同步的。如果一個系統中,非同步時鐘之間存在訊號通道,則就會存在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。

.