數(shù)字電路設(shè)計中遇到跨時鐘域(Clock Domain Crossing, CDC)的電路時一般都需要特別的處理,例如同步器,異步FIFO等。那么為什么CDC需要特別的處理,如果不做處理又會導(dǎo)致什么問題。
亞穩(wěn)態(tài)
我們都知道數(shù)字電路中有兩個最重要的概念,建立時間和保持時間。通過滿足建立時間和保持時間,我們可以確保信號被正確的采樣,即1采到便是1,0采到便是0。但是如果不滿足建立時間和保持時間,采到的信號會進(jìn)入一個不穩(wěn)定的狀態(tài),無法確定是1還是0,我們稱之為亞穩(wěn)態(tài)。這個亞穩(wěn)態(tài)的信號會在一段時間內(nèi)處于震蕩狀態(tài),直到穩(wěn)定,而穩(wěn)定后的狀態(tài)值與被采樣值無關(guān),可能是0也可能是1。
圖1【1】所示的是異步時鐘采樣失敗的情況。當(dāng)數(shù)據(jù)(adat)的變化離采樣時鐘(bclk)的變化沿很近時,由于不滿足建立時間,導(dǎo)致采樣到的信號(bdat1)進(jìn)入亞穩(wěn)態(tài)。
異步時鐘由于時鐘相位不同,圖1的情況往往難以避免,這也是跨時鐘域時容易發(fā)生亞穩(wěn)態(tài)的原因。
亞穩(wěn)態(tài)會導(dǎo)致什么問題
由于亞穩(wěn)態(tài)的信號會在一段時間內(nèi)處于震蕩狀態(tài),后續(xù)不同的邏輯可能會將該信號識別為不同的狀態(tài)值,甚至是后續(xù)邏輯也出現(xiàn)亞穩(wěn)態(tài)的情況,導(dǎo)致邏輯的錯誤和混亂,比如狀態(tài)機(jī)出現(xiàn)錯誤的跳轉(zhuǎn)從而鎖死在某個狀態(tài)。
同步器
第一級觸發(fā)器采樣后出現(xiàn)亞穩(wěn)態(tài),第二級觸發(fā)器在經(jīng)過一個時鐘周期的等待之后采樣到一個穩(wěn)定狀態(tài)的信號,達(dá)到消除不定態(tài)的目的。不過要注意,這樣的同步器只是減小了亞穩(wěn)態(tài)發(fā)生的概率,并不能完全消除亞穩(wěn)態(tài)的發(fā)生。而亞穩(wěn)態(tài)發(fā)生的概率的大小一般可以用MTBF(Mean Time Between Faliure)來表示。MTBF的值越小表示亞穩(wěn)態(tài)發(fā)生的頻率越高。
表示了MTBF的影響因子,可以看到,當(dāng)時鐘頻率越高,數(shù)據(jù)發(fā)生變化的頻率越高,MTBF越小,即亞穩(wěn)態(tài)發(fā)生的頻率也越高。
對于一些高頻電路設(shè)計,兩級觸發(fā)器所構(gòu)成的同步器MTBF仍然很小,這時候可以考慮再添加一級觸發(fā)器,即使用三級觸發(fā)器。另外,我們也希望當(dāng)數(shù)據(jù)被異步時鐘采樣時數(shù)據(jù)的變化頻率也盡可能小,因此一般數(shù)據(jù)在跨時鐘域之前最好可以用寄存器打一拍,減少數(shù)據(jù)的變化,從而減小亞穩(wěn)態(tài)發(fā)生的概率。
值得注意的是,同步器的使用只是消除了不定態(tài),但是同步器的輸出仍然可能是錯誤的,可能被采樣的信號是1,但是同步器輸出的確是0。這樣的錯誤是否是電路可以接受的要依據(jù)不同的設(shè)計來看,這便涉及到另外一個話題,如何使系統(tǒng)對產(chǎn)生的錯誤不敏感,本文暫不討論。
責(zé)任編輯:haq
-
電路
+關(guān)注
關(guān)注
173文章
6011瀏覽量
174156 -
時鐘
+關(guān)注
關(guān)注
11文章
1856瀏覽量
132677 -
同步器
+關(guān)注
關(guān)注
1文章
104瀏覽量
14990
原文標(biāo)題:跨時鐘域處理-亞穩(wěn)態(tài)與同步器
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
數(shù)字電路設(shè)計中:前端與后端的差異解析
數(shù)字電路編程語言介紹
數(shù)字電路與模擬電路的區(qū)別
模擬電路與數(shù)字電路的區(qū)別
BJT在數(shù)字電路中的應(yīng)用
如何使用 Verilog 進(jìn)行數(shù)字電路設(shè)計
一文解析跨時鐘域傳輸

評論