IC设计多时钟域处理

1.​​​​​​​多时钟域设计面临的困难

  • 违背建立时间与保持时间
  • 引起的亚稳态问题

1、违背建立时间和保持时间

建立时间:在时钟上升沿来临之前数据需要保持一段时间不变,具体的时间长度与寄存器工艺有关

保持时间:在时钟上升沿采样后,数据数据也需要保持一段时间稳定不变

对于单时钟域来说,满足上述条件很容易。但多时钟情况下,一个时钟域的输出在另一个时钟域时钟上升沿发生改变很常见。

此时会引起第二个时钟域的输出处于亚稳态。如图1所示: 

IC设计多时钟域处理
图1 建立与保持时间的违背

 

 xclk_output1(数据时钟域xclk)在变化期间被yclk采样,产生亚稳态。而xclk_output2在yclk上升沿期间稳定,则不会产生亚稳态。

 

2. 多时钟域设计的处理

  • 分块化设计
  • 跨时钟域传输
  • 控制信号的传输(同步化)

  • 数据信号的传输(使用握手信号、使用异步FIFO)


1、分块设计

单个模块应在同一时钟下工作,这样有利于静态时序分析。

在涉及两个模块的跨时钟域信号传输时,应使用同步器,是外部信号与该模块时钟同步。

同步器的规模应尽量的小。

2、跨时钟域

2.1、控制信号的传输

为了减少亚稳态的影响,在控制信号的跨时钟域传输是,用的最多的方式是应用多级同步器,如图2所示:

IC设计多时钟域处理
图2、双级同步电路

如果第一级产生亚稳态输出,那么这个亚稳态会在同步器的第二个触发器取样前进入稳态,这种方式降低出现亚稳态的可能性,如图3所示。这种方法的缺点是,增加了电路的整体延时。

IC设计多时钟域处理
图3、双级同步器电路时序

在时钟频率非常高的设计中,也常常使用三级同步电路。