IC设计多时钟域处理
1.多时钟域设计面临的困难
- 违背建立时间与保持时间
- 引起的亚稳态问题
1、违背建立时间和保持时间
建立时间:在时钟上升沿来临之前数据需要保持一段时间不变,具体的时间长度与寄存器工艺有关
保持时间:在时钟上升沿采样后,数据数据也需要保持一段时间稳定不变
对于单时钟域来说,满足上述条件很容易。但多时钟情况下,一个时钟域的输出在另一个时钟域时钟上升沿发生改变很常见。
此时会引起第二个时钟域的输出处于亚稳态。如图1所示:
xclk_output1(数据时钟域xclk)在变化期间被yclk采样,产生亚稳态。而xclk_output2在yclk上升沿期间稳定,则不会产生亚稳态。
2. 多时钟域设计的处理
- 分块化设计
- 跨时钟域传输
-
控制信号的传输(同步化)
-
数据信号的传输(使用握手信号、使用异步FIFO)
1、分块设计
单个模块应在同一时钟下工作,这样有利于静态时序分析。
在涉及两个模块的跨时钟域信号传输时,应使用同步器,是外部信号与该模块时钟同步。
同步器的规模应尽量的小。
2、跨时钟域
2.1、控制信号的传输
为了减少亚稳态的影响,在控制信号的跨时钟域传输是,用的最多的方式是应用多级同步器,如图2所示:
如果第一级产生亚稳态输出,那么这个亚稳态会在同步器的第二个触发器取样前进入稳态,这种方式降低出现亚稳态的可能性,如图3所示。这种方法的缺点是,增加了电路的整体延时。
在时钟频率非常高的设计中,也常常使用三级同步电路。