跨時鐘域( Clock Domain Crossing,CDC )通俗地講,就是 模塊之間數據交互時用的不是同一個時鐘進行驅動 ,如下圖所示:左邊的模塊FA由C1驅動,屬于C1時鐘域;右邊的模塊FB由C2驅動,屬于C2時鐘域。
跨時鐘域信號處理問題,首先要考慮的就是亞穩態問題。
為了使觸發器正常工作,輸入信號和時鐘必須滿足觸發器的建立和保持時間要求。在上面的圖2中,信號A與目標時鐘域C2是異步的,因為C1和C2屬于不同時鐘域。一旦遇到異步信號進入時鐘域,就不太可能滿足建立和保持時序約束,因此觸發器可能以進入亞穩態。在下圖中,FA的輸出信號A變化非常接近C2的時鐘邊緣,因此違反了FB的建立時間要求, 它可能導致目標觸發器FB違反setup或hold時間。輸出信號B可能會振蕩不確定時長。因此輸出是不穩定的,也可能會在C2的下一個時鐘邊緣到達之前穩定到某個值,這種現象被稱為亞穩態。
如果輸入信號A變化非常接近時鐘C2的上升沿,那么目標觸發器的輸出是亞穩態的。因此,可能最終穩定到信號B1和B2所描述的1或0。
處理跨時鐘域**(CDC)信號同步**的最常見方法之一是使用同步器電路。同步器電路的目的是通過最小化亞穩態的可能性和增加MTBF來保護下游邏輯。其中一個基本的同步器電路是 兩級觸發器同步器 (也稱為2-FF同步器)。
2-** FF同步器處理跨時鐘域信號同步**
兩級觸發器同步器是一種電路,其中兩個觸發器在目標時鐘域中背靠背連接。如果第一個觸發器由于建立/保持沖突而進入亞穩態,則第二個觸發器會提供足夠的時間讓第一個觸發器脫離亞穩態。從理論上講,當第二個FF對值進行采樣時,第一個FF可能仍處于亞穩態,因此可以對不正確的值進行采樣,使用超過2級FF作為同步器(3或4級FF),可以增加MTBF。
2-FF同步器電路非常適合單比特控制信號的同步 ,其中輸入切換速率小于目標時鐘頻率,換句話說,如果目標時鐘頻率超過源時鐘頻率的1.5倍,則不會丟失數據 。但是,如果源和目標時鐘頻率幾乎相同或目標時鐘頻率較慢,則源必須保持其值穩定,以便目標捕獲它,然后再更改為下一個值。這可以通過 握手時鐘域交叉 (CDC)技術來處理。
握手機制處理跨時鐘域信號同步
在握手技術中,源時鐘域將**“請求”信號**發送到使用 2-FF同步器的目標域。一旦目標域收到請求,它就會向源域發送“ack”信號,該源域使用 2-FF 同步器進行同步。ack 信號向源時鐘域指示目標已收到該值,源時鐘域可以更新其值。握手機制有許多實現版本,但原理保持不變: 同步request和ack信號 。request信號將在總線上指示一個新值即將發送,ack信號將指示可以更新數據總線。
上述機制在接口的帶寬使用方面確實有一個缺點。對于握手機制,數據總線在接收ack信號時無法更新,存在瓶頸,可以使用雙時鐘異步FIFO來解決這個問題。正確設計的FIFO可以增加整個接口的帶寬,同時仍然保持跨時鐘域的可靠通信。
異步FIFO可以被視為數據容器,其中發送方以源時鐘速率將數據寫入,接收器以目標時鐘速率彈出數據。FIFO的深度應該足夠,以便它不能溢出或下溢數據。
異步FIFO處理跨時鐘域信號同步
時鐘異步FIFO需要用到雙端口SRAM,一個控制寫入指針(數據應在SRAM中寫入的地址)的源代碼控制塊,一個生成讀取指針(應在SRAM中讀取數據的地址)的目標控制塊和二進制到格雷碼編碼器塊以及2-FF同步器電路。指針由各自的控制塊作為循環緩沖區進行管理。但是,要知道何時寫入(FIFO 未滿)和何時讀取(FIFO 不為空),源時鐘、目標時鐘控制塊需要分別具有讀取和寫入指針信號。將指針傳輸到另一個時鐘域并非易事。由于指針是多位信號,因此直接使用2-FF同步器不是一個好的選擇。因此,兩個指針都通過二進制到格雷碼編碼塊傳遞。這確保了在傳輸值時,只有矢量的一個位從一個時鐘更新到另一個時鐘,從而消除了在時鐘邊沿上同步多位總線的問題。
-
觸發器
+關注
關注
14文章
2000瀏覽量
61155 -
同步器
+關注
關注
1文章
98瀏覽量
14634 -
FIFO存儲
+關注
關注
0文章
103瀏覽量
5975 -
時鐘驅動器
+關注
關注
0文章
33瀏覽量
13833 -
SRAM存儲器
+關注
關注
0文章
88瀏覽量
13297
發布評論請先 登錄
相關推薦
評論