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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 老扁

异步设计难题证答

[复制链接]
发表于 2010-5-29 11:30:29 | 显示全部楼层
好老的帖子,好老的问题。个人认为lz确实把简单问题复杂化了,其实就是用异步fifo,读、写方各维护自己的地址,采用gray编码。
具体到这个问题,使用4个32位的buf, 但地址用3位的gray码(为什么3位,2位是不是就够了?不知道的再想想),而且只需要输出方(即:clk2)采样clk1时钟域的地址,然后产生not_empty标志,这其实也就是clk2输出的valid信号,数据输出用clk2的读地址的低两位来选择。
这种结构对clk1,clk2的频率无任何要求,只是clk1的写fifo的数据率小于clk2的频率即可。
发表于 2010-5-29 11:41:38 | 显示全部楼层
补充一点,两个异步时钟域之间互采,要么单根信号->即结绳法,要么是采用gray编码的多根信号,数据一般用fifo缓存,有时也可直接送到另一个时钟域(只要能保证是稳定的),例如在异步的AHB Bus Slave设计的时候。
发表于 2011-7-29 19:10:40 | 显示全部楼层
回复 43# 老扁
怎么分解valid信号?
发表于 2011-8-23 14:32:13 | 显示全部楼层
用个33位宽度的fifo,左侧clk1把32位数据和valid拼起来都作为数据往里写,右侧clk2往外读,再把valid分离开,后续用valid处理数据。
发表于 2012-2-9 15:48:23 | 显示全部楼层
The basic question is how to do "async data transfer" reliable.

Solution is:
1. handshake. but transfer speed is slow.
2. async fifo. fast speed, but need more hardware.

You can trade off according to your requirement in start.
发表于 2012-3-9 22:35:15 | 显示全部楼层
时钟欲切换
发表于 2012-5-4 21:09:18 | 显示全部楼层
顶alanzheng,
多比特线可以用DMUX和异步FIFO实现,在这个case里,考虑到clk1:clk2=1:1或1:2的情况时,还是用异步FIFO实现,只不过这个异步FIFO可以简化,不用读写地址来回同步。
发表于 2012-5-11 23:14:20 | 显示全部楼层

很老的帖子了,之前我们也有类似的设计,也是采用这样的方式处理的,
其实FIFO的结构上也可以做文章,这个FIFO不需要设计成通用的FIFO结构,只需要将空满信号传递到对端就可以了,这这在AMBA的总线转换中经常使用的,可以采用这一方式,不过采用通用的FIFO简单,直接实例化,
发表于 2012-5-12 07:25:43 | 显示全部楼层
可以考虑clk2正负边缘一起采样,相当认为拔高clk2频率
发表于 2012-5-29 23:38:10 | 显示全部楼层
难度很大啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-28 23:09 , Processed in 0.025157 second(s), 5 queries , Gzip On, Redis On.

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