(笔记)synchronizer step by step 优化设计

方法一:

     此列子只用了一个flipflop同步另一个时钟域的信号,如果bclk时钟域穿过来的的信号在aclk的上升区域沿发生

变化(在setup time之后 hold time之前发生变化),那么所采到的信号就可能会产生亚稳态,这将对电路产生

严重的影响。能否有其他方法改变此情况呢?

方法二:

     我们在方法一的基础上又加了一个flipflop,这样如果外部时钟域传来的signal在DEMET的上升沿变化,EDMET输出亚稳态,

如果EDMET亚稳态输出在SYNC上升沿到来之前消失(即在setup time到来之前消失),那么SYNC的输出将是正常值,这样

就有效地消除了亚稳态;如果亚稳态输出在SYNC上升沿到来之前没消失(即在setup time到来之前没消失),那么SYNC将输

出亚稳态,但此时的概率非常小,所以可以不用考虑。

    但当signal的外部时钟域非常小的情况时(如下图),signal的变化可能在我们当前时钟clock_one的上升沿到来之前消失,

此时我们可能采不到信号的变化。这该怎么办呢?

 

 

方法三:

我们在方法二的基础上又加了flipflop,inverter,xor,在初始时CAP,DEMET,SYNC1,SYNC2输出都是低电平这样让外部时钟域信号signal

作为CAP的时钟输入,只要signal发生从0到1的变化,那么CAP的输出Q就会发生变化,由0到1,下一个上升沿变化反映到DEMET,再下

一个上升沿变化反映到SYNC1,在下一个上升沿变化反映到SYNC2,signal_CAP_sync为最后同步化的信号输出(如下图)。

如果外部时钟域进来的信号是低电平有效,那么我们只需在最前方加个反相器,让后白最后的xor变成xnor即可。

但是如果上述外部时钟域进来的信号signal在当前时钟域clock_one上升沿到来之前发生两次变化,那么此电路

只能采到一个变化,那我们需要怎么改进呢?

正在研究中......

 

posted @ 2008-12-14 01:26  changlongbaobao  阅读(417)  评论(0编辑  收藏  举报