异步时钟数据同步方法
2013-02-05
标签:

关于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年以上《童话大王》里的主人公。相信很多人都看过。

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号