作者horsehead (小孩臉 NNNN)
看板Electronics
標題Re: [問題]數位電路關於cross clock domain的問題?
時間Tue May 4 15:47:13 2010
※ 引述《arloha (我要去澳洲玩!!!)》之銘言:
: 目前我的研究中會使用到兩種不同時脈的clock來讓電路運作
: 現在的問題是
: 如何讓資料從較慢時脈控制的正反器送到較快時脈控制的正反器
: 以及較快時脈控制的正反器將資料送到較慢時脈控制的正反器
: 我找了一些關於這方面的訊息
: 目前知道這問題似乎又被叫做cross clock domain
: 我有看到如果要將資料從較慢時脈控制的正反器送到較快時脈控制的正反器
: 可以將較快時脈控制的正反器串接兩級(也就是兩級的移位暫存器)
: 以此來接收較慢時脈控制正反器的輸出資料?!
: 但另外一種情況我就沒找到詳細介紹....
: 不知道有沒有人對這方面有所了解的!!
: 先謝謝了~~
首先要看你要傳什麼東西 如果是控制信號是由另外一個clock domain 傳過來
而且只有一根的話 ex : enable 是可以用這樣兩級的去傳 但是若控制信號
有兩根以上的話 建議在原clock domain 先整合成一根後再透過兩級DFF去同步
ex : EN1 & EN2 都是 clock A 時脈產生出來的要給clock B 致能的控制信號
當EN1 & EN2 都為high時clock B區塊的電路要能夠被enable
如果是上述條件的話建議先把 EN1 & EN2 先AND起來產生出新的節點 EN3 後
再針對EN3這個信號做DFF兩級同步化後再傳入clock B domain 否則你若個別
同步化再傳入 clock B domain 會有因為 skew 問題導致 glitch 出現 而使
clock B domain 容易發生誤動作
上面是說明控制信號的傳遞方式 但是如果是資料信號 一般資料大多以bus呈現
所以出現skew的機率非常大 在這邊就建議就建議使用hand shacking 的方式來傳遞
資料才不會傳錯 或是使用FIFO
基本上看你要怎麼傳 但是不管是用什麼法 要同步化都要多花幾個clock cycle
的時間所以你也要考慮用這些方式去同步化之後會不會影響 到你電路整個時序
的順序
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.21.138.103
1F:→ horsehead:另外基本上非同步的東西在你做STA時會讓你分析起來很頭 05/04 16:09
2F:→ horsehead:痛 所以盡量能用越少clock domain 越好 05/04 16:10
3F:推 pupucar:精闢 推! 05/04 16:45
※ 編輯: horsehead 來自: 211.21.138.103 (05/04 16:58)
5F:推 bb7:原po的圖是CMU的博士論文... 05/04 19:08
6F:→ bb7:抱歉推錯orz 05/04 19:09
7F:→ ineedhope:synchronizer 跟 fifo 05/04 22:26
8F:推 DinoZavolta:推~!! 05/04 23:37