¿Se puede crear una instancia de RAM con 2 puertos de lectura y 1 puerto de escritura como IP en Quartus?

1

Como parte del diseño MIPS, tenemos algo llamado archivo de registro. Solo tiene 32 registros cada 32 bits que solo hacen 1024 bits o 128 bytes. No estoy seguro de cómo decirle a Quartus que ejemplifique esto como un bloque de memoria con 2 puertos de lectura y 1 puerto de escritura. La RAM de doble puerto en Quartus parece tener 2 puertos de lectura / escritura. No es posible tener 2 puertos de lectura y 1 de escritura. ¿Cómo creo un puerto de lectura 2 puertos + 1 puerto de escritura utilizando los bloques de memoria en Altera Quartus II?

    
pregunta quantum231

3 respuestas

4

Hay un truco para hacer esto en las tecnologías Xilinx: crear instancias de dos bloques de memoria, con sus puertos de escritura unidos. (Cada bloque está configurado para tener 1 puerto de lectura y 1 puerto de escritura, direccionables independientemente).

No veo ninguna razón por la que el mismo patrón no funcionaría en los FPGA de Altera. La última vez que miré, sus bloques de memoria tenían una capacidad similar de doble puerto (¡pero no de 3 puertos!).

    
respondido por el Brian Drummond
2

Teniendo en cuenta los comentarios que tu diseño escribe y lee en diferentes momentos, puedes usar una RAM de puerto dual verdadero para esto.

Para uno de los puertos de lectura, debe conectar el puerto A para que sea de solo lectura (vincule la habilitación de escritura permanentemente a 0).

Para la otra lectura, y la escritura, ambos compartirían el mismo puerto en la RAM. Debería utilizar un multiplexor en la entrada de dirección que está controlada por la señal de habilitación de escritura; por lo tanto, básicamente, cuando realice una escritura, el multiplexor seleccionará su dirección de escritura y la conectará a los pines de la memoria. Cuando no esté haciendo una escritura, la dirección de lectura se conectará a la memoria, lo que le permitirá realizar operaciones de lectura. Esto debería funcionar porque, como usted dice, nunca necesita escribir y leer en ese puerto en el mismo ciclo de reloj.

Si necesita más aclaraciones, dibujo un diagrama para explicar con más detalle.

    
respondido por el Tom Carpenter
1

No se puede, que yo sepa, porque solo existe la lógica para dos puertos en las partes cableadas.

Sus opciones son:

  • retrasar la carga del segundo operando hasta la siguiente etapa de canalización
  • retrasar la escritura del resultado si la instrucción decodificada actualmente tiene dos operandos de registro
  • implementar el archivo de registro en LUTs.
respondido por el Simon Richter

Lea otras preguntas en las etiquetas