一、簡要概述:
在芯片設計過程中,一個系統通常是同步電路和異步電路并存,這里經常會遇到CDC也就是跨時鐘域處理的問題,常見的處理方法,可能大家也已經比較熟悉了,主要有單bit跨時鐘處理、多bit跨時鐘處理兩大類,本文以一個總線全握手跨時鐘域處理為例解析,單bit和多bit跨時鐘處理。這里需要注意是多bit含義比較廣泛和總線不是一個概念,如果多個bit之間互相沒有任何關系,其實,也就是位寬大于1的單bit跨時鐘處理問題,如果多個bit之間有關系,作為一個整體,那么我們就叫做總線。因此,大家常說的“多bit跨時鐘處理”也就是總線跨時鐘處理。
二、總線全握手應用場景:
適用慢速總線信號跨時鐘域。慢到快,快到慢均可,只要保證源信號更新時間大于同步時間即可。同步周期為6或者8個慢時鐘周期。
三、總線全握手原理框圖:
總線全握手跨時鐘域原理圖如下所示,使用了兩個單bit同步器模塊,因為是請求和響應都是電平信號,所以這里采用單bit同步器(寄存器打2拍或者3拍)。這里反饋過來的dst_ack_sync信號,經過一定處理可以得到src_req和sync_ok信號,圖中我未畫出。可以確定的是當請求和響應均為低電平時,表明一次同步完成。
兩級觸發器同步原理:假設第一級觸發器的輸入不滿足其建立保持時間,它在第一個脈沖沿到來后輸出的數據就為亞穩態,那么在下一個脈沖沿到來之前,其輸出的亞穩態數據在一段恢復時間后必須穩定下來,而且穩定的數據必須滿足第二級觸發器的建立時間,如果都滿足了,在下一個脈沖沿到來時,第二級觸發器將不會出現亞穩態,因為其輸入端的數據滿足其建立保持時間。同步器有效的條件:第一級觸發器進入亞穩態后的恢復時間 + 第二級觸發器的建立時間 < = 時鐘周期。
注意:在芯片設計中,單bit同步器通常不是私自直接打兩拍處理的,而是使用專用的同步器單元,這樣做的好處是方便后端(PR)可以把兩級觸發器視為一個整體,把兩級觸發器放的很近(線延時比較小)。這是因為能更好的滿足第二級觸發器建立時間,有效的減少亞穩態傳播。
四、總線全握手仿真測試 :
場景1:源時鐘100Mhz,目的時鐘25Mhz,2級同步器。
從上圖可以看出,同步完成需要6個目的時鐘周期,也就是說完成一次全握手需要6個目的時鐘周期的時間,這就要求源時鐘數據信號的更新時間,必須大于同步時間。如果變化太快中間的數據會漏采。
場景2:源時鐘25Mhz,目的時鐘100Mhz,2級同步器
從上圖可以看出,同步完成需要6個源時鐘周期,也就是說完成一次全握手需要6個源時鐘周期的時間,這就要求源時鐘數據信號的更新時間,必須大于同步時間。如果變化太快中間的數據會漏采。
場景3:源時鐘25Mhz,目的時鐘100Mhz,3級同步器
從上圖可以看出,同步完成需要8個源時鐘周期,也就是說使用3級同步器完成一次全握手需要6+2個源時鐘周期的時間。
結論:在使用總線全握手同步器時,不管源時鐘與目的時鐘多大,同步的時間均是慢時鐘的6個時鐘周期,如果使用3級同步器則是8個慢速時鐘周期。這就要求源時鐘信號不能變化太快。
原文標題:CDC(一) 總線全握手跨時鐘域處理
文章出處:【微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
電路
+關注
關注
172文章
5901瀏覽量
172138 -
時鐘
+關注
關注
10文章
1733瀏覽量
131451
原文標題:CDC(一) 總線全握手跨時鐘域處理
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論