Codificación de direcciones en FIFO asíncrono

0

Para generar FULL / EMPTY para el control FIFO, la dirección de lectura / escritura debe transferirse al lado de escritura / lectura para la comparación. Una solución es utilizar el código gris para que la dirección se entregue de manera segura al dominio del reloj diferente, ya que solo se invertirá un bit a la vez. Esto es bueno si la profundidad de FIFO D = 2 ^ K porque solo un bit cambia para la transición de D-1 a 0. Pero, ¿y si D? = 2 ^ K, por ejemplo, 13? El código gris es 1010, mientras que la siguiente dirección es 0000, por lo que se cambiarán 2 bits, y el sincronizador de 2 etapas no es seguro para tal cambio. ¿Cómo se resuelve este problema para los FIFO con profundidad arbitraria? ¿Se utilizarán esquemas de sincronización más complicados? Si es así, parece que ya no es necesario convertir de / a código gris.

    
pregunta fiedel

1 respuesta

1

El tamaño físico de la RAM utilizada dentro de FIFO debe ser una potencia de 2 para que el esquema de código gris funcione. La profundidad máxima del FIFO como se ve en la lógica externa aún puede limitarse a algo menos que 2 N , pero los contadores de direcciones de lectura y escritura reales se ejecutarán en todo el rango de 0 a 2 N - 1.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas