Quiero implementar un registro de datos para almacenar hasta 256 fragmentos de 8 bits (VHDL). También necesito poder acceder y modificar estos valores desde varios módulos vhdl. Un módulo accederá al registro para modificar los valores del puerto spi. Luego, otro módulo que implementa el protocolo EPP para comunicarse con la PC eliminará los datos.
Ahora mismo solo tengo la señal que implementa el registro en uno de mis módulos:
type type_dataRegisterWithAddress is array (0 to generic_numRegisters-1) of std_logic_vector(7 downto 0);
signal dataRegister: type_dataRegisterWithAddress;
No estoy seguro de los detalles técnicos de un registro, pero simplemente estoy almacenando vectores lógicos y accediendo con un to_integer(address)
.
No sé cómo compartiría esto con otro módulo, ya que no puedo colocar el mapa de puertos ya que es una matriz. Incluso si estaba en el módulo de nivel superior, todavía no sé cómo lo compartiría.
¿Cuál es el mejor método para crear algunos registros a los que se puede acceder desde muchos módulos?
EDITAR: Para responder algunas de las preguntas de Dave ...
Quería implementarlo en el código como lo estoy haciendo, ya que es un almacenamiento pequeño y en realidad no voy a usar 256, es solo que la interfaz EPP puede tener 256 direcciones. Pero sí mencionas un buen punto.
Estoy usando la placa Basys2 que tiene 72Kbits de ram de bloque de doble puerto. Solo lo he usado usando la función IP Core en este tutorial / module . Creo que esto puede ser lo mejor a usar.
Ahora que tengo el término correcto. ¿Cuál es su enfoque personal de la memoria compartida?