您当前所在的位置是 : 首页 >> 新闻中心 >> 行业新闻
时钟域和异步信号处理

发布时间:2023-09-07 作者: 来源: 阅读量:0

[摘要]​时钟域,是指在同一系列逻辑,这一系列逻辑中的所有时间同步单元都使用同一个网络作为时钟点,跨时钟域在不同时钟域之间传输信号的问题

时钟域,是指在同一系列逻辑,这一系列逻辑中的所有时间同步单元都使用同一个网络作为时钟点,跨时钟域在不同时钟域之间传输信号的问题。在信号跨时钟域传输中会遇到一些因素,例如:

 

  根据技能的不同,问题也不一样,如果约束较小的建立和保持时间,从统计上来说高速设计技术比低速设计技术更不容易产生故障。同时,其他因素,比如同步器件中设计实现对输出的缓冲,也会对一个可能的故障产生显著影响;静态时序分析工具是基于独立的时钟区域来进行时序分析,如果存在两个异步时钟域,故障往往与这两个时钟沿的相对时序有关。而且只有在特定的方式下根据指定的要求才能进行跨时钟域的时序分析;跨时钟域故障难以探测且难以调试。所以所有跨时钟域界面都必须要在任何功能实现之前被很好地定义和处理。

 

  触发器在时钟系统上升定义中开发和维系了一个时间窗口,它的输写端口数组如果在这个时间窗口内发生变化,那么它就会发生时序违问题。存在这个时序违规是因为违反了开发和维系时间要求,此刻触发器它的内部的某一节点可能会在一个标准电压范围内上下浮动,没有办法稳定在逻辑0或者1状态,在这个时候晶体管不能处于对应饱和区的高或低电压,在它稳定之前,一直会徘徊在一个中间电压的状态。

 

  如果它里面包含着一个输出缓冲,那么亚稳态自身就能够跟随内部信号的逐渐稳定而在输出上表现的杂散过渡。输出保持亚稳态的时间是随机的,甚至可能在整个时钟周期内都保持亚稳态。那么,如果这个亚稳态值输入到组合逻辑,根据逻辑门电路的切换门槛,错误的操作就可以发生。从时序收敛的角度来说,两个触发器之间的组合逻辑延时都要求要小于最小的时钟周期,但是这种亚稳态信号保持亚稳态的时间,本身就是变相地增加了逻辑延时。很显然,一个亚稳态信号会给设计带来致命的功能故障,而且该信号也将无法在各个时钟沿上采集到一致的结果。

 

  传送配置的时钟频率无需高过接收端设备,高出反而容易造成溢出,反而较慢的频率将数据送入FIFO,数据写入FIFO的时钟周期数少于接收端将要处理数据的时钟周期数。如果不采取握手控制,就必须要理解以上描述会产生溢出的最坏的情况。

 

  无论在什么时间段内,如果数据发送FIFO的效率高于接收处理数据的效率,那么就会很轻易地使系统没有办法维持。因此在没有任何存储设备的情况下,是无法可以存得无限的数据,这种问题需要在系统结构层级才能解决。FIFO在FPGA内是通过封装一个双口RAM,表面上标志信号如空和满指示,原则情况上实现起来会有点困难。其实原因在于输入控制和输出是相互依存的,两者都需要依靠维持来产生。一般来讲,突发发送一般是以小周期性或不同周期来发生,从而最大尺寸要大于等于突发的尺寸。

 

  出于两个时钟域异步的自然因素,将会出现所在总线有些比特在一个时钟沿上被采集,然而另外的比特却可以在下一个时钟上被收集,取决于第一个时钟触发器是不是在有效时间内到达。在二进制地址中有些位变化有些位却没有,因此接收逻辑将会得到一个完全无效的地址,这个地址既不是当前地址也不是上一个地址。当地址改变时,只需要改变地址中的一个比特即可,这样就可以避免上面提到的问题。如果发生变化的那个比特并没有被下一个时钟正确采集,地址在线会同步地保留旧的地址值。所以格雷码常用来在异步时钟域之间传递多比特计数值,且多用于FIFO内。

 

鉴于读写地址要在异步时钟域中间来进行传递,那么这个读写地址将会晚一个时钟周期,但是这并不表示错误导致了数据溢出状况。如果在传送地点到读写时钟域时,读写逻辑将会认为数据没有写入,且将认为FIFO已空尽管此时FIFO已经被写入一个数据。这只会对总的吞吐率有一些小影响,但是不会导致下溢状况发生。同样地,当地址被传递到写时钟域时,如果读地址被延时了,那么写逻辑会认为FIFO里没有多余空间,尽管此时FIFO还未满。这同样只会对总的数据吞吐率有些微小影响,却不会造成上溢发生。


本文标签 :