CDC(Clock Domain Crossing)跨時鐘域(一)
在一款芯片中多個時鐘域非常常見,跨時鐘域檢查至關(guān)重要。本篇記錄的是CDC跨時鐘域的基礎(chǔ)概念。
時鐘域clock domain:以寄存器捕獲的時鐘來劃分時鐘域。
單時鐘域single clock domain,數(shù)據(jù)發(fā)送和接收是同一個時鐘
多時鐘域multiple clock domain,數(shù)據(jù)發(fā)送和接收是不是同一個時鐘
同步 & 異步
是否為同一個時鐘通過同步和異步來判定。
同步時鐘:同源,有固定的相位關(guān)系
異步時鐘:不同源,沒有固定的相位關(guān)系
那么問題來了
問題1: 有兩個時鐘是通過兩個時鐘源出來,但是頻率和相位相同,那么它們是否為同步時鐘?
不是,不同的時鐘源出來頻率相同,但隨著時鐘的偏移和抖動,都會導(dǎo)致相位的不確定性。所以是異步時鐘。
問題2: 有兩個時鐘是通過同一個時鐘源分頻出來的,但他們的頻率不同,那么它們是否為同步時鐘?
是同步時鐘,時鐘的同步關(guān)系與頻率無關(guān),只要是同源、有固定的相位關(guān)系,就是一組同步時鐘。不需要做異步時鐘處理,做跨時鐘域處理。
Jitter & Skew
時鐘抖動(Clock Jitter):兩個時鐘周期之間存在的差值,這個誤差是在時鐘發(fā)生器內(nèi)部產(chǎn)生的,和晶振或者PLL內(nèi)部電路有關(guān),使得時鐘周期在不同的周期上可能加長或縮短。
時鐘偏移(Clock Skew):同一個信號到達(dá)兩個不同的寄存器之間的時間差值,Skew的定義就是時鐘最長路徑減去最短路徑的值。由于布線長度及負(fù)載不同引起。
區(qū)別:Jitter是在時鐘發(fā)生器內(nèi)部產(chǎn)生的,和晶振或者PLL內(nèi)部電路有關(guān),布線對其沒有影響。Skew是由不同布線長度導(dǎo)致的不同路徑的時鐘上升沿到來的延時不同。
跨時鐘域
一個電路的launch時鐘和capture時鐘不是同一個時鐘,就是跨時鐘域。
兩個時鐘是同步時鐘就是同步時鐘域。
兩個時鐘是異步時鐘就是異步時鐘域。
亞穩(wěn)態(tài)
觸發(fā)器無法在某個確定的時間段內(nèi)達(dá)到一個可確認(rèn)的狀態(tài),帶來功能錯誤
如何處理亞穩(wěn)態(tài)?
降低系統(tǒng)時鐘頻率
用速度更快的FF
引入同步機(jī)制,防止亞穩(wěn)態(tài)傳播
改善時鐘質(zhì)量,用邊沿快速變化的時鐘信號
亞穩(wěn)態(tài)需要一段時間才能達(dá)到穩(wěn)態(tài),二級寄存器可以增加一個clock cycle的時間使亞穩(wěn)態(tài)穩(wěn)定。如果一個clock cycle后,亞穩(wěn)態(tài)還未穩(wěn)定,第二級輸出就還可能是亞穩(wěn)態(tài)。
需要注意的是,兩級寄存器并不能完全隔離亞穩(wěn)態(tài),但可以極大的概率隔離了亞穩(wěn)態(tài)發(fā)生的概率。
而且,亞穩(wěn)態(tài)不是糾錯,如果產(chǎn)生亞穩(wěn)態(tài),那么采樣值可能是不正確的,兩級寄存器或多級寄存器級聯(lián)只是防止亞穩(wěn)態(tài)在時序電路中傳播擴(kuò)散。
根據(jù)MTBF Mean Time Between Failure 平均故障時間,推薦電路頻率500MHz以下用兩級觸發(fā)器,500MHz以上用三級觸發(fā)器。
編輯:黃飛
-
異步時鐘
+關(guān)注
關(guān)注
0文章
17瀏覽量
9423 -
同步時鐘
+關(guān)注
關(guān)注
0文章
49瀏覽量
3282
原文標(biāo)題:同步還是異步?這是一個問題
文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論