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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4731|回复: 5

[原创] 跨时钟域的异步信号交互问题讨论

[复制链接]
发表于 2012-7-26 11:27:00 | 显示全部楼层 |阅读模式

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

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

x
应该说“跨时钟域的异步信号交互问题”是数字前端设计里面一个重要话题。
这里我总结一下自己对这个问题的一些了接和认识,希望具有实际项目经验和扎实理论基础的EETOPER们热烈讨论。

1. 在两个异步的时钟域之间的信号交互可以分成不同的类别——
    按位数分(一位,多位);
    按作用分(控制信号,数据信号);
    按时钟频率分(快->慢,慢->快)。

2. 采用的方法基本有同步器、格雷码加同步器、握手方法、异步fifo等。
    当然针对上面的四种分类和实际要求要采用不同的方法。

3. 异步FIFO是采用得比较多的一种方法,异步FIFO本身的设计就涉及到跨时钟域的问题。

上面是我对这个问题一些比较片面和肤浅的看法,希望大家补充和完善,将这些方法具体化。
发表于 2012-7-28 22:16:31 | 显示全部楼层
异步信号需要寄存两拍
发表于 2012-7-29 13:51:01 | 显示全部楼层
我现在有个基本问题还没想明白,异步FIFO当中,要比较两个时钟域的地址,那么快时钟域的地址向慢时钟域传递,如何处理?
发表于 2012-11-8 16:42:24 | 显示全部楼层
回复 3# arccosx


    快时钟域的地址转换成格雷码,通过两级寄存器,同步到慢时钟域
发表于 2012-11-9 20:50:53 | 显示全部楼层
1、控制信号的CDC,一般而言都是使用双寄存器方法实现CDC,当然这个也是有限制的,一般来说需要使用快时钟同步慢时钟,如果是慢时钟同步快时钟呢,我们就需要把控制信号展宽(具体展宽有多种方法,可以在设计时延长有效周期等);这种方法在实际中用的比较多;
2、对于数据总线,一般使用握手机制或者是异步fifo来实现,握手机制实际上就是通过控制信号来告诉需要跨越的时钟何时采样数据是稳定的来达到安全可靠的跨越时钟区域。fifo则是在没有握手机制时使用较多,一般异步fifo的结构是写地址控制,双端ram,读地址控制,读地址gray转换以及CDC至写时钟区域然后与写地址进行比较从而产生满信号以及接近满信号,写地址gray转换并CDC至读时钟区域再与读地址进行比较产生空信号以及接近空信号。具体实现时可能还有区别,不过方法应该都是大同小异的。个人觉得在设计的时候遇到CDC问题时,仔细分析两个时钟区域的关系,具体问题具体分析选用合适的方案会比较好些。
发表于 2013-8-13 09:09:30 | 显示全部楼层
回复 3# arccosx
我觉得 格雷码加同步器 是不能解决这样的问题的,因为慢时钟域采到的Gray Code可能已经变化多位,所以请高手解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-25 16:29 , Processed in 0.033668 second(s), 8 queries , Gzip On, Redis On.

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