作者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