多個bit信號的跨時鐘域僅僅通過簡單的同步器同步時不安全的。
如下圖:
雖然信號都同步到目的時鐘域,可完成的功能卻與設計的初衷不相符。
解決方案之一爲對信號進行格雷碼編碼,但此方案只適用於連續變化的信號。另一種方案爲增加新的控制信號en,確保傳輸信號穩定時採樣。比如在傳輸信號穩定輸出1、2個clk後再進行採樣。
上面說到的爲多bit指示信號傳輸,而數據流的傳輸與指示信號不同在於:數據流大多具有連續性,及背靠背傳輸;數據流要求信號具有較快的傳輸速度。主要的方案是利用FIFO進行傳輸。
異步FIFO結構如下:
圖中可以看出,正確產生空滿信號是任何FIFO設計的關鍵。其設計原則是:能寫滿而不溢出,能讀空而不多讀。