|
发表于 2016-10-30 14:30:33
|
显示全部楼层
回复 32# 小红帽奶爸
我觉得30楼问的是在同步过程中,对亚稳态的值进行决断的时候可能会产生一个错误的错误的值,即clka中输入的是0,而经过同步电路后,在clkb最终得到了1,这个应该也是有可能的,要怎么才能尽量减少这种亚稳态决断的错误?
FF对输入采样,在输入不跳变的情况下,输出就等于输入,不存在采样错误。这应该很好懂。
我觉得你真正想问的是,会不会一个0/1 或者1/0 signal_a 信号被同步成 1/0 或者0/1.
这是有可能的,这就是Failure。signal_a在第一级FF1的电平边沿跳变,造成setup/hold violation,所以FF1_Q就出现metastability, 但是它的值还是要回归到1或者0,这就有可能和实际想要的signal_a的值不一样。
假设signal_a 0/1, FF1_Q 的结果是metastability → 0, 然后下一个clk,FF2采样这个0,也输出了0;
到这里,就出现一个分水岭,signal_a到底有多长,假如它足够长,那么第二个clk的时候,它就被FF1正常采样,然后第三个clk被FF2正常采样,实际的level_b 输出也就只有时间早晚的问题。
再一个就是上述的 两级FF 不是100% metastability free, 第二级的FF 还是会因为各种原因有setup/hold violation. 减少metastability就只能继续增加FF的级数。 |
|