跨时钟域电路设计——单bit信号
前面提到了简单的双电平锁存器,下面是一些单bit同步电路。
一、慢时钟域向快时钟域
边沿检测同步器
将慢时钟域的脉冲搬移并缩小为快时钟域的脉冲。
既可以检测上升沿,也可以检测下降沿。
如上图,慢时钟下一个有效脉冲的最短周期为慢时钟的一个周期,站在快时钟的角度下,这个慢时钟域的信号会在快时钟域下持续很多个周期。实际上,这个脉冲在慢时钟域只发生了一次,所以如果用快时钟去检查有效脉冲的翻转边沿是最准确的。边沿上升与下降也只有一次。
适用条件:data_width>clk_fast+T_hold,最安全的就是两个同步周期长度。这样才能保证慢时钟域的脉冲足够保持到被快时钟的同步器采样到。
其verilog代码如下:
二、快时钟域向慢时钟域
脉冲同步器
从快时钟域的取出一个单时钟宽度脉冲,在慢时钟域建立新的单时钟宽度脉冲。
图中阴影部分为快时钟域下的翻转电路。
由于在慢时钟域下直接采样快时钟域的信号,很大概率会采样失败。因此,我们采用翻转电路对有效脉冲进行标定。
适用条件:输入脉冲间隔>=2*clk_slow。输入脉冲相隔过近,则慢时钟域的新脉冲也紧密相邻,结果是输出脉冲比一个时钟周期宽;如果太近,则无法检测到每一个脉冲。
其verilog代码如下: