(一)單bit信號同步器
最經(jīng)典的2DFF 1-bit同步器如下,下圖結構通常用于單bit控制信號的異步處理:
絕大數(shù)情況下,當?shù)谝粋€寄存器R1進入亞穩(wěn)態(tài)后,在第二級寄存器R2采樣R1的輸出前,R1的輸出已經(jīng)能穩(wěn)定在0或1。
注意:
cdc_s信號必須做到glitch free,也就是我們通常說的寄存輸出;
int_s信號鏈路禁止組合邏輯,其本質也是杜絕glitch的出現(xiàn)。
偏執(zhí)狂的IC designer肯定會問,第一級寄存器R1的行為到底是啥樣子的?由于cdc_s信號是Tx clock Domain,而R1寄存器的采用時鐘是Rx clock Domain,當Rx clock采樣時,若cdc_s正好跳變(不滿足setup/hold),那么就會出現(xiàn)如下兩種情況,而前仿真是無法仿真出下圖2種行為的(具體見芯片設計之CDC異步電路(一)一文)。
(二)DMUX同步器 兩級寄存器(先進工藝要求三級)的同步器通常用于控制信號的異步處理,但是data bus的異步處理呢?我們可以采用DMUX結構。
注意:
tx_sel、rx_sel有效時,cdc_d數(shù)據(jù)總線必須保持穩(wěn)定;
(三)握手處理
源時鐘域先將數(shù)據(jù)發(fā)送到總線上,并給出一個valid信號,而目標時鐘域同步valid信號后,若valid信號為高電平則采樣總線數(shù)據(jù),并返回一個ready信號給源時鐘域。源時鐘域再次同步該ready信號,若ready信號為高,則代表一次握手成功,數(shù)據(jù)傳輸完畢,開始進行下一次數(shù)據(jù)傳輸。
采用握手機制可以保證異步multi-bit數(shù)據(jù)傳輸不出現(xiàn)錯誤,但由于需要等待握手的完成再傳輸數(shù)據(jù),因此傳輸效率較低。
(四)異步FIFO
老生常談的異步FIFO,其本質是采用格雷碼,在地址連續(xù)的情況下,其對應格雷碼每個周期只變化1bit,因此可以直接異步采樣。
注意:
FIFO的overflow、underflow問題;
tx_addr是連續(xù)的,即地址hamming distance是1;
FIFO深度須2^n;
經(jīng)典的FIFO結構如下:
核心電路:是將FIFO讀寫地址指針的二進制碼轉成格雷碼,方便同步器打兩拍傳遞到對向時鐘域去做空滿判斷。
空滿判斷:為了區(qū)別空滿,我們增加1bit的地址(MSB),我習慣直接用Gray碼比較讀寫指針判定空滿:
當Gray碼讀寫指針完全相等時,F(xiàn)IFO空;
當Gray碼讀寫指針最高2bit相反,其余bit相同時,F(xiàn)IFO滿; 通常二進制碼比較空滿是:最高bit不同,其余bit相同,則FIFO滿,而格雷碼則不同哈。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5433瀏覽量
124335 -
CDC
+關注
關注
0文章
57瀏覽量
18205 -
同步器
+關注
關注
1文章
109瀏覽量
15167 -
FIFO存儲
+關注
關注
0文章
103瀏覽量
6185 -
異步處理
+關注
關注
0文章
7瀏覽量
6628
原文標題:芯片跨時鐘域設計(一)
文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
跨時鐘域控制信號傳輸設計方案

如何處理好FPGA設計中跨時鐘域間的數(shù)據(jù)
兩級DFF同步器跨時鐘域處理簡析
如何利用FPGA設計一個跨時鐘域的同步策略?

關于FPGA中跨時鐘域的問題分析
fpga跨時鐘域通信時,慢時鐘如何讀取快時鐘發(fā)送過來的數(shù)據(jù)?
如何處理跨時鐘域這些基礎問題

評論