打印
[技术文档]

FPGA设计的10点小知识-跨时钟域设计

[复制链接]
529|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotcool|  楼主 | 2022-10-25 10:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
跨时钟域设计
将数据从一个时钟域送入到另一个时钟域是困难的,建立时间和保持时间违规,亚稳态问题,不可靠的数据和其他危险等都有可能发生。实际上,整个同步问题都值得专门写一篇文章来讨论。不过,在这里将介绍一些小提示,它们可能有助于解决跨时钟域同步问题。

首先,让我们定义问题,请参见图。

现在有A、B两个不同的时钟域。我们不对时钟A/B做任何假设,只设定其为分别独立的两个不同时钟。

我们需要从时钟域A到时钟域B发送一个选通信号(Strobe A-B)和数据(Data A-B),作为回应,接收一个从时钟域B到时钟域A的选通信号(Strobe B-A)和数据(Data B-A)。彼此之间的信息传输必须绝对可靠。为了实现这一点,我们将研究跨时钟域问题的几个方面。

同步101
跨时钟域之间的问题与异步输入的问题有些类似。因为不同时钟域之间并无整数倍的关系可循,所以实际上应将其视为一对异步信号,这样就可以用处理异步输入的办法来解决跨时钟域问题,典型方法如图(即打两排):

使用了两个寄存器,两个寄存器通常就足够了。只有最罕见的应用可能需要3个。这种方法使用广泛,但无法实现高频率信号同步到低频率的时钟域,即无法慢采快。

单点信息
假设A块需要向b块发送2bits信息,我们可以简单地复制图5中的电路,每个bit对应一个同步电路。但有一个很严重的问题需要明确:有时会出现一个bit通过了两级同步电路,而另一个bit没有通过的情况。解决方案如图4所示,使用从a块到B块的单bit选通信号,并分别发送其他信息。从A到B的单点选通通知目标块数据A-B有效,初始块确保有足够的建立时间。

切换交换
一个不用担心电平和脉冲宽度的双向握手的好方法是使用切换交换协议。如图所示。

在这种情况下,通过选通信号Toggle A-B来指定此时传递的数据Data A-B有效,Data B-A的传递同理。如图所示。

可以看到,每次传输只需要两个事件就可以完成:两个toggle选通信号中的每一个的切换。当然,每个切换必须在接收端小心地同步,这种方法保证了跨任意频率的时钟域的宽数据总线的成功传输和接收。从千兆赫到千兆赫,切换方法是可预测和可靠的。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

76

帖子

0

粉丝