Flash de configuración de FPGA como memoria de uso general después del arranque

Actualmente estoy trabajando en un sistema con un Spartan-6 FPGA y necesito algunos volúmenes bajos de memoria no volátil para usar durante la operación del sistema.

Mi pregunta es, dado que tengo una memoria flash relativamente grande (25 Mbit) que ya está almacenada para almacenar datos de configuración, ¿puedo particionar efectivamente un bloque para usarlo como memoria de propósito general durante la operación? Parecería una tontería agregar hardware duplicado para cantidades tan pequeñas de memoria.

El tamaño de la memoria no es un problema, ya que sé que los datos de configuración no llenan la memoria flash (dejando más que suficiente memoria que se requeriría durante la operación < 3 Mbit).

¿Alguien ha hecho algo similar a esto?

¡Gracias!

Planeo hacer algo similar: agregar datos de identificación de la placa en algún lugar después de la configuración de FPGA. Planeo proteger contra escritura ese sector del Flash también. Por cierto, ¿qué chip Flash piensas usar?

Respuestas (1)

Si está utilizando el FPGA con un tipo de chip SPI Flash estándar de la industria, entonces es posible usar el chip SPI Flash de la manera que usted describe. La forma de hacer esto con el mayor control del usuario es colocar un pequeño chip MUX entre el FPGA y el chip SPI Flash en el camino de las señales de control SPI Flash. Luego, el otro lado del MUX se conecta a pines alternativos activados por el usuario para admitir una interfaz SPI alternativa al chip SPI Flash. Luego programaría su propia interfaz en el dispositivo SPI para acceder según lo desee.

Por otro lado, Xilinx tiene una Nota de aplicación detallada que muestra cómo se puede hacer esto de una manera más genérica sin el MUX agregado. Consulte http://www.xilinx.com/support/documentation/application_notes/xapp694.pdf .

Un documento más dirigido para la familia Spartan 6 FPGA está aquí: https://www.xilinx.com/support/documentation/user_guides/ug380.pdf

Genial, parece que esto es algo que en realidad es compatible con Xilinx, esto hace que las cosas sean mucho más fáciles de entender. Gracias por señalarme en la dirección correcta.