首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

IC设计基础系列之CDC篇9:跨时钟域信号传输(一)——控制信号篇B

IC设计基础系列之CDC篇9:跨时钟域信号传输(一)——控制信号篇B

3、时钟同源,周期之间非整数倍的跨时钟域
  当两个时钟都来源于同一个时钟,经过PLL分频之后,产生两个时钟时钟,一个时钟是另外一个时钟的非整数倍,相位是随时间变化的。在这种情况下,我们可以把这两个时钟当做同步时钟,也可以当做异步时钟;在传统的设计中,这样的时钟会当做异步时钟进行处理。下面我们就来看看这样的时钟处理要不要加同步器吧。
  假如时钟源的时钟频率为clk,经过PLL后,产生一个时钟clk1和一个时钟clk2:
                                                      
  假设clk1是快时钟,clk2是慢时钟。由于控制信号仅仅在两个时钟域的触发器之间传输,触发器之间不存在任何逻辑,因此控制信号从发送触发器到捕获触发器的时间很小,假设为t ps,当发送沿与捕获沿之间的间距大于tps,就不会产生亚稳态(理论情况,不考虑时钟偏移、翻转等因素)。当clk1的频率不是clk2的整数倍的时候,他们的相位是随着时间的改变而改变的,在知道了clk1和clk2的频率后,就可以知道理论下clk1和clk2的相位关系,那么就会有下面的情况:
(其实也就分为要不要加同步器的的情况)
  (1)(跨时钟域无论是快到慢还是慢到快)两个时钟存在最小相位差,且最小相位差大于t。如下所示:
                           
这里的这种情况下,时钟最小最小的相位差T>t,也就是说,控制信号不会违反捕获寄存器的建立时间和时间。需要注意的是,这是快时钟到慢时钟域的控制信号传输,要防止信号丢失的情况,也就是需要将控制信号延长到一定的长度。
从慢时钟到时钟的波形就不画了, 但是主要符合两个时钟(无论是快到慢还是慢到快)存在最小相位差,且最小相位差大于t,就不会违反建立时间和保持时间,基本不会产生亚稳态。因此在这种情况下,是不需要同步器的。


  (2)(跨时钟域无论是快到慢还是慢到快)两个时钟中,发送沿到接收沿的相位很窄,小于t,也就是违反捕获寄存器的建立时间和保持时间,但是下一次的发送沿到接收沿的相位很大(不违反捕获寄存器的建立时间和保持时间)的情况,如下所示:
            
在相位小的地方,建立时间不足,引起了亚稳态,这时候就要上我们的同步器了,这里隆重推出我们的同步器——双D触发器,其电路图如下所示:
                              
要注意,其中间不能有任何组合逻辑,电路图与对于的时序关系如下所示(代码就不写了,电路简单):
                                 
   再次强调,双D触发器(触发器链)只能抑制亚稳态往下传输(或者减小其往下传输的概率),并不一定能够同步正确的控制信号的值,这与亚稳态稳定后的值有关,上图中一级触发器的亚稳态稳定后的值恰好是高电平,因此二级触发器采样后的输出值为高电平。如果上图中一级触发器的亚稳态稳定后的值是低电平,那么二级触发器采样后的输出值将为低电平,也就是输出了错误的控制信号。
这里再啰嗦一下,在这种情况下(也就是有亚稳态的情况下),从慢到快,只有亚稳态的问题;而从快传输到慢,不仅有要抑制亚稳态往下传播的问题,还有控制信号丢失的问题,这里就需要延长控制信号的长度或者采取其他措施(后面会讲)。


  (3)两个时钟相邻的几次发送沿和接收沿的相位差都很小的情况,如下图所:
          
  这种情况可以说就基本是异步时钟域之间的控制信号传输了,在这种情况下,必定要加触发器链同步器,抑制亚稳态往下传播。跟前面的情况一样,从慢到快,只有亚稳态的问题;而从快传输到慢,不仅有要抑制亚稳态往下传播的问题,还有控制信号丢失的问题,这里就需要延长控制信号的长度或者采取其他措施(后面会讲)。


4、跨异步时钟域的控制信号传输
  其实跨异步时钟域的波形跟前面的3.(3)类似,只不过两个时钟域的时钟是完全没有关系的时钟而已。在这样的情况下,我们可以采取跟前面类似的方法:首先触发器链抑制亚稳态的传输一定是要的,然后是快时钟到慢时钟的问题,也就是采样短脉冲的控制信号问题,除了对控制信号进行延长之外,我们还可以其他的方法,下面就来整理整理吧:
  (1)握手/反馈机制
采用握手反馈机制,即可以抑制亚稳态的传输,又可以正确地传输控制信号。这种握手/反馈机制对所有的跨异步时钟的控制信号都有用,不过主要用在快到慢时钟、易产生亚稳态的情况。说了那么多,都没有实在的,下面就来看点实在的吧——握手/反馈机制电路图:
                   
波形如下所示(手绘....):
                   
其实原理很简单,当控制信号变高时(adat与adat1),慢时钟域的触发器链(bdat1和bdat2)进行采样,采样得到的高电平(bdat2)后,也就是确认采样得到控制信号后,再通过触发器链反馈给快时钟域(abdat1和abdat2),让快时钟域把控制信号拉低(拉低的或者处理时长在后面有电路),就完成控制信号的正确跨时钟传输。
当然,在慢时钟域阶段,我们也可以添加边沿检测(上升沿)电路,一方面让输出只有一个脉冲的控制信号,另一方面准确地进行控制,以防止亚稳态的干扰。   在上面的握手方案中,我们通过反馈信号进行控制信号的延时来让慢时钟域充分采样得到控制信号,本质上是也是对控制信号的延时。这个延时的具体实现,需要对控制信号的产生逻辑进行处理,来满足延时的要求,如下所示:
           
除了上面对控制信号处理之外,我们还可以对快时钟域的时钟动点手脚,具体电路如下所示:
                                
  这里通过让快时钟域触发器(特指rd_en触发器)的时钟停止工作的方式,让控制信号保持一定的时间。时钟停止之后,rd_en触发器的输出就会保持不变,等到反馈信号回来,告知慢时钟域采样得到高电平后,再恢复快时钟域的时钟,波形如下所示:
                           

当然,这是一个组合电路。这样子会令后面的输出电路产生毛刺,类似于门控时钟那样,于是乎我们就可以使用门控时钟那样的技巧,防止输出产生毛刺。这里就不详细说明了。
返回列表