RAM multipuerto (1 puerto de escritura, muchos puertos de lectura)

3

Tengo un proyecto donde puedo necesitar una memoria RAM de búsqueda de 128 KB. Tengo 1 puerto de escritura que escribe los valores de búsqueda al inicio de la aplicación. Tendré más de 2 puertos de lectura (asumo 4). No quiero replicar la memoria RAM de 128 KB 4 veces por espacio.

Quería saber si es posible construir una memoria RAM multipuerto utilizando los BRAM de Xilinx simplemente agregando los puertos n RdAddr / RdDataOut? Es posible. ¿De qué necesito cuidarme cuando trato de hacer esto?

¿Hay un proyecto de código abierto que haya hecho esto, así que no tengo que reinventar la rueda?

Gracias por tu información.

RRS

    
pregunta boffin

1 respuesta

7

Suponiendo que necesita un ciclo de lectura en cada puerto en cada ciclo de reloj, cada BRAM le dará dos puertos de lectura. Más allá de eso, tienes que replicar el contenido de la memoria.

¿El ancho de banda requerido en cada puerto es menor que el ancho de banda sin procesar de BRAM? En ese caso, podría considerar multiplexar los puertos. Use un contador que se ejecute a la velocidad máxima de la BRAM para controlar un multiplexor que escanee el bus de direcciones para cada puerto, alimente estas direcciones a la BRAM y luego entregue los datos (generalmente 2 relojes más tarde) al bus de datos correspondiente para cada uno puerto.

La desventaja de este enfoque es que la latencia de acceso para cada puerto ahora es N relojes más largos que en el caso no multiplexado. Hay varias formas de lidiar con esta latencia, incluida la adición de etapas de canalización adicionales a las otras rutas de datos.

Tenga en cuenta que con un BRAM de 2 puertos dentro del módulo, puede escanear dos de los puertos externos a la vez.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas