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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

异步设计难题证答

[复制链接]
发表于 2005-7-20 11:52:46 | 显示全部楼层

异步设计难题证答

扁师兄能否把这个问题的具体情况再介绍一下?
时钟是知道了,而这两个时钟之间的数据有什么特定的关系,是传递地址还是传递数据,还是传递握手信号?采到的数据准备如何处理?
好像uart都是八倍或者十六倍采样,不知道对不对?
 楼主| 发表于 2005-7-20 12:49:50 | 显示全部楼层

异步设计难题证答

[这个贴子最后由老扁在 2005/07/20 12:55pm 第 1 次编辑]

题目很简单:就是 clk1  随时并行发送32位数据,同时给出一拍valid信号;用clk2把有效数据快速可靠地按clk1的发送顺序采下来就ok啦。
发表于 2005-7-20 12:54:44 | 显示全部楼层

异步设计难题证答

这个问题太简单了;)干吗这么讨论呢?;)
为什么不用FIFO,难道FIFO很不合适么?我觉得下面的方案很合适:
实现一个FIFO valid信号为写信号。读信号一直有效。因为clk2的频率大于clk1,所以,最多5个深度就应该可以了吧(两个防止亚稳态,两个用来做ping-pong操作,还有一个作为冗余)。
 楼主| 发表于 2005-7-20 12:56:31 | 显示全部楼层

异步设计难题证答



下面引用由老扁2005/07/20 11:13am 发表的内容:
俺的方案失败,继续研究ing
大家有思路了吗?目标4个32位buffer,可以对valid信号编码。。。。

俺改变编码思路,基本搞定,有待仔细再琢磨。。。
 楼主| 发表于 2005-7-20 13:04:55 | 显示全部楼层

异步设计难题证答



下面引用由pppaaa2005/07/20 12:54pm 发表的内容:
这个问题太简单了;)干吗这么讨论呢?;)
为什么不用FIFO,难道FIFO很不合适么?我觉得下面的方案很合适:
实现一个FIFO valid信号为写信号。读信号一直有效。因为clk2的频率大于clk1,所以,最多5个深度就应 ...

clk2 = 1~4 clk1 的频率,不完全是大于。
本题的难点其实就在clk1和clk2异步相等的情况,fifo不好实现。因为你fifo终归要有空满信号和读信号的来回异步采样,这其实就等同于转化为对valid的采样了。
发表于 2005-7-20 14:14:42 | 显示全部楼层

异步设计难题证答

奇怪扁兄的方案怎么会不对?
扁兄的思路很对啊,将valid信号编码成4个buffer的valid0~3信号,这样每个buffer在极限状态下数据可以寄存至少4个clk1周期,
再用clk2同步valid0~3之后取下降沿单脉冲作为clk2中的valid0~3_clk2信号存储到大缓冲区(maybe big SRAM)中即可。
如果确定clk2与clk1为1:1的话,只需要3级buffer就够了,因为用同步后的valid0~2就可以了。
发表于 2005-7-20 14:52:14 | 显示全部楼层

异步设计难题证答

再说说我的方法,希望斑竹也把自己的结果写出来,也不枉大家关注了这么久!
这是一个类似FIFO的方法,相当于读一个有效。
假设采用2^n个缓冲区,需要两个个n位的gray code,作为读写指针。
写指针每次数据有效时加一。关键就是读指针的控制和输出信号out_valid的有效,而这两个可以其实只需要out_valid这个信号就可以了,读指针在每次out_valid有效时将增加一。因此问题转换为out_valid的,而这个信号只需要是 rd_addr!=wr_addr的
两次寄存就可以了。


发表于 2005-7-20 14:55:31 | 显示全部楼层

异步设计难题证答



下面引用由iamchine2005/07/20 02:14pm 发表的内容:
奇怪扁兄的方案怎么会不对?
扁兄的思路很对啊,将valid信号编码成4个buffer的valid0~3信号,这样每个buffer在极限状态下数据可以寄存至少4个clk1周期,
再用clk2同步valid0~3之后取下降沿单脉冲作为clk2中的val ...

这种方法的问题在于,如果clk1,clk2周期相等。在特殊情况下,就会遇到在采样valid信号的时候,出现一个寄存器建立时间不够,而下一个寄存器保持时间不够的问题。相当于
你用clk信号来采样clk信号,你说能够得到什么冬冬?
发表于 2005-7-20 16:32:32 | 显示全部楼层

异步设计难题证答

,是有些小问题。
将valid编码成clk1单拍valid0~3之后,再产生延时1周期的两个clk1周期宽度的信号,用clk2同步后取上升沿脉冲应该可以解决。

下面引用由pppaaa2005/07/20 02:55pm 发表的内容:
这种方法的问题在于,如果clk1,clk2周期相等。在特殊情况下,就会遇到在采样valid信号的时候,出现一个寄存器建立时间不够,而下一个寄存器保持时间不够的问题。相当于
你用clk信号来采样clk信号,你说能够得到 ...

发表于 2005-7-20 16:43:56 | 显示全部楼层

异步设计难题证答

其实我还在考虑采样一个2个时钟周期以上的异步信号上升沿脉冲干脆不做同步,那么可以只用3级Buffer来完成这项任务了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-20 00:17 , Processed in 0.036670 second(s), 5 queries , Gzip On, Redis On.

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