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