Al diseñar una FIFO síncrona en un entorno de diseño digital VLSI, ¿cuáles son los problemas en FIFO y cómo los resuelvo?

Uno de los enfoques para implementar FIFO es utilizar memorias integradas, ya sea SRAM integrada en ASIC o bloquear RAM en FPGA.

Primero supongamos que su FIFO se basa en una memoria que no tiene latencia. Primero debe implementar un puntero de escritura y un puntero de lectura. Luego use estos dos punteros para crear señales llenas y vacías. Asegúrese de considerar el caso envolvente. Una pregunta simple para verificar su FIFO es: en cualquier momento dado, si el puntero de escritura es igual al puntero de lectura, ¿está este FIFO lleno o vacío? ¿Qué información adicional se necesita para distinguir estas dos condiciones?

Si no se puede mantener la suposición anterior de latencia de lectura / escritura cero, entonces es posible que también deba considerar qué tan grande es la latencia y luego crear una señal casi completa para evitar la pérdida de datos en el lado de entrada.

La implementación basada en memoria no tiene un FIFO verdadero dentro, pero desde el punto de vista del usuario, se comporta igual. Es muy útil cuando la profundidad FIFO es grande y tiene RAM incorporada disponible.

Para desarrollar la lógica para FIFO lleno y FIFO vacío … ambos parecen estar ocurriendo en condiciones lógicas iguales. Primero desarrolle su propia lógica para resolver este problema y luego busque el enfoque de otras personas. Disfrute de la codificación.