跨时钟域问题

[复制链接]
 楼主| tmkdfan 发表于 2013-8-14 11:23 | 显示全部楼层 |阅读模式
我需要将clka的八位数据传递给clkb时钟域,除了用FIFO外还有什么可靠的方法?
因为我这数据只是偶尔才会发生变化,那么如果我直接用寄存器打两拍是否可靠?
如果用握手的话怎样用?有很多人讲这个问题但是还是没搞清楚。麻烦知道的人讲讲。
ococ 发表于 2013-8-14 11:40 | 显示全部楼层
1.clka,clkb分别为多少M?
2.数据偶尔变化,变化的数据保持多少个时钟周期?
Backkom80 发表于 2013-8-14 11:59 | 显示全部楼层
还有,数据是多少位的,1bit,还是多bit?
钻研的鱼 发表于 2013-8-15 08:49 | 显示全部楼层
          直接打两拍也是不可靠的。譬如在clka时钟域,数据开始是0x00,下一个数据是0x03,注意bit0和bit1发生变化,但每个bit到clkb时钟域的路径长度不一样,有可能bit0的路径比bit1短,因此clkb采样到的数据是0x00->0x01->0x03,从clka时钟域来看,只有两个数据,0x00和0x03,但对于clkb来讲,是是三个数据0x00 0x01 0x03,所以一个简单的解决方法是clka在输出数据的时候,也输出有效信号,有效信号在数据中央,当clkb检测到有效信号,数据此时肯定有效。这种方法还需要很多改进,譬如要考虑clka和clkb的频率差等。上传两篇经典异步fifo设计,其实这个异步fifo设计就是解决不同时钟域数据传输问题,而且考虑更全面,可仔细研读

本帖子中包含更多资源

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

×
winkle.zhang 发表于 2013-8-15 18:38 | 显示全部楼层
搬个板凳
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

68

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

7

主题

68

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部