跨时钟域信号的传输可以归为两类,分别是:
1)控制信号的传输
2)数据信号的传输
1.控制信号的传输
在设计中,如果将一个异步信号直接送给若干个并行工作的触发器,就会大大增加亚稳态事件发生的概率,因为有可能有多个触发器进入亚稳态。为了避免形成这种情况下的亚稳态,我们常常使用同步触发器的输出信号来取代异步信号。
为了减少亚稳态的影响,设计者最常用的方法是使用级同步器,即将两个或多个触发器串联起来组成多的同步电路。
如果同步器的第一级触发器产生亚稳态输出,那么这个亚稳态会在同步器的第二个触发器取样前进入稳态。这种方法无法保证第二级触发器输出的一定就不会出现亚稳态。但是它确实降低了出现亚稳态的可能性。同理,如果为同步器增加更多级触发器,就会进一步降低出现亚稳态的可能性。
然而这种方法的一个缺点是:同步器同样会增加电路的开销,同时也增加了电路的整体延时。在大多数跨时钟域设计中,使用两级同步电路就足以避免亚稳态的出现了。所以只有在信号频率非常高的设计中才要使用三级同步电路。
2.数据信号的传输
在多时钟域设计中,数据经常会从一个时钟域传输到另一个时钟域,如果在数据总线传输的过程中也使用多级同步器,这样会带来很大的问题,因为我们无法保证所有的数据经过同步器后都有同样的延迟。所以针对数据输出,考虑以下两种方法:
1)使用握手信号的方式
安全将一个数据从发送器到接收器需要5个时钟周期。握手信号要求:
握手信号缺点:跨时钟域传输单个数据的延时比用FIFO传输相同的数据要大得多。