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

2

Si usa un microcontrolador independiente (ARM / Atmel / PIC, etc.), normalmente (en estos días) utiliza un programador en el circuito. Luego puede usar un depurador o métodos de "bloqueo y grabación" (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 el diseño de hardware FPGA.

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

    
pregunta dmb

1 respuesta

4

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

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

  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. Normalmente se utilizan memorias flash CFI.

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

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

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

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

respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas