1. 程式人生 > >FPGA基礎知識13(二級D觸發器應用於同步器,減少亞穩態)

FPGA基礎知識13(二級D觸發器應用於同步器,減少亞穩態)

需求說明:IC設計基礎

內容       :第一部分 關於兩級D觸發器減小亞穩態的原因

                  第二部分 關於亞穩態的討論

來自       :時間的詩

第一部分 關於同步器為什麼需要二級D觸發器的疑問

上週,在做VGA介面顯示實驗時,框圖中的同步器引起了我的注意。從理論上說,一級同步器已經能夠實現同步,為什麼還要使用兩級同步器呢?


首先,我想說理論與實際是有差距的,理論上在數位電路上的觸發器都是穩態的,要麼為0,要麼為1,因此理論上說一級同步就夠了,可實際上,除了高電平和低電平,同步器在建立時間或保持時間得不到滿足的情況下,會進入亞穩態。亞穩態通過不同的延時傳到組合邏輯中,可能為低電平,可能為高電平。


在此,補充說明建立時間和保持時間,建立時間(Tsu:set up time)是指在時鐘沿到來之前資料從不穩定到穩定所需的時間,如果建立的時間不滿足要求那麼資料將不能在這個時鐘上升沿被穩定的打入觸發器;保持時間(Th:hold time)是指資料穩定後保持的時間,如果保持時間不滿足要求那麼資料同樣也不能被穩定的打入觸發器。


一級同步器如圖1所示,如果時鐘域產生的訊號data_a的變化與clk時鐘域時鐘的邊沿取樣太接近,未滿足取樣建立時間。同步器故障導致輸出出現亞穩態,且在下一個時鐘邊沿到來之前,不會變成穩態。此輸出傳遞到後面的組合邏輯中,導致系統混亂。
兩級同步器如圖2所示,當第一級觸發器取樣非同步輸入之後,允許輸出出現的亞穩態可以長達一個週期,在這個週期內,亞穩態特性減弱

。在第二個時鐘沿到來時,第二級同步器取樣,之後才把該訊號傳遞到內部邏輯中去。第二級輸出是穩定且已被同步了的。如果在第二級取樣時保持時間不夠,第一級的輸出仍然處於很強的亞穩態,將會導致第二級同步器也進入亞穩態,但這種故障出現的概率比較小。

一般情況下,兩級同步器總體的故障概率是一級同步器故障概率的平方。在大部分的同步化設計中,兩級同步器足以消除所有可能的亞穩態了。

附錄:

二級D觸發器應用於同步器,減少亞穩態 - libinloveyou2008@126 - 年輕的歲月
圖1

二級D觸發器應用於同步器,減少亞穩態 - libinloveyou2008@126 - 年輕的歲月


第二部分 關於亞穩態的討論

最近在網上看了一些硬體筆試題中,問如何解決亞穩態的問題,有人給出的答案中有降頻使用,我不明白為什麼降頻使用可以解決亞穩態的問題。  (2011-3-18 14:23:15) 毛刺對高速訊號影響大  (2011-3-18 20:49:30) 降頻不能解決吧…… 只要有非同步電路就可能有亞穩態。 應該是在非同步過渡的地方好好處理。  (2011-3-18 21:11:54) 多級同步,頻率一定級數越多采到亞穩態的概率越小,一般採用2-3級。  (2011-3-18 22:08:46) 亞穩態主要是建立或保持時間不滿足導致的,不一定是頻率的問題,具體問題具體分析  (2011-3-18 23:39:21) 要看什麼原因了,就算是同步電路,setup time holdtime不滿足,也會出現亞穩態,非同步電路就更要考慮了,不同情況處理不同,你懂得  (2011-3-19 00:01:28)  亞穩態在非同步電路中是不可避免的,不管用什麼同步電路去同步非同步訊號,都會出現亞穩態。那同步電路的作用是什麼呢?其實是為了不讓亞穩態傳播。 兩級同步電路的思想其實是為了給亞穩態留出足夠的時間,好讓亞穩態變成穩定態。
一般情況下亞穩態持續的時間很短,所以兩級DFF同步之後的訊號基本上不會出現亞穩態,可以給後級使用。 這裡用兩級DFF的目的就是給亞穩態留出一個DFF的工作時鐘週期,如果第一級DFF的輸出出現亞穩態,那麼在一個時鐘週期內,讓亞穩態變成穩定態。 這樣第二級DFF取樣第一級DFF的輸出時,第一級DFF的輸出早就穩定了,因此不會出現亞穩態的傳播。所以在用兩級同步電路對非同步訊號做了處理後,降低同步電路的工作時鐘,就可以給亞穩態留更多的時間讓它變成穩定態,因此可以起到使電路更穩定安全的效果。 純個人理解,若哪裡說的有不正確的地方請指正,謝謝!  (2011-3-19 12:18:10) 對,亞穩態是無法避免的,只能降低出現的頻率  (2011-3-19 16:33:35) 亞穩態平均無故障時間(The metastability MTBF,即為由亞穩態決定的平均無故障時間)的公式:  MTBF=etMET/C2/(C1*fclk*fdata) (tMET/C2是e的上標)  C1 和C2 是常數,依賴於器件工藝和操作環境。 fCLK 和fDATA 引數取決於設計規格: fCLK 是接收非同步訊號的時鐘域的時鐘頻率,fDATA 是非同步資料的翻轉頻率(toggling frequency)。 更快的時鐘速率和更快的資料翻轉(faster-toggling data)會降低平均無故障時 間。 tMET 引數是亞穩態轉穩定時間(vailable metastability settling time),或者說時序裕量大於暫存器Tco 可 以讓潛在的亞穩態訊號達到穩定值的時間。tMET 對同步鏈來說就是鏈中每個暫存器輸出時序裕量的 和。 從這個公式來看降頻使用是降低亞穩態的一種方法。  (2011-3-19 16:47:20) 在一次面試時遇到這個問題,我當時說可以降頻使用,可那面試官說降頻使用不是解決亞穩態的一種方法,現在想想應該是可以的。  (2011-3-19 17:13:22) 亞穩態和電路的設計有關係。降頻往往也可以解決一部分的問題  (2014-7-31 11:16:52) 回覆 1# shufeng123 你可以看看特權同學的一遍博文,百度文庫裡就有。降低頻率,就增加了富餘量Tsl,alter官網上給出了MTBF跟(e^Tsl)成正比,MTBF越大,就月不容易出現亞穩態。亞穩態,一般用握手或者雙時鐘FIFO解決,網上說的兩級D觸發器,也只是對單個訊號應用的,只是消除亞穩態給樓面電路的影響,不會降低亞穩態發生的概率。降低工作頻率,資料頻率,或者增加富餘量Tsl 才能降低亞穩態出現的概率。  (2014-8-08 23:26:50) FIFO FIFOFIFO