Relación de aspecto óptima para almacenar datos en RAM de bloque

2

Estoy trabajando en Xilinx virtex 4 FPGA. Quiero almacenar algunos coeficientes de filtro en RAM de bloque.
Específicamente, tengo muchos conjuntos de filtros, cada conjunto tiene un coeficiente de 64, cada coeficiente es de 18 bits. Cada conjunto debe asignarse en un bloque RAM distinto.

De la Guía de usuario de Virtex 4 (enlace a pdf), dice un bloque RAM almacena 18Kbits de datos que pueden configurarse en cualquier "relación de aspecto" desde 16Kx1, 8Kx2, hasta 512x36.

Entonces, si programo la RAM del bloque para que tenga 512 coeficientes, entonces tengo 36 RAM de bloque distintas a mi disposición.

Mi pregunta es, ¿puedo reducir esta relación de aspecto de modo que programe la RAM del Bloque para almacenar 64 coeficientes, en cuyo caso tendré 288 RAM distintas del Bloque a mi disposición (64 x 288 = 18K)?

Si la respuesta es NO, ¿entonces cómo debo almacenar mis coeficientes para usar los recursos mínimos de RAM de bloque?

    
pregunta KharoBangdo

1 respuesta

4

No, has entendido mal el concepto de "relación de aspecto".

Cada chip tiene un número fijo de RAM en bloque; Puede encontrar este número en la hoja de datos.

Cada una de esas RAM de bloque contiene 18K bits, y puede configurarse para acceder a esos bits de varias maneras diferentes, desde 16K palabras de 1 bit cada una, hasta 512 palabras de 36 bits cada una. En el primer caso, puede leer o escribir un bit a la vez; en este último caso, puede leer o escribir 36 bits a la vez.

Para sus coeficientes de filtro, es probable que desee configurar la RAM del bloque como 1024 palabras de 18 bits cada una. Podrás tener un filtro para cada bloque de RAM en tu dispositivo, y estarás "perdiendo" la mayor parte de la capacidad de cada bloque de RAM.

Hay algunos trucos que puedes probar para admitir más de un filtro por RAM de bloque:

  • Si el direccionamiento de todos los filtros se ejecuta en el paso de bloqueo, puede configurar la RAM del bloque como 512 palabras de 36 bits y luego dividir el bus de datos de 36 bits en dos buses de 18 bits, enviando los datos a dos filtros separados.

  • Si de lo contrario no necesita la función de doble puerto de las RAM de bloque, puede usar el segundo puerto para alimentar un segundo filtro. Ate la dirección MSB baja en un puerto y alta en el otro.

  • Si se aplican ambas de las condiciones anteriores, posiblemente podría usar ambas técnicas juntas para mantener los coeficientes de cuatro filtros en cada bloque de RAM.

respondido por el Dave Tweed

Lea otras preguntas en las etiquetas