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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

异步设计难题证答

[复制链接]
 楼主| 发表于 2005-7-20 16:56:00 | 显示全部楼层

异步设计难题证答



下面引用由iamchine2005/07/20 04:32pm 发表的内容:
,是有些小问题。
将valid编码成clk1单拍valid0~3之后,再产生延时1周期的两个clk1周期宽度的信号,用clk2同步后取上升沿脉冲应该可以解决。

首先,由于亚稳态的存在,valid采样后的时序顺序会乱,这样你不能按顺序采样;而不按顺序采样,由于如果用4个buffer,则数据只能最多保留4个周期,则造成数据丢失。
 楼主| 发表于 2005-7-20 16:57:27 | 显示全部楼层

异步设计难题证答



下面引用由pppaaa2005/07/20 02:52pm 发表的内容:
再说说我的方法,希望斑竹也把自己的结果写出来,也不枉大家关注了这么久!
这是一个类似FIFO的方法,相当于读一个有效。
假设采用2^n个缓冲区,需要两个个n位的gray code,作为读写指针。
写指针每次数据有效时 ...

俺回头想想你的思路
 楼主| 发表于 2005-7-20 17:00:27 | 显示全部楼层

异步设计难题证答



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

你的思路基本跟俺是一致的,现在要解决的问题是,1:1时要把valid加长一拍,再加上亚稳态的两拍延迟,造成数据无法在可靠采样时间正确采样了。
 楼主| 发表于 2005-7-20 17:01:25 | 显示全部楼层

异步设计难题证答



下面引用由iamchine2005/07/20 04:43pm 发表的内容:
其实我还在考虑采样一个2个时钟周期以上的异步信号上升沿脉冲干脆不做同步,那么可以只用3级Buffer来完成这项任务了。

有待研究
 楼主| 发表于 2005-7-20 17:05:11 | 显示全部楼层

异步设计难题证答

俺晚上把俺的方案和时序贴上来,大家帮着看看是不是可靠。
发表于 2005-7-20 17:59:32 | 显示全部楼层

异步设计难题证答

看了看,应该可以用fifo撒!不管两个时钟周期是否一致,fifo最好用了,通过比较clk1写地址和clk2的读地址判断是否满是否空,是否读出。非常好用阿!这几天我在搬东西,到了SZ我给师兄找个例子看是否奏效:)
 楼主| 发表于 2005-7-20 18:12:11 | 显示全部楼层

异步设计难题证答



下面引用由ahan2005/07/20 05:59pm 发表的内容:
看了看,应该可以用fifo撒!不管两个时钟周期是否一致,fifo最好用了,通过比较clk1写地址和clk2的读地址判断是否满是否空,是否读出。非常好用阿!这几天我在搬东西,到了SZ我给师兄找个例子看是否奏效:)

道理是这个道理,仔细分析也许就不好用哦。呵呵。
 楼主| 发表于 2005-7-20 18:18:37 | 显示全部楼层

异步设计难题证答

[这个贴子最后由老扁在 2005/07/20 06:30pm 第 2 次编辑]

先贴图,一般能看懂。工作原理待会再贴。
主要是解决1:1的情况。倍频采样的情况就很easy了。
 楼主| 发表于 2005-7-20 20:39:49 | 显示全部楼层

异步设计难题证答

工作原理:
我们把clk1的valid和数据按4拍一循环,然后顺序进行数据锁存,需4个32位buffer,所以每个数据可以锁4拍。同时V2和V4也要锁存4拍。
创造4个2位one_hot码,两个用于V1和V2编码,两个用于V3和V4编码。
我们下面按顺序来看工作过程:
1. 开始时one_hot码都是00。根据V1=0或1,编两组码(10,01)或(01,10),有效两个clk1周期,然后都回到00。V3时也同理。这两组码到clk2采样后才根据V2的锁存信息来选择其中一个。
2. 这两组码被clk2采样,第一和第二拍进行亚稳态处理。第三拍(带F2标号的)再延一拍用于判断上升沿。
3. 在F1和F2拍都可能进行码的上升沿判断,同时用V2先选择出一个码,然后根据码就可以知道V1和V2的有效与否了。马上进行D1的采样,同时产生下一拍D2的采样脉冲。
4.  D3和D4同样处理。问题是我们看时序会发现D3的采样点和D2的采样点有可能重合,这很好解决,在D3采样时看看有没有D2的采样脉冲,如果有就顺延D3和D4的采样。这个处理在D1采样时也受以前D4的影响,可以同理处理 。
5. OK OK OK OK啦!
 楼主| 发表于 2005-7-20 22:20:07 | 显示全部楼层

异步设计难题证答



下面引用由pppaaa2005/07/20 02:52pm 发表的内容:
再说说我的方法,希望斑竹也把自己的结果写出来,也不枉大家关注了这么久!
这是一个类似FIFO的方法,相当于读一个有效。
假设采用2^n个缓冲区,需要两个个n位的gray code,作为读写指针。
写指针每次数据有效时 ...

1:1时不管是gray码还是out_valid要想在clk2被有效采样,都需要至少两拍的有效和两拍无效,这样就是4拍,所以用FIFO要缓存很多拍数据(大于4)。欢迎你给出详细的设计方案和时序,以供大家欣赏。
俺的方案4个buffer就搞定了。唯一复杂的就是倍频采样时要重新考虑时序,然后整合到1:1的方案中去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-3-28 21:21 , Processed in 0.028527 second(s), 5 queries , Gzip On, Redis On.

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