跨时钟域处理方法大全

发布时间 2023-11-17 00:11:26作者: senlong2023
 

单bit信号跨时钟域:

从慢到快(满足1.5倍周期原则)

两级电平同步;
注意事项:
1.如果慢时钟是clk_slow,快时钟是clk_fast,那么从clk_slow打出的单bit信号宽度至少是clk_fast周期的1.5倍,否则认为是从快到慢;
2.从clk_slow同步到clk_fast,从clk_slow打出的信号必须经过clk_slow打过,否则组合逻辑输出会有毛刺,被clk_fast采到,会引发不想要的结果;如下图所示:
经过clk_slow打过的单bit信号adat的跨时钟域如下图所示:
 

从快到慢:

单bit从clk_fast跨时钟域到clk_slow
 方法1:开环控制
展宽clk_fast时钟域的信号宽度到大于等于1.5倍clk_slow时钟域周期,这样可以保证信号被clk_fast采集到,但是这样的话,对clk_fast和clk_slow的频率有一个约束关系,当设计改动clk_fast和clk_slow频率变化时,可能需要重新修改代码,这种设计不具有健壮性,如下图所示:
 
方法2:闭环控制
使用反馈信号自动延长快时钟域的信号;
其中一种做法是使用脉冲同步器(genpart_pulse_sync):
时序如下图所示:
clk_fast时钟域的一个脉冲信号,宽度只有快时钟域的一个周期,将该信号同步到clk_slow,如果不在快时钟域把脉冲信号展宽,实现方法可以用下面这种剑走偏锋的方法:
时序如下图所示:
 

多bit信号跨时钟域

 多bit信号的跨时钟域方案都需要符合从快到慢和从慢到快的使用场景;
有3种多bit信号的处理方式:
方式1.根据多bit信号之间的关系,看能否合并成单根信号,或者多bit信号之间有明确的时序关系,变成一个单bit信号,其他bit信号由此单bit信号产生;
方式2.格雷码计数器;
方式3.Multi-Cycle-Path Formulation方法,本质是用控制信号从clk_fast同步到clk_slow,然后被被同步到clk_slow的控制信号再去控制clk_fast的数据打到clk_slow,在此期间,clk_fast的数据保持不变,之后的握手机制是为了开环消除开环结绳法的限制;
方式4.异步FIFO;
方式5:多bit信号同步器 
 
 
方式1:
load和en作为两个控制信号需要跨时钟同步。两个信号需要同时拉高才能正确操作,但是实际同步时可能两者存在一定skew,导致再同步域两级reg同步后两个信号错开,导致控制失败:
解决方法:将b_load和b_en合并成一根信号b_lden:
 
控制信号多比特之间有一定时钟相位差,这种情况下,如果两个信号隔开固定的相位,在传输过程中可能会有一定偏移,则同步时也会导致同步后的信号错开,造成同步失败:如下图种aq2_ld1和aq2_ld2相位增大;
 
解决方法:只传输其中一个信号,另一个信号在同步域内产生,如将aq2_ld1在aClk时钟域打一拍得到ald2,aq2_ld1和ald2相位关系不变;
 
方式2.格雷码计数器;
因为相邻的2个格雷码之间只有1bit不同,因此多bit格雷码跨时钟域传输,可被视为单bit信号传输,用单bit信号传输的方法进行跨时钟域传输;
格雷码计数器适合同步二进制计数器,有2种产生格雷码计数器的方式:
方式1:
方式2:
方式3.Multi-Cycle-Path Formulation方法,本质是用控制信号从clk_fast同步到clk_slow,然后被被同步到clk_slow的控制信号再去控制clk_fast的数据打到clk_slow,在此期间,clk_fast的数据保持不变,之后的握手机制是为了开环消除开环结绳法的限制;
首先介绍脉冲产生电路:
然后可以将此电路简化为:
 
开环结绳法:
用脉冲同步器先同步单脉冲信号Next Data Pulse,然后用同步后的沿load Data In到Data Out;
限制:1.Next Data Pulse为单脉冲  2. 2个Next Data Pulse之间间隔至少为3个接收时钟域时钟周期;
这种电路快到慢,慢到快都可以;
 
为了摆脱限制,可以使用握手机制,即为闭环结绳法:  (asend为单脉冲)
这种电路快到慢,慢到快都可以;
这种电路多了一个aready信号通知发送端可以发送数据,但是要求接收端始终做好接收数据的准备,b_en一来,就要接收数据adata到bdata;
 
为了接收端不用始终做好接收数据的准备,可以在接收端也做一个握手机制,bload是接收端告诉接收时钟域可以把数据load到bdata,bvalid代表接收端要接收的数据valid;
如下图所示:
(asend为单脉冲)
方式4. 异步FIFO
参考Cummings的FIFO雄文:《Simulation and Synthesis Techniques for Asynchronous FIFO Design》
 
方式5:

数据同步错误的情况:
数据同步正确的情况: