¿Existe una forma estándar de colocar el código compilado en un procesador integrado en un FPGA?

Si usa un microcontrolador independiente (ARM/Atmel/PIC, etc.), normalmente (en estos días) usa un programador en circuito. Luego, puede usar un depurador o métodos "crash and burn" (probablemente con una interfaz de terminal) para desarrollar su código.

Puedo obtener eso con el código HDL correcto, puede integrar un microprocesador o controlador con su diseño de hardware FPGA.

Pero, ¿cómo obtienes tu código en él? y como se depura? ¿También sintetizas una forma de cargar el código compilado? ¿O el código está integrado de alguna manera en el flujo de bits que carga en el FPGA? ¿Existe un método estándar o varía según la plataforma?

Respuestas (1)

La respuesta depende de dónde planee almacenar su código. Algunos ejemplos:

  1. Para programas pequeños, puede usar la memoria en chip en el FPGA para la memoria de instrucciones del procesador. Puede optar por utilizar un archivo de inicialización de memoria de encendido para la memoria. La mayoría de los principales proveedores de FPGA lo permiten. Sin embargo, en caso de que se dañe la memoria, tendrá que reconfigurar la FPGA para recuperarla.

  2. Para las pruebas, normalmente puede usar un programador JTAG para cargar el software en la memoria de instrucciones del procesador y arrancarlo. Sin embargo, esto rara vez es útil para la producción, pero es realmente útil para la depuración.

  3. Para programas más grandes, si el diseño de su procesador lo permite, puede ejecutar programas directamente desde alguna memoria flash externa no volátil. Comúnmente se utilizan memorias flash CFI.

  4. Puede usar la memoria DDR para software grande (por ejemplo, sistemas operativos integrados). La memoria se inicializaría desde una fuente no volátil (por ejemplo, CFI Flash, tarjeta SD, etc.). Por lo general, necesitará algún software de precarga para lograr esto (un pequeño programa que se ejecuta cuando se reinicia el procesador para copiar el software a la memoria DDR).

Hay muchas formas de FPGA y procesadores integrados (incluidos los ahora comunes dispositivos SoC que tienen núcleos IP ARM duros). Como tal, no existe una forma "estándar" de lograr esto, sino formas específicas de la aplicación. Ejemplos más específicos incluyen:

  • Los procesadores Intel/Altera NIOS vienen con un software de precarga que permite copiar el software de instrucciones de los dispositivos flash CFI o EPCQ a la memoria en chip o DDR cada vez que se reinicia el dispositivo.

  • Los procesadores ARM integrados suelen tener una ROM de arranque integrada que contiene una pequeña pieza de software para inicializar el procesador y cargar software (por ejemplo, precargador, aplicación, etc.) desde una fuente predefinida. Algunos incluso permiten el arranque desde una fuente dentro del lado FPGA del dispositivo SoC.