FIFO asíncrono para lectura rápida de lectura lenta

0

No estoy seguro de cómo generar la señal completa en un FIFO con escritura rápida y lectura lenta. Por ejemplo, si f_wr = 10 * f_rd, cuando el puntero de escritura actualizado se sincroniza con el lado de lectura utilizando metodologías simples para la sincronización del dominio de reloj rápido al dominio de reloj lento (por ejemplo, extendiendo la vida útil de los datos en el dominio de reloj rápido) Los datos podrían haber sido escritos en el FIFO. En tales casos, la señal completa no está actualizada y puede causar que los datos en FIFO se sobrescriban. ¿Qué tipo de procesamiento especial debe tomarse aquí?

Como intenté generar un FIFO IP en Xilinx ISE, no hay opción para ingresar los parámetros de los relojes si elijo no usar FIFO incorporado, es decir, no sabe de qué lado (escritura / lectura) va mas rapido ¿Cómo hace la IP correctamente esta sincronización?

    
pregunta fiedel

1 respuesta

1

Si las tasas promedio de datos de entrada y salida son fijas y diferentes, eventualmente se desbordará o subbordará un FIFO. No hay un 'procesamiento' que pueda usar para evitar dañar los datos.

Lo que hace FIFO es actuar como un búfer flexible para captar las variaciones temporales en la tasa de consumo y llegada de datos. La FIFO tiene que ser lo suficientemente profunda (¿larga?) Para que pueda almacenar todo el exceso de datos, y un poco más de margen.

Si sus tasas de entrada y / o salida no están fijadas externamente, entonces puede usar el FIFO para controlar uno u otro. Un FIFO tendrá banderas llenas y vacías, y las de Xilinx también tienen banderas programables "casi llenas" y "casi vacías". Estos pueden devolverse a su fuente de datos y / o se hunden para decirles que esperen. Cuanto más profundo sea el FIFO, más tiempo podrá permitir que persista una diferencia en la tasa de entrada / salida antes de tener que acelerar la conexión más rápida.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas