http://w2.cadence.com/whitepapers/cdc_wp.pdf
除了推文中的連結外,我覺得這也滿有用的,
double sync其實是工程師滿常用的方法,是用來處理
level且是1 bit的訊號,若是兩個bit以上,就必須參
考推文中的內容,需要有gary code轉換的動作,目前
在project中滿常看到是處理fifo或是momory的addr訊
號..
上面講到的是處理level,若是要處理1T的pulse,不能
只做double sync而已,不過這有點難解釋,詳細的情形
還是參考文件的圖吧!
籠統的描述大概是
step1:先在原本的clk_a做出一個很長的pulse
step2:然後在triple sync到clk_b做成一個訊
號叫syn_d3(隨便取的名字),最後把syn_d2和
syn_d3做X-or出來一個pulse
不過這不是唯一的方法...
強調一點,上面講的都是對於"控制訊號",不是data...
data要cross clock domain參考一下文件說明...
以上的東西其實在網路上都可以找到現成的module,工作上
只要知道怎麼用就行了,而真正最難的地方在於,crossing
clock domain的問題,在於整體的電路都會因為sync的處理
造成電路會有時間差,很多判斷訊號都會有延遲,有時候會
跟你預期的相差幾T的時間..
coding完成後,最好還要用cdc的tool做check,以免有些訊
號沒做同步化的處理..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.72.208
※ 編輯: sasako 來自: 118.169.72.208 (05/10 01:30)