¿Cuál es la razón específica para usar FIFO en el dominio asíncrono en VLSI?

Me preguntaba si la razón es usar FIFO en el dominio asíncrono en VLSI.

Básicamente, para evitar la propagación de x en el dominio asíncrono (también conocido como dominio CDC), se solucionó mediante el método F/F de dos etapas para resolver el problema.

Creo que puedo usar la misma idea para la ruta de datos de profundidad múltiple, pero la gente todavía usa FIFO en el dominio CDC. ¿Por qué?

Quiero saber cuál es la razón específica para usar FIFO en Cross Domain Clock.

Respuestas (3)

Los puertos de lectura y escritura FIFO pueden estar en diferentes relojes. Para los sistemas con relojes asíncronos, esto resuelve el problema básico de transferencia de datos entre dominios, siempre que los punteros de lectura y escritura FIFO no se crucen.

Incluso si los relojes tienen la misma frecuencia, aislar grandes áreas en dominios de tiempo separados usando FIFO o segmentos de registro (es decir, FIFO poco profundos) facilita el cierre de tiempo del sistema, a expensas de la latencia. Esto es especialmente útil en SoC grandes donde mantener la alineación de la fase del reloj en un dado grande se vuelve muy difícil, incluso con un diseño cuidadoso del árbol del reloj.

Para aquellos casos de límites FIFO en los que aparece el control de flujo (lleno, casi lleno, vacío, etc.), la generación de indicadores resuelve el cruce del dominio del reloj mediante el uso de técnicas especiales, como la codificación gris, para garantizar cálculos confiables de lleno/vacío dentro de cada dominio del reloj. .

Sin embargo, esta sincronización de banderas transfronteriza agrega latencia, por lo que el diseñador debe asignar espacio FIFO adicional para protegerse contra el desbordamiento. Esto puede ser mediante el uso de un indicador de casi lleno o mediante la adición de FIFO pequeño llamado búfer de deslizamiento que captura los datos adicionales emitidos por el host durante el tiempo de latencia de la bandera.

Básicamente, para evitar la propagación de x en un dominio asíncrono (también conocido como dominio CDC), me ocuparon del método F/F de 2 etapas para resolver el problema. Creo que puedo usar la misma idea para la ruta de datos de profundidad múltiple. pero la gente todavía usa FIFO en el dominio CDC, ¿por qué?

Por lo general, hay un tercer FF allí, pero lo dejaremos pasar por el momento.

El problema con lo que ha descrito para múltiples rutas de datos (es decir, múltiples bits, como una palabra de datos de 8 bits), es que las diferentes rutas pueden resolver la condición metaestable que surge de manera diferente. Entonces, si la palabra de entrada al circuito de cruce del reloj es 01010101, lo que sale del sincronizador de 8 bits puede ser algo diferente.

El diseñador FIFO, si hizo bien su trabajo, se ha ocupado de ese tipo de problemas por usted.

Además, el FIFO proporciona almacenamiento/búfer para n bytes/palabras, mientras que lo que ha descrito solo funciona para 1 solo dato (byte, palabra, etc.).

¿Por qué necesito usar FIFO asíncrono, cuando existen otras técnicas de cruce de dominio de reloj?

FIFO asíncrono hace que la sincronización sea más fácil cuando transmite múltiples bits de datos de forma continua que los registros/segmentos individuales combinados, WRITE y READ funcionan en diferentes dominios de reloj, las transferencias de dominio más rápidas a más lentas se producen sin pérdida de datos con un cálculo de profundidad adecuado de la memoria FIFO , el muestreo de WR_PNTR y RD_PNTR en los dominios del reloj ocurre con una técnica confiable de codificación gris, genera las banderas (LLENO, VACÍO, CASI LLENO, CASI VACÍO, etc.),

Cosas para explorar: -

--> ¿Cuáles son los escenarios, necesitaba optar por FIFO asíncrono? --> ¿Cómo calculo la profundidad de FIFO? --> ¿Por qué los punteros RD y WR son un poco más anchos que las direcciones RD y WR? --> ¿Qué utilidad tiene aquí la conversión de binario a gris y de gris a binario? En resumen, ¿técnica de codificación Grey? --> ¿Cuáles son las condiciones de la bandera (lleno, vacío, etc.)? -> ¿Cómo calculo la profundidad cuando no se proporciona una tasa de ráfaga? --> ¿Cómo puedo asegurarme de que no haya metaestabilidad en el diseño de cruce de mi dominio de reloj?

http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO1.pdf