1、慢时钟域到快时钟域
频率相差2倍以下,为避免快时钟采样丢失,需要进行握手的同步处理。
频率相差 2倍以上,快时钟采样不会丢失,不用考虑,使用两级触发器同步也就是电平同步器。但为了避免快时钟多次采样到有效信号,使用边沿检测同步器。边沿检测同步器:通过在电平同步器增加一个触发器,新增触发器的输出经过反相器后和电平同步器的输出进行与操作,得到在快时钟域和慢时钟域时间周期相同的单bit信号,如原本在慢时钟域为2个clk,同步到快时钟域还是2个clk.
具体代码和图如下,图7-10 表示电平同步器解决亚稳态问题。第一级触发器bdat1在采样异步信号adat时候可能会进入亚稳态,在bclk上升沿数据发生变化,不满足建立保持时间。但经过一个bclk的延时,当第2级触发器bdat2采样其输出信号bdat1时候,它已经恢复到一个有效电平的稳定状态,使得第二级触发器不再出现亚稳态,防止亚稳态在整个电路的传播。
具体rtl代码如下
为了避免快时钟多次采样到有效信号,使用边沿检测同步器,具体的波形如图7-11(b)。
具体代码如下:
电平同步器又加了一个触发器,将第二级触发器的输出和第三级的触发器进行组合逻辑运算得到真实输出。always组合逻辑块也可以直接变为assign rd_en_s2f = rd_en_s2f2 &&(~rd_en_s2f3);