24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
技术专题>
跨时钟域时应避免的10...

技术专题

跨时钟域时应避免的10个设计问题


跨时钟域时应避免的10个设计问题

现代的ASIC由数百万个门和数十亿个晶体管组成,这些晶体管通常可以在具有不同电压和时钟频率的多个域中运行。为了避免数据丢失,设计人员需要确保从一个域发送到另一域的信号不会引起目标域中寄存器的建立时间或保持时间违规。这是跨时钟域时要确保或避免的10件事。

目标域中的寄存器(通常是触发器)的建立或保持时间违规可能导致触发器进入称为亚稳态的状态。您可以阅读 了解时钟域交叉问题,以了解有关时钟域交叉问题及其如何引起亚稳定性的更多信息,但关键是在任何设计中,同步信号跨域都是绝对必要的。处理该任务的电路(称为同步器)可能会根据特定的域条件采用几种不同的同步方案之一。

但是,即使使用这些技术,也需要做一些事情,而不要做一些事情,以避免设计出现同步问题。

使用多阶段同步

仅通过一个触发器来同步跨时钟域的信号就面临通过传递亚稳性的高失败风险(图1a),尤其是在域时钟频率差异较大的情况下。最好使用如图1b所示的两触发器同步器,甚至使用三触发器同步器。使用两触发器或三触发器设计后,信号交叉域进入亚稳态后将有更多时间稳定下来。

1使用两个或多个触发器作为同步器将避免传播由接收端的时序误差引起的任何亚稳态。

避免合并早期同步阶段的信号

由于多级同步器中的第一个触发器可以进入亚稳态条件,因此切勿将第一个触发器的输出用作任何单元的逻辑输入(图2)。这样做有可能在设计中传播亚稳性。

2同步器第一个触发器的输出,除输入第二个触发器的输入外,切勿用于任何下游逻辑。 

同步之前注册组合信号

如果穿越时钟域的信号直接来自组合逻辑,则可能会有毛刺。这些故障可以减少两触发器同步器发生故障之前的平均时间(MTBF)。将将穿过域的信号注册到源时钟可消除毛刺(图3)。为了帮助保留同步器的MTBF,请务必在穿过域之前注册组合信号。

3一个简单的双触发器同步器可以捕获来自组合逻辑的毛刺,因此在其通过时钟域之前,将任何组合信号寄存在其传输域中。

解释亚稳定延迟

当使用多位同步器交叉多个位时,请始终考虑亚稳态延迟。当触发器时钟直到下一个时钟周期才完全同步时,任何经历亚稳态的位。由于存在此延迟,因此无法保证数据同步的一致性或顺序。代替使用如图4a所示的两个触发器同步器,而使用另一种形式,例如数据多路复用器,异步FIFO等。但是,如果总线是格雷码编码的,如图4b所示,那么我们可以使用多位同步器,因为一次仅更改一位。只需确保在跨越域之前就注册总线,因为格雷编码是完全组合的逻辑。

4双翻转同步器(a)可能由于亚稳态延迟而失去同步,因此不应该使用。在跨越域之前使用二进制到灰度编码,然后在(b)之后使用灰度到二进制解码解决了这个问题。

确保足够的时钟频率

信号发送域中的时钟周期应至少为接收域的时钟周期的二分之一。发送时钟周期太短会导致信号不总是被采样。如果不能满足此条件,则最好使用请求确认类机制来控制跨域信号的切换。

永远不要假设同步

在域中使用来自另一个设计者模块的网络或总线时,请勿假定网络已为您同步。始终检查并在必要时使用同步器。

同步反馈信号

在同步器中使用第一个触发器的输出在发送时钟域中重置触发器时要小心(图5a)。这可能会导致同步器外部出现时序违规,或者可能会通过亚稳态。如图5b所示,最好在这种复位信号越过域时也使用同步器。这将确保发送域中的触发器不会违反任何时序规则。

5在来自接收域的任何复位信号上使用一个同步器,该信号以发送域中的触发器为目标。

避免同步阶段之间的逻辑

避免在同步器的触发器之间放置任何组合逻辑,因为这可能会降低同步器的MTBF(图6)。组合逻辑的输出可能会出现毛刺并引起时序问题,最终会导致亚稳态。

6同步器两个触发器之间的组合逻辑将降低其MTBF

同步软件驱动的信号

如果没有同步,则不应在接收域的逻辑中使用由软件驱动的信号。否则,将导致时序违规并导致亚稳定性。

同步后不要合并信号

接收域中不同同步器的输出无法合并并在其他地方使用(图7a),因为无法保证它们的同步顺序,因此有可能对错误的数据进行采样。如果必须合并两个信号以用于接收域,则最好将它们合并在发送域中(图7b)或使用其他方法来克服一致性问题。

7在接收域中重新收敛同步信号可能会导致设计失败,因此最好在跨时钟域发送之前对其进行合并。

在跨不同时钟域的信号同步时,遵循这些准则将有助于确保在多域SoCFPGA设计中不会出现亚稳性问题。

请输入搜索关键字

确定