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

跨时钟域处理注意事项

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Taio 于 2018-10-10 10:35 编辑 ( H: V) d) \+ S* K& B- f

. @( {; y# _* c1 q
跨时钟域处理注意事项

0 E. T1 |6 R9 U) d/ }% o$ u, W
       4、处理跨时钟域时要注意哪些问题
0 d) e0 d5 G3 D
( |0 g( S. @7 A       4.1)同步器前不能有组合逻辑电路" \6 P; E1 t; R9 y9 [  S
% I1 K' S/ J$ c9 f& S2 q  i
3 q( M. W! C# T! d4 V3 Q9 r* I
       如上图,在前一个时钟域的dff输出和后一个时钟域输入之间不能有组合逻辑,原因是组合逻辑会造成毛刺现象,后一级时钟域的dff很可能敲到毛刺,进而引入错误。
8 q' E% |- q0 H- ^4 [/ B& K# q8 a
* O2 P7 C, w9 {* a0 }: p       4.2)避免重收敛(reconvergence)和分叉(divergence)
, t% g& i; P8 n* B) ?3 [/ b
6 l& ^3 y# B/ k2 i. Z5 O

* |2 I% Z- Y. A0 j& Z( J
       重收敛的含义是,A时钟域的多根信号分别进行同步,同步到B时钟域,然后在B时钟域从新做逻辑汇聚成一根信号。这种同步的方式有一个很大的问题,你无法预期同步后的多根信号和之前还是一致的,例如,两根信号之前都是1,但是在同步后可能变成很多的情况。所以再重新汇聚肯定会出问题。例如下图中的状态机,在A时钟域可能是S1状态,但是同步后可能就变成了S2状态了。其实重收敛的问题可以避免,就是采用格雷码编码,避免一个时刻多个数据跳变。! e8 s, D6 _( H, o, r7 s

% o2 o9 J; Q( w" I2 X

/ |9 [7 h$ N% K! `
       如下图的格雷码编码再解码,就可以解决上述的一些问题。
& [. \  |0 S9 b- X$ C  v+ m+ M; I. K; r
( V, j% d1 [3 ?; I5 Q0 p5 G
       分叉的含义与之相反,在A时钟域的单根信号被分别同步到B时钟域的多根信号,这同样会面临同步不一致的情况,有的被同步成1,有的被同步成0。
1 [9 z+ l9 a5 A: G6 j# E+ \; P/ [
! \1 ?  S6 n0 v  N: f0 t! ?, v
2 N" _6 \  b* U; V
       4.3)避免将cmd和data分开进行同步,而要绑定到一块采用异步fifo实现
& K: O" y' t5 M* m& a: E! o: C$ Q1 n' c2 n0 h/ ^  x

1 A) [: k8 V4 o2 M5 A: ^
       Cmd和data经过异步fifo处理后的延迟可能会发生变化,所以应当避免将他们分开进行同步,而要绑定到一块进行同步{cmd,data}。
; i8 ~4 K) B7 D$ ^) Z/ u9 k9 ~$ G2 d- W
       最后提一下异步复位同步释放电路,这种电路在soc中也广泛被使用。
) r. j  ~. o5 B4 {# y$ X1 Y" G5 n7 e! Q
( C9 s' q; ^- T0 B
/ ]! V$ T0 o1 Q. h( M2 V5 R3 i/ X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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