Tengo un dispositivo de entrada que puede escribir en serie, paralelo de 8 bits o paralelo de 16 bits. Conozco la frecuencia de entrada y la velocidad de escritura máxima de esos formatos de datos.
Me dan el requisito de un FIFO de "64 bytes", con una palabra que consta de 4 bytes. Quiero probar este código genérico VHDL que encontré en línea. Las constantes necesarias para modificar son "DATA_WIDTH" y "ADDR_WIDTH". Puedo ver en el código, 1 palabra está asociada con ADDR_WIDTH.
fragmento de código:
...
constant FIFO_DEPTH : integer := 2**ADDR_WIDTH; --given equation???
signal pNextWordToRead : std_logic_vector(ADDR_WIDTH - 1 downto 0);
...
Pero también calcula la profundidad para ti. Entonces, si primero conecto el tamaño de mi palabra, puedo calcular mi profundidad. ¿También podría calcular mi Ancho de datos como DATA_WIDTH = 64 byte / word size
(derivado del tamaño FIFO = ancho x profundidad)? Si estoy usando los valores incorrectos, ¿cómo calcularía mi profundidad correctamente?
¿Entonces el ancho de datos no es el mismo que el ancho FIFO? Si el ancho de los datos es menor que el ancho de la dirección, se necesitaría más de 1 ciclo para escribir una dirección completa.
Esta implementación tiene sentido para mí en este momento porque mi profundidad es mucho y no desbordaré adecuadamente (mi reloj de lectura también es mucho más rápido).