Accediendo a la instancia de RAM desde múltiples módulos en Verilog

1

Estoy tratando de hacer que una instancia única del módulo RAM sea accesible en diferentes módulos sin crear instancias en cada módulo. Ya que si instalo el módulo de RAM en cada módulo, hay dos copias más del mismo, que ocupan el doble de RAM de bloque que sea necesario. No hay ninguna preocupación acerca de los módulos que intentan acceder al mismo tiempo, ya que se ejecutan uno tras otro. ¿Cómo puedo hacerlo?

P.S. proporcionar memoria como entrada a cada módulo parece una solución incorrecta ...

    
pregunta Yakov

1 respuesta

7

Si está intentando modelar cómo lo haría el hardware real, debería:

  1. Defina una interfaz con los puertos necesarios (lectura / escritura, dirección, escritura de datos, devolución de datos)
  2. Agregue estos puertos a cualquier unidad que desee acceder al ram.
  3. Cree un módulo de arbitraje que se conecte a todos los demás módulos con puertos de interfaz ram, y permita que este módulo arbitre las solicitudes de todos los módulos diferentes, acceda al ram físico y devuelva los datos leídos al módulo que lo solicitó.

Si solo estás haciendo esto por simulación y no te importa la síntesis, entonces puedes usar una referencia jerárquica para un bloque ram en algún lugar ( simtop.u_ram.wr_data = 0x123 ). Pero creo que escribirlo de manera sintetizable como se describe anteriormente es la forma más limpia y lógica de hacerlo.

    
respondido por el Tim

Lea otras preguntas en las etiquetas