Cuando se transfiere información de un bit entre dos dominios de reloj diferentes, usamos 2 flip-flops o sincronizadores dobles. Pero cuando transferimos señales de múltiples bits a través de dos dominios de reloj diferentes, ¿por qué los sincronizadores dobles por sí solos no son suficientes? ¿Por qué en este caso necesitamos señales especiales de apretón de manos/código gris, etc. junto con los flip-flops de doble sincronización que complican toda la configuración?
Transferir un solo bit es simple. Tiene solo dos estados, y cuando ocurre una transición, solo puede estar en el estado anterior o en el nuevo estado. Por lo tanto, la ÚNICA preocupación es la metaestabilidad, y el sincronizador de dos flop normalmente es suficiente para solucionar este problema.
Sin embargo, un bus de múltiples bits tiene un problema adicional: al cruzar un límite de dominio de reloj, se puede percibir que diferentes bits cambian en diferentes bordes de reloj debido a pequeñas diferencias en los retrasos en la lógica y en el cableado. Algunos bits pueden volverse metaestables mientras que otros no, y pueden tardar diferentes cantidades de tiempo en resolverse. Ahora no tiene solo el estado anterior y el estado siguiente: puede tener cualquier cantidad de estados intermedios en los que solo algunos de los bits tienen sus nuevos valores, y algunos de los bits todavía tienen sus valores anteriores.
Este problema adicional de coherencia de datos es la razón por la que se requiere la lógica de protocolo de enlace adicional. Y es por eso que el FIFO asíncrono o de doble reloj es un componente clave en los sistemas digitales que involucran múltiples dominios de reloj: reúne todos los elementos necesarios en un paquete ordenado.
Andy alias
cristiano b