En esta imagen:
Figura 1: metaestabilidad en sincronizador de 2 o 3 flop
Si la metaestabilidad del primer flop no se resuelve en el cuarto reloj, ¿es posible que se resuelva a '0' en el quinto reloj? ¿O la entrada obligará a la salida del flop a ir a '1' en el quinto reloj? ¿Hay algún otro peor caso que pueda ocurrir?
Su latencia parece un poco menos de 1/4 de ciclo y pierde el estado "main_in_full" por 1 ciclo de reloj. Sospecho que si elige el reloj invertido para la sincronización (1/2 de latencia), tal vez pueda capturarse en el cuarto reloj y poco probable en el quinto y nunca en el sexto.
Creo que tienes un gran malentendido sobre cómo funciona la metaestabilidad.
La metaestabilidad para cualquier FF dado no puede persistir más allá del siguiente borde del reloj. Cada borde del reloj inicia una nueva "ventana" para la metaestabilidad, y solo si la entrada estaba cambiando al mismo tiempo que el borde del reloj.
Es por eso que usamos dos o más FF para eliminar la metaestabilidad. El segundo FF solo puede volverse metaestable si el primer FF resolvió su metaestabilidad en esa ventana estrecha alrededor del siguiente borde del reloj. Pero ese mismo flanco de reloj fuerza al primer FF a un buen estado en cualquier caso.
mitu raj
eliot alderson
Anurag
mitu raj