Cómo almacenar una configuración en un FPGA

Tengo una pregunta sobre la placa de desarrollo Nexys A7-100T que quiero usar como herramienta de depuración para otro proyecto. Proporcionaré algunos antecedentes a continuación:

Tengo un sensor que envía pulsos cuadrados y lo lee una MCU separada, y el conteo de pulsos en la pantalla de la MCU no es correcto según el osciloscopio. Quiero configurar mi FPGA para contar y mostrar los pulsos, lo cual puedo hacer fácilmente para descartar el final del hardware del proyecto.

Para configurar mi FPGA tengo que usar mi PC que está en mi escritorio, pero el sensor al que quiero conectar el FPGA está alejado de la PC (aproximadamente 200 yardas).

Mi pregunta es, ¿cómo puedo configurar mi FPGA en la PC de mi oficina y luego llevarlo al sensor y tener la configuración allí en el FPGA?

Estoy pensando que podría alimentar el FPGA con una batería y una vez configurado, mantener el FPGA encendido y funcionará bien. O podría almacenar la configuración que se usa durante el arranque para programar el FPGA, pero ¿se hace esto fácilmente con esta placa?

Me encantaría escuchar tu consejo.

Aquí está la hoja de datos para la placa de desarrollo FPGA: Manual de referencia de Nexys A7-100T

Puede elegir una FPGA diferente que almacene su configuración internamente, o puede elegir iniciar su FPGA desde una memoria flash en la misma PCB (o en una tarjeta SD conectada a esa PCB).
Algunas placas también son compatibles con una unidad flash USB. Como Basys-3.

Respuestas (2)

Su placa tiene un dispositivo Artix (Xilinx) que admite varias opciones de configuración. Digilent proporciona un flash SPI en serie para esto, por lo que 'Master SPI' debe preseleccionarse con los pines Mode M[2:0] (debe ser 3'b001). Asegúrate de que ese sea el caso. Nota: el uso de JTAG anula la configuración del modo mientras está en uso, por lo que no es necesario cambiar el modo de un lado a otro para usar JTAG.

Para usar este método, debe programar el flash en el sistema a través de JTAG. Afortunadamente, esto es bastante sencillo.

En el flujo de Vivado, haga lo siguiente:

  • En Herramientas->Generar archivo de configuración de memoria, cree el archivo de programación Flash, usando su archivo (.bit) y seleccionando el dispositivo correcto (Spansion S25FL128S) y el tipo de E/S (SPI x4). Elija el formato 'MCS'.
  • en el Administrador de hardware, abra Target para conectar JTAG, luego agregue el dispositivo de memoria de configuración (Flash) a la cadena de escaneo si aún no se muestra.
  • Programe el Flash utilizando el archivo de configuración de memoria (.mcs) que creó anteriormente.

El proceso toma varios minutos para programar el flash.

Una vez que el flash está programado con un flujo de bits válido, el Artix se iniciará desde el flash a partir de ahí. Tenga en cuenta que aún puede descargar flujos de bits a través de JTAG como antes para la depuración.

A medida que se familiarice con este proceso, sepa que existen opciones para el flujo de bits, como comprimir el flujo y configurar la frecuencia del reloj SPI. Estos pueden reducir el tiempo de programación y carga.

Más aquí: https://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf

Finalmente, los pines de la interfaz SPI de programación se pueden compartir con un bloque IP de interfaz SPI en el chip, lo que le permite acceder al SPI para su propio almacenamiento. Esto requiere un controlador de dispositivo SPI y asegurarse de que su aplicación no corrompa accidentalmente el flujo de bits FPGA. Sus datos de usuario se pueden fusionar como parte del archivo .mcs.

La placa Nexys usa (como muchas FPGA) una memoria flash serial integrada para descargar su firmware. El flash está conectado a la FPGA con enlace serial Quad SPI.

Al inicio, el FPGA es el maestro del bus SPI y descarga su flujo de bits de él.

El manual de Nexys establece que puede usar el espacio libre de la memoria flash para almacenar los ajustes de configuración del usuario (el 77% de la memoria flash no se usa). Tal vez pueda usar este espacio libre para almacenar su configuración y volver a leerla usando SPI.

hoja de datos 3.2

También puede consultar la parte 2.2 del manual de referencia para la programación Quad SPI con Impact (Herramienta ISE) o Vivado.

hoja de datos 2.2

¿Puede tener la forma de una tarjeta microSD conectada a la placa?
@ David777 ¿A qué te refieres? ¿Usar la MicroSD como fuente de configuración o como fuente de flujo de bits? Si desea utilizar la SD como fuente de configuración, deberá implementar al menos el manejo del sistema de archivos FAT en su FPGA, o utilizar la tarjeta SD sin procesar, pero también puede ser complicado.
¿Cuál recomendarías? Me gustaría el método más fácil ya que esto es nuevo para mí. Idealmente, me gustaría un método en el que pueda sacar la placa FPGA de forma remota, encenderla y tendrá mi diseño configurado
@PierreOlivier El FPGA Artix-7 en esa placa no admite directamente el arranque desde una tarjeta SD (algunos otros FPGA Xlinx como ZYNQ sí lo hacen). El método más fácil será cargar el código en SPI flash a través de USB/JTAG en Vivado. Simplemente abra el administrador de hardware en Vivado, conéctese a su dispositivo, seleccione qué tipo de flash ha conectado, seleccione su archivo de flujo de bits y luego presione el botón para cargar su flujo de bits, es así de fácil.
@ user4574 Esto suena exactamente como lo que necesito. Lo intentaré mañana