跨时钟域信号处理

在FPGA设计中,经常遇到信号需要在多个时钟域传递的情况。当两个时钟频率不同或者不同源时,信号在传递过程中就有可能产生亚稳态,从而导致实际时序和设计时序不同,破坏整个系统的功能。因此在涉及多时钟域信号传递时,应该尽量做好同步,消除亚稳态。

  1.亚稳态的产生:当触发器的要求的建立时间和保持时间不满足时,亚稳态就产生了。表现为触发器的输出处于一个短暂的不稳定状态,需要一段时间来恢复到稳定的0/1状态。当触发器产生亚稳态时,触发器的输出电平在高和低之间振荡,导致触发器输出的转变时间长于触发器的clock-to-output delay(tco),触发器从亚稳态恢复到稳定态的时间长于tco,把超出

 

建立时间(tSU)和保持时间(tH)所构成的时间窗口越大越有可能进入亚稳态,一般新型器件(往往意味着性能更佳)的时间窗口小于旧器件,因而减小了进入亚稳态的可能性。

  2.计算平均无故障时间(MTBF):如式1.1(一级触发器),式1.3(两级触发器)

              

                

 

 

 

 

  3.可能产生亚稳态的情况:<1>.输入信号是异步信号;<2>时钟毛刺超出了触发器所能忍受的极限;<3>时钟不同频或者不同源(相位不同);<4>不满足建立时间和保持时间的时间窗。避免亚稳态最显而易见的办法可以从降低时钟频率入手,但在大多数情况都不推荐,一般采用多级触发器来同步(打两拍)。

  4.防止亚稳态传播:<1>.多级同步器(打两拍),能降低亚稳态产生的几率,同时引入了延迟。<2>.采用clock boost circuit的多级触发器(将时钟进行倍频后再做同步),Altera称之为Clock Boost或者Clock Doubler,能在一个时钟周期内完成信号的同步。如图1.7

                 

  5.亚稳态检测电路:如图1.8

    

  6.特殊的电路:<1>.针对信号周期大于时钟周期的同步电路(慢时钟域到快时钟域)如下,其中Clock Domain 2的触发器一般为2个及以上,此时不存在采不到信号的情况,但是待传递的信号的频率可能会大于实际需要的,因此将两级同步器升级为上升沿或者下降沿或者双沿检测电路。

         <2>.针对信号周期小于时钟周期的同步电路(快时钟域到慢时钟域),一般需要在快时钟域将传递信号展宽,可以通过计数器来完成;或者采用握手/反馈机制,当badat2拉高后,即确定adat已经同步到bdat2(假设要传递高电平),则拉低adat或者进行后续操作:

 

这是利用了脉冲信号的上升沿进行输出脉冲信号,然后通过后面反馈回来的信号进行清零,从而为下一次脉冲控制信号做好准备。需要注意的是,窄脉冲控制信号的产生频率不能太快,也就是需要等到清零信号无效(三个触发器的延时)后才能发出下一个脉冲控制信号,不然后面的慢时钟域采样电路无法识别两次控制信号,而只当成一次控制信号处理(原文地址https://www.cnblogs.com/IClearner/p/6485389.html)。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Lastwhisper/p/8558248.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值