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

跨时钟域处理注意事项

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Taio 于 2018-10-10 10:35 编辑 8 M5 m7 F  j  M5 J8 h

! x' A; K2 F5 H$ K* Q5 ^
跨时钟域处理注意事项

, ~4 ^) U6 x4 G+ M' ~- x
       4、处理跨时钟域时要注意哪些问题
) Q7 L: B" z/ _; P9 o& H
( S/ ?; A% O- x5 D) j/ |       4.1)同步器前不能有组合逻辑电路1 \8 f. P! y% S5 W3 z
$ W6 b+ g8 h" e7 I5 }" j) o' V, x
  l, l8 a, N1 j, t- L( j& a5 E
       如上图,在前一个时钟域的dff输出和后一个时钟域输入之间不能有组合逻辑,原因是组合逻辑会造成毛刺现象,后一级时钟域的dff很可能敲到毛刺,进而引入错误。
: [$ W3 ]( F6 H4 K1 P3 j4 d. `* P2 I! T" W3 E) o
       4.2)避免重收敛(reconvergence)和分叉(divergence)9 c1 c2 F! @" J: {

. G, T: {+ B0 Z) P* O
3 u3 W- G9 A* j6 j; P
       重收敛的含义是,A时钟域的多根信号分别进行同步,同步到B时钟域,然后在B时钟域从新做逻辑汇聚成一根信号。这种同步的方式有一个很大的问题,你无法预期同步后的多根信号和之前还是一致的,例如,两根信号之前都是1,但是在同步后可能变成很多的情况。所以再重新汇聚肯定会出问题。例如下图中的状态机,在A时钟域可能是S1状态,但是同步后可能就变成了S2状态了。其实重收敛的问题可以避免,就是采用格雷码编码,避免一个时刻多个数据跳变。
( ^+ ~2 [0 C! k. J7 v3 _8 @; I- [0 B8 |! n) @0 c5 J1 z* T" p

% w% R2 D% k. t* q6 V" b
       如下图的格雷码编码再解码,就可以解决上述的一些问题。
3 |  R& d% X( u( f, ], G( B# y4 A6 ~) N

7 @# f" \9 f4 I% f# R, j- }
       分叉的含义与之相反,在A时钟域的单根信号被分别同步到B时钟域的多根信号,这同样会面临同步不一致的情况,有的被同步成1,有的被同步成0。
; D! t& u* o* F; q) h6 w. ^# A- r. D9 p5 S
+ D6 B. V, Y- T* H: q( b8 }. E
       4.3)避免将cmd和data分开进行同步,而要绑定到一块采用异步fifo实现
( K2 F$ y3 i- L- W" G. O+ O' m6 H# c( i3 V" h1 y: H/ f$ {9 D

; g; t/ W7 s. [2 W
       Cmd和data经过异步fifo处理后的延迟可能会发生变化,所以应当避免将他们分开进行同步,而要绑定到一块进行同步{cmd,data}。
, `0 Z% n& l6 v/ W5 J7 E
: ^. B" \/ s) W; X* [; A+ E3 p       最后提一下异步复位同步释放电路,这种电路在soc中也广泛被使用。! V- q; b3 z9 u) `! E' ?# v& n
4 @$ G3 V' B- C$ C  m* b4 o
( i" [" Z- t" S' q

) U& H. E8 D2 t! S# w7 Z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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