FIFO (vhdl): Eliminar operación

0

Supongamos que tengo un código FIFO escrito en vhdl para FIFO. Quiero eliminar un elemento de la FIFO. Aquí, el FIFO actuaría de la misma manera que una lista enlazada donde verifico todos y cada uno de los elementos del FIFO y luego lo comparo con el data_in y finalmente lo elimino.

¿O es el caso de que siempre debería eliminar el primer elemento de FIFO?

Por favor, dame algunas sugerencias valiosas.

Saludos a todos.

    
pregunta zyxwvu

1 respuesta

0

He hecho un tipo de fifo con cuatro entradas adicionales: rd_cancel y rd_commit, y wr_cancel y wr_commit. La idea es que puede hacer un montón de escrituras y luego cancelar las escrituras que hizo (borrar los datos que acaba de escribir) o confirmar esos datos (ponerlos a disposición del puerto de lectura). Lo mismo para la lectura: rd_cancel "no leía" lo que acabas de leer, rd_commit confirmaría tus lecturas. La operación de cancelación / confirmación cancelaría o confirmaría solo los datos desde la última cancelación / confirmación.

Esto se hace teniendo una copia temporal de los punteros de lectura y escritura. Estos punteros temporales se copian de un lado a otro con los punteros reales en función de las entradas de cancelación / confirmación. Además, al calcular si la FIFO está llena o no, a veces se usan los punteros temporales o los punteros reales. Es un poco complicado, y más allá de este tipo de foro, pero si esto suena como lo que quieres, avísame y veré qué puedo hacer.

Solo para su información: Nunca he visto este tipo de FIFO hecho antes, pero parece ser una solución obvia para varios problemas relacionados con FIFO. La última vez que busqué en Google para obtener un FIFO como este salí vacío, pero me sorprendería que nadie más haya imaginado algo como esto.

    
respondido por el user3624

Lea otras preguntas en las etiquetas