從這篇開始,推送一系列晶元設計中跨時鐘域(cdc) 的知識。跨時鐘域設計幾乎是現代數字晶元設計中所有設計人員必須要掌握的基本知識,但是從自身的經歷來說,這方面的知識在本科和研究生的課程當中都沒有講過,卻是面試中經常被考到的知識點。同時工作中工程師也必不可少地要和cdc打交道,考慮如何進行跨時鐘域設計,以及掌握cdc 相關的eda工具。以下文章我們就從跨時鐘域設計的最基本開始講起,跨時鐘域得基本問題講解,亞穩態問題。
數字系統中(fpga,數字晶元尤為突出)一旦出現cdc的問題,可能會導致以下後果
• 邏輯功能發生錯誤,比如控制訊號,握手訊號錯位
• 資料發生錯誤,比如data bus的值,memory中存的值發生錯誤
• 發生錯誤的時間可能隨機,很難以復現相同的錯誤
• 很難以通過軟體修復,即使能夠修復,也可能需要犧牲效能和功耗
我們接下來的跨時鐘域分析,當然都是基於同步電路的。同步電路的核心就是觸發器,觸發器的種類有很多種,最常用的就是d觸發器。在這裡我們還是首先複習一下基本概念: 建立時間setup time和保持時間hold time, 以及亞穩態metastability。
一、概念
1、建立時間與保持時間
觸發器在時鐘上公升沿來臨時對資料進行取樣,產生對應的輸出。但是實際器件無法瞬時完成資料取樣這一過程,需要資料在時鐘沿前後均穩定一定時間,即引入了(觸發器的)建立時間與保持時間這一概念。
建立時間tsu:時鐘有效沿到來之前資料必須保持穩定的最小時間;
保持時間th:時鐘有效沿到來之後資料必須保持穩定的最小時間;
2、恢復時間與去除時間
恢復時間(recovery time):與同步電路中的建立時間類似,是指非同步控制訊號(如暫存器的非同步清除和置位控制訊號)在「下個時鐘沿」來臨之前變無效的最小時間長度。這個時間的意義是,非同步控制訊號在時鐘上公升沿來臨trecovery時間就要保持穩定,如果保證不了這個最小恢復時間,也就是說「下個時鐘沿」來臨時,這個非同步控制訊號不能保證正常執行。
去除時間(removal time):與同步電路中的保持時間類似,是指非同步控制訊號(如暫存器的非同步清除和置位控制訊號)在「有效時鐘沿」之後變無效的最小時間長度。這個時間的意義是,非同步控制訊號在時鐘上公升沿后仍需保持tremoval的穩定時間,如果保證不了這個去除時間,也就是說這個非同步控制訊號的解除與「有效時鐘沿」離得太近,那麼依舊不能保證這一非同步控制訊號能正常執行。
3、亞穩態
亞穩態是fpga系統中的乙個常見問題,亞穩態的出現輕則導致輸出錯誤,嚴重的甚至會導致系統崩潰。因此對亞穩態的了解必不可少,本文在查閱眾多資料的基礎上,對亞穩態的概念、亞穩態的產生原因、以及如何避免亞穩態進行了分析與記錄
概念:亞穩態是指觸發器無法在某個規定的時間段內到達乙個可以確認的狀態。即:如果觸發器的輸入電壓取樣時間過短,則觸發器需要花很長時間來實現輸出邏輯達到標準電平,在這段時間裡輸出端在高低電平之間處於振盪狀態,而不是等於理想輸出值。也就是說,電路處於中間態的時間變長,使得電路「反應」遲鈍,這就是「亞穩態」。(例如輸入訊號在時鐘有效沿的建立時間和保持時間之間改變了,導致不滿足觸發器的建立時間或保持時間,導致輸出有一段時間的不穩定態,就是亞穩態。)
數位電路中,對於電平小於電壓閾值 vl的稱為0,大於電壓閾值vl 稱之為1,而電平位於電壓閾值之間時(無法確定電壓為0還是1)叫做系統的亞穩態是指觸發器無法在某個規定的時間內達到可以確認的狀態。一旦觸發器進入亞穩態,則既無法**觸發器的輸出電平,也無法**什麼時候穩定在某個確認的電平上。(穩定所需時間不定、輸出結果不定)
那麼我們能夠完全消除亞穩態嗎?答案是否定的。其實我們關心的並不是亞穩態,而是說能否避免由於亞穩態而造成的邏輯問題。在這裡要引入乙個mtbf的概念。mtbf-- mean time between failure. 意思是兩次失效之間的平均時間。簡單來說,就是這個晶元或者這個ip或者這個電路發生兩次發生錯誤之間的間隔。對於不同的系統和應用場景,mtbf的要求也不同。比如說對於我們的手機,沒有人拿乙個手機用二三十年吧?那麼如果能夠保證mtbf大於30年,那麼也等效於在整個手機的使用壽命中,這個邏輯錯誤不會發生2次,那麼針對這個錯誤來說,這樣的mtbf是可以接受的。但是對於有些應用場景,比如通訊衛星,乙個通訊衛星的壽命可能超過二三十年,那麼這種情況下mtbf 如果只有30年,那麼就無法接受了。
關於mtbf,還有乙個誤區需要澄清,就是mtbf只要大於產品的設計使用壽命就可以了,這其實是不嚴謹的。因為乙個產品可能由多個系統組成,每個系統又是由多個子系統組成,每個子系統可能細分下去是由更小的單元組成。整個產品不發生失效的概率是所有部分不發生失效概率的乘積。所以越是小的單元,越要保證mtbf越高,這樣才能不會導致整個產品的mtbf 有顯著下降。
二、產生與消除
亞穩態一般發生在跨時鐘傳輸、非同步訊號採集中以及復位電路中。 在同步系統中,輸入總是與時鐘同步,因此暫存器的setup time和hold time是滿足的,一般情況下是不會發生亞穩態情況的。(在同步邏輯中只要sta分析過了正常是不會遇到亞穩態問題的,sta分析已經保證了每個觸發器都能滿足自己的建立時間以及保持時間)。
數位電路時鐘問題 Jitter與Skew區別
在博文 時序分析之靜態分析基礎中提到了一次時鐘偏斜問題,只是一筆帶過而已,這裡重新拿過來看看,並且新增時鐘抖動 jitter 相關知識點,這是學習fpga經常遇到的名詞。先貼出來時鐘偏斜的定義 時鐘抖動 jitter 定義 簡言之,skew通常是時鐘相位上的不確定,而jitter是指時鐘頻率上的不確...
數位電路中的觸發器與鎖存器(1)
第一部分首先講述鎖存器1 latch由電平觸發,非同步控制。在使能訊號有效時latch相當於通路,在使能訊號無效時latch保持輸出狀態。dff由時鐘沿觸發,同步控制。2 latch對輸入電平敏感,受佈線延遲影響較大,很難保證輸出沒有毛刺產生 dff則不易產生毛刺。3 如果使用閘電路來搭建latch...
數位電路中關於IO口驅動能力的幾個問題
在電子設計中一些基本的問題需要我們掌握。今天看了上拉電阻和下拉電阻等講到了關於驅動能力,不太懂,於是谷歌了下,看到如下文章。其中是關於驅動能力的幾個問題。直接進入主題吧。1 問 為什麼說驅動能力不夠是因為提供電流太小而不是電壓?如何分析驅動能力不夠?答 首先我們看到的驅動能力不夠大部分是在你選擇的負...