No estoy muy seguro de cómo generar una 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 usando metodologías simples para la sincronización del dominio de reloj rápido al dominio de reloj lento (por ejemplo, al extender la vida útil de los datos en el dominio de reloj rápido), varios los datos podrían haber sido escritos en el FIFO. En tales casos, la señal completa no está actualizada y puede hacer que se sobrescriban los datos en FIFO. ¿Qué tipo de procesamiento especial se debe tomar aquí?
Como traté de generar una IP FIFO en Xilinx ISE, no hay opción para ingresar los parámetros de los relojes si elijo no usar FIFO integrado, es decir, no sabe de qué lado (escritura/lectura) va más rápido. ¿Cómo hace la IP dicha sincronización correctamente?
Si las tasas de datos de entrada y salida promedio son fijas y diferentes, eventualmente se desbordará o se desbordará un FIFO. No hay 'procesamiento' que pueda usar para evitar corromper los datos.
Lo que hace un FIFO es actuar como un búfer flexible para absorber variaciones temporales en la tasa de llegada y consumo de datos. El FIFO tiene que ser lo suficientemente profundo (¿largo?) para que pueda almacenar todos los datos en exceso, y un poco más para el margen.
Si sus tasas de entrada y/o salida no están fijadas externamente, entonces puede usar FIFO para controlar una u otra. Un FIFO tendrá indicadores llenos y vacíos, y los de Xilinx también tienen indicadores programables de "casi lleno" y "casi vacío". Estos se pueden realimentar a su fuente de datos y/o sumidero para indicarles 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.
fidel
fidel
Neil_ES