• Techo

[IC設計] 何謂Metastability? 使用clock domain crossing (CDC)的幾種方法

更新日期:2019年12月13日

網路上有非常多討論 meta stable 的文章

甚至有一些書還將此觀念大作文章

但其實所謂的 metastable(亞穩態)並沒有那麼複雜

與其看大篇的文字不如直接看下圖

有兩個 D flip-flop

分別由兩個不同的 clk 所驅動(並不一定誰的頻率快誰慢)

當 adat 隨著 aclk 產生一個 cycle 的訊號時

bclk 需要在一個 cycle 內將訊號鎖進 DFF

但由於兩個 clk frequency 不同

當 adat 在最後拉為0的瞬間時 (圖 data changing)

bclk 發生 positive trigger 將要把值鎖進 DFF

由於 adat 的訊號驟降讓 bDFF 沒有足夠的準備時間來完成鎖值

此時就會發生 meta stable (亞穩態)


至於什麼叫做沒有足夠的準備時間

其實 Flip-flop 這個元件其實是由許多 Cmos 所組成

C mos 要儲存值就需要足夠的"充電"時間

我們通常會把這段所需的時間叫做 setup time


所以到底是什麼造成 meta stable (亞穩態)

meta stable (亞穩態)指的就是訊號在某段時間內不能保證為1或是為0

如下圖

當 bdat1 處於 meta stable 時

後面如果分接到三個 not gate

我們根本不能保證每個 not gate 的輸出會是高電位還是低電位

因為他們的輸入源處於 metastable

所以輸入的電流不穩定

有的 gate 認為接收到的是高電位

有的卻認為接收到低電位

當 bdat1 接到多個組合電路(combination circuit)時

電路的功能就可能會出錯造系系統故障

所以這種 clock domain crossing (跨時脈域)的問題勢必要解決的


解決的方法其實並不難

如下圖

只要在 bdat1 後面不要接上任何組合電路

直接再接一級由 bclk 所驅動的 DFF 即可

這種方法叫做 two flip-flop synchronizer

從圖中可看到 bdat2 的值可確定為1

後面的組合電路也就正常運作了

此方法為最重要的觀念

之後探討的 qualifier、asynchronous FIFO 都是使用相同的解決方式來進行



[IC設計] Asynchronous FIFO,使用非同步FIFO解決bus CDC(Crossing clock domain)問題

[IC設計] 使用 Mux synchronizer (Qualifier)解決bus跨clock domain crossing的問題



0 次瀏覽
Logo2020.JPG
  • Instagram - White Circle
  • Google+ - White Circle
  • Facebook - White Circle

Contact Us

Techo私人程式家教

官方LINE ID : @tutortecho

zh-Hant.png

© Copyright 2018 by Sherry Wu and Techo Chao.

Proudly created with Wix.com,

but page loading is too slow,so I don't recommend it.