在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3180|回复: 4

[求助] 问一个跨时钟域同步的问题

[复制链接]
发表于 2013-10-22 10:10:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
时钟域同步问题.jpg
如图,clk_a和clk_b两个时钟不相关。clk_a Domain有个pulse信号,同时更新q_a (从A0变为A1)。这个pulse信号经过一个pulse转换器会在clk_b Domain产生同样的一个cycle的pulse信号。
clk_b Domain会根据这个新的pulse信号区去捕获q_a的值,随即更新q_b(从A0变为A1)。
现在问题来了,虽然这两个pulse之间的时间差至少是两个clk_b cycle。但q_a到d_b的delay如何保证?因为clk_a和clk_b是false path.
如果q_a到d_b路径太长,这套逻辑就乱了。
这套逻辑和握手信号同步本质上是一样的。
后端工具能保证任意路径都不要太长么?design rule check能派上用场么?
求解答。
发表于 2013-10-22 18:40:09 | 显示全部楼层
回复 1# coyboy912

先说说你的最终目的是什么,如果只是把clk_a时钟域的d_q传送到clk_b时钟域的q_b,那直接DFF打两拍就可以了。
 楼主| 发表于 2013-10-22 20:11:38 | 显示全部楼层
回复 2# xiaojigao
嗯,单比特确实如此。
如果是多比特信号的同步呢?有人说可以用FIFO,未免有点小题大做。而且深度为1的FIFO本质上也是握手同步,ptr的逻辑和data path本是是分开的,如何保证data path的delay不会太长?
发表于 2013-10-23 08:52:22 | 显示全部楼层
回复 3# coyboy912


    如果你的d_a是多比特信号,而且en信号可能连续有效,那么只能用异步FIFO。其他的方式做不到。(至少我想不到别的简单方式,呼唤高手指点。)而且你的en那边还得加一个FIFO满标志的握手信号,不然FIFO可能溢出。除非你的源端保证数据流没那么快。
发表于 2013-10-23 09:20:22 | 显示全部楼层
q_a到d_b, 这个一般没有人管,当然这个是不严谨的。(但是P&R tool的算法一般也不会让这两个寄存器隔太远,因为P&R tool都是尽力做到最好的,会努力把相关的逻辑放在一起。)所以一般都假设这个wire delay不会超过2T clcok_B的周期。
如果楼主实在不放心,DC/PT 有个"set_max_delay"的constraint,但是这个指令在算delay的时候跟clk_A / clk_B的波形(rising edge的时间差)有关系,你可以尝试下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 10:43 , Processed in 0.024773 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表