賣場連結

歡迎參觀我的賣場

2015年9月13日 星期日

Asynchronous Signals and Metastability FPGAs_WORLD_CLASS_DESIGNS 80~106

2.3.7 Asynchronous Signals and Metastability
這本書這個章節,對於Metastability給了相當清楚的解釋,因此特別跟大家分享。(如果有錯的地方,請見諒。)

對於一般設計,內部的電路架構,應該都會是由synchronous的方式設計而成。

那為什麼還會有Metastability的問題產生呢?



Metastability最常發生的原因,都是來自於FPGA外部進來的訊號處理的不好造成的。





上面的圖,清楚的描述了Metastability所造成的問題。

當一個外部Asynchronous訊號"ASYNC_IN"進來後,ff1這個 Flip-flop的輸出Q會因為外部訊號ASYNC_IN 的驅動能力(訊號爬升速度與抖動都會造成電路充放電不穩)造成有一段時間unstable,而這不穩定的情況,會影響到後面的A跟B的訊號,以這個例子來說,理論上應該必須要同時觸發的A與B訊號,卻變成隔了一個cycle,而這當然也會影響輸出OUT1、OUT2也差了一個cycle,而這種問題一旦發生,則會非常非常難除錯,因此面對這種情況則必須要有特殊的處理方式。

在書中有提供解決Metastability所造成的問題,那就是在ASYNC_IN 的訊號後面擺一個synchronizer  Flip-flop ,讓SYNC_IN訊號可以再透過一級電路緩衝放大來得到較穩定的訊號。
但,必須注意,在文章的後面部分,有特別強調這樣的處理方式並非可以得到百分之一百的穩定度;其原因來自於,我們並不能確定外部訊號只需要延遲一個 Clock 周期 就可以stable,
當然你可以多加幾級synchronizer  Flip-flop,將會得到更好的效果,但這樣你的後面電路也會跟著一起延遲幾個Clock 周期才會開始做動;重點!! 這個問題並沒有解決的方法,一定得針對進來的訊號了解(通常這關係到電路板的設計,在電路板設計的時候,就必須保證訊號的穩定度,否則無論在FPGA內部如何做處理,都會有一定的機率會有問題。),在針對這個訊號做處理。









沒有留言:

張貼留言