异步时钟数据同步方法

发布时间:2010-9-25 23:23    发布者:eetech
关键词: 时钟 , 数据同步 , 异步
关于gray code冗余的思考带来了一个全新方案,这个方案将为异步时钟间的数据传输提供一个普遍的解决方案。

问题是:数据从一个时钟wr_clk,其件数据有效用valid来指示,怎样将数据传递到另外的一个时钟rd_clk域?这里不对时钟频率做任何假设。

这个问题有以下这么几个关键点:

1. 异步输入亚稳态。

2. 无法用一个时钟采样一个宽度小于一个周期(包括等于,还需要考虑建立保持时间) 的信号。

3. 在将一组信号从一个时钟传递到另外一个时钟的时候,需要考虑各个信号通路上的延迟不同以及信号上的毛刺这两个问题。

4. 必须保证数据的不能够丢失。

5.解决方案:

基本思想是首先将数据缓冲起来,然后挨个的读取数据。具体方法包括:

1。有一组缓冲区n个。n必须足够大,以便缓冲区不会溢出。

2。读写双方都维护一个指针,表示将要存取的缓冲区,这个指针在数据读写 之后将增加1,并循环。

3。写方通过gray code将信息传递到读的一方,其gray code每写一个数据增加 1,读方维护自己的gray code,每次读取数据之后增加1,并比较自己 的gray code和写方的gray code ,如不相等,表示可以进行一次读取。 并反复进行下去。

讨论 :

1. 需要多少个缓冲区?这需要由数据有效频率和读取速度和延迟来确定。一般的答案依赖于wr_clk的频率,rd_clk的频率,valid的模式,为了消除亚稳态和其他附加的延迟。

2.为什么需要采用gray code ? 采用gray code是为了满足面的要求3。

3.gray code需要多少位? 一般的考虑上面的要求2。至少需要的位数将是保证gray code 每一位的宽度可满足要求2的最小值。

4.还有其他么? 如果gray code的个数小于了缓冲区的个数(一些情况下发生),可以简单的将gray code多一些位,来避免复杂的控制操作。

5.在wr_clk频率大于rd_clk得时候情况如何?这个电路可以很好的工作,并代替原来的将valid信号接入触发器时钟端和异步复位的办法,并具有更简单的静态时序。

6,还有其他么?如果这个方法属于原创的话,建议把它叫做 PPL方法,或者PPL电路。 PPL(皮皮鲁),是陪伴了我10年以上《童话大王》里的主人公。相信很多人都看过。
本文地址:https://www.eechina.com/thread-29154-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表