Usando BRAM en lugar de SRAM en Virtex-5 FPGA

2

Estoy trabajando en un proyecto en el que estamos capturando señales de un ADC utilizando un FPGA Virtex-5 y las muestras se almacenan en una SRAM de 128K x 256 desde donde las PC adquieren las muestras de datos. Creo que el Virtex-5 proporciona una opción para un BRAM y aunque entiendo que la profundidad no se acerca a lo que proporciona la SRAM, me gustaría utilizar la opción de BRAM en el Virtex-5 como un búfer para mantener el Muestras temporalmente hasta que sean adquiridas por el PC. ¿Qué tan difícil sería implementar esto?

    
pregunta GamingX

2 respuestas

3

Buenas noticias. Esta es una aplicación muy común para las interfaces ADC. En realidad, es muy fácil configurar el bloque RAM en dispositivos Xilinx.

Usted querrá ejecutar el "Generador de memoria de bloques" Coregen by Xilinx, que generará básicamente un módulo VHDL de caja negra que puede crear una instancia en su módulo VHDL de nivel superior. En Coregen, puede personalizar su RAM de bloque para que se vea como su SRAM externa existente. La única diferencia será que conectará señales en su módulo de nivel superior al nuevo módulo de caja negra que ha creado en lugar de a sus pines externos.

No estoy seguro de que pueda obtener un ancho de datos de 256 (¿realmente quiso decir 8?), pero creo que podría obtener una profundidad de 128K en la mayoría de los dispositivos Virtex-5. La hoja de datos que muestra la tabla de recursos de Virtex-5 (cuánto BRAM está disponible) está disponible aquí .

La hoja de datos que explica el Generador de memoria de bloques es aquí . Puede explicar la configuración, etc.

Para iniciar el generador de memoria de bloque en ISE 14, haga clic derecho en la jerarquía del proyecto y seleccione "nueva fuente". Luego seleccione el tipo de fuente como "IP (Núcleo ...". Luego seleccione el Generador de Memoria de Bloques como el tipo de IP como se muestra a continuación.

Unavezqueseabrael"Generador de memoria de bloques", seleccione las opciones que desee y luego haga clic en configurar. Agregará el núcleo de caja negra a su proyecto. Tendrás que instanciarlo en tu módulo de nivel superior. Por lo general, puede ver la "plantilla de creación de instancias" haciendo clic en el núcleo en la jerarquía del proyecto y seleccionando "Ver plantilla de creación de instancias de HDL" en la ventana de procesos.

    
respondido por el FL_Engineer
2

Las RAM de bloque son muy fáciles de obtener para producir herramientas a partir del código HDL, sin necesidad de meterse con Coregen.

Las ventajas de hacerlo sin coregen son:

  • No hay herramientas adicionales en el flujo
  • puede usar constantes y genéricos (o sus equivalentes de Verilog) del resto de su diseño para configurar la profundidad y el ancho de la memoria
  • coregen puede agregar varios minutos a una ejecución de compilación cuando ha cambiado algo, mientras que un ajuste rápido a un archivo HDL no cambia el tiempo de compilación en una cantidad notable en mi experiencia. ¡No tengo idea de lo que Coregen está haciendo todo ese tiempo!

Consulte el manual de su sintetizador para saber cómo escribir código que inferirá el bloque ram, y hay algunos ejemplos en las respuestas a esta pregunta

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas