找回密码
 注册
关于网站域名变更的通知
查看: 802|回复: 1
打印 上一主题 下一主题

跨时钟域处理注意事项

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-10 10:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Taio 于 2018-10-10 10:35 编辑 ' j4 ]6 z& @! c$ A* d' U
$ ^  A' e8 U" z/ B% G7 R
跨时钟域处理注意事项
) ~0 |5 B/ C7 m" M9 L9 n
       4、处理跨时钟域时要注意哪些问题& X% T, z9 F% O" h) Q. M& S/ |5 v# O

$ n$ f2 S$ O! y1 U1 X       4.1)同步器前不能有组合逻辑电路$ Y: P* a' U1 W. i  V

- e9 A9 \" {" A
* ]' B" _% l  D) D) M* d
       如上图,在前一个时钟域的dff输出和后一个时钟域输入之间不能有组合逻辑,原因是组合逻辑会造成毛刺现象,后一级时钟域的dff很可能敲到毛刺,进而引入错误。
1 M, ?/ y7 Q) G% n* V0 c. o: |7 t5 U
0 l. K/ o% @4 A' R       4.2)避免重收敛(reconvergence)和分叉(divergence)4 h8 d6 p6 O4 F
8 I+ P% ^+ E( t* I( K  B( x0 q4 t

6 E  `8 W5 D! Z7 R% C% r
       重收敛的含义是,A时钟域的多根信号分别进行同步,同步到B时钟域,然后在B时钟域从新做逻辑汇聚成一根信号。这种同步的方式有一个很大的问题,你无法预期同步后的多根信号和之前还是一致的,例如,两根信号之前都是1,但是在同步后可能变成很多的情况。所以再重新汇聚肯定会出问题。例如下图中的状态机,在A时钟域可能是S1状态,但是同步后可能就变成了S2状态了。其实重收敛的问题可以避免,就是采用格雷码编码,避免一个时刻多个数据跳变。% ^/ }2 N$ B# D5 I

0 W$ {+ u0 m+ s1 c# N  |) I% \

; w' \$ K  u. e6 X& @
       如下图的格雷码编码再解码,就可以解决上述的一些问题。
, a# Z# _5 \' a# ^5 l# U  t8 O7 j! n. Q
2 g# U7 U8 v1 g5 Z- U  j* R4 d
$ t" m. R: t, {! o% z
       分叉的含义与之相反,在A时钟域的单根信号被分别同步到B时钟域的多根信号,这同样会面临同步不一致的情况,有的被同步成1,有的被同步成0。
$ c4 }2 g  V+ a# G/ {4 @1 O4 Q9 N$ t. r
! l9 M# d3 e1 V" P
       4.3)避免将cmd和data分开进行同步,而要绑定到一块采用异步fifo实现
9 }2 t; [2 s  n8 O1 t) k
- I" S& p6 D* q) v2 _
8 G* J: P  h. [5 Z# K# ~
       Cmd和data经过异步fifo处理后的延迟可能会发生变化,所以应当避免将他们分开进行同步,而要绑定到一块进行同步{cmd,data}。
6 I1 @) Y- C& t- g' s( ]& ^/ N. m8 h' t0 l3 o
       最后提一下异步复位同步释放电路,这种电路在soc中也广泛被使用。+ E. ^9 {8 O6 _; H4 p( w( r

: l/ C/ J" U( |' B. H+ b  ^
3 |" `5 y3 q% b* k5 ^- q# T  m
7 c) T; P0 d2 E/ K1 I
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-24 18:45 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表