24小(xiǎo)时联系電(diàn)话:18217114652、13661815404

中文(wén)

您当前的位置:
首页>
電(diàn)子资讯>
技术专题>
跨时钟域时应避免的10...

技术专题

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


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

现代的ASIC由数百万个门和数十亿个晶體(tǐ)管组成,这些晶體(tǐ)管通常可(kě)以在具有(yǒu)不同電(diàn)压和时钟频率的多(duō)个域中运行。為(wèi)了避免数据丢失,设计人员需要确保从一个域发送到另一域的信号不会引起目标域中寄存器的建立时间或保持时间违规。这是跨时钟域时要确保或避免的10件事。

目标域中的寄存器(通常是触发器)的建立或保持时间违规可(kě)能(néng)导致触发器进入称為(wèi)亚稳态的状态。您可(kě)以阅读 了解时钟域交叉问题,以了解有(yǒu)关时钟域交叉问题及其如何引起亚稳定性的更多(duō)信息,但关键是在任何设计中,同步信号跨域都是绝对必要的。处理(lǐ)该任務(wù)的電(diàn)路(称為(wèi)同步器)可(kě)能(néng)会根据特定的域条件采用(yòng)几种不同的同步方案之一。

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

使用(yòng)多(duō)阶段同步

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

1使用(yòng)两个或多(duō)个触发器作為(wèi)同步器将避免传播由接收端的时序误差引起的任何亚稳态。

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

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

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

同步之前注册组合信号

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

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

解释亚稳定延迟

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

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

确保足够的时钟频率

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

永遠(yuǎn)不要假设同步

在域中使用(yòng)来自另一个设计者模块的网络或总線(xiàn)时,请勿假定网络已為(wèi)您同步。始终检查并在必要时使用(yòng)同步器。

同步反馈信号

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

5在来自接收域的任何复位信号上使用(yòng)一个同步器,该信号以发送域中的触发器為(wèi)目标。

避免同步阶段之间的逻辑

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

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

同步软件驱动的信号

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

同步后不要合并信号

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

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

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

请输入搜索关键字

确定