Configurar dinámicamente FPGA desde el programa host

1

Me preguntaba si alguien conoce una manera eficiente de programar el FPGA (PL) para una serie Xilinx Zynq-7 o dispositivos relacionados, desde un programa C host (no en el SoC, sino desde la PC host). ¿Hay una API de Xilinx que pueda usar / incluir en mi programa? Como la única manera en la que puedo pensar en hacerlo en este momento es invocar la programación de la línea de comandos a través de Impact (que no es muy elegante).

Básicamente, quiero poner la funcionalidad de "Programa FPGA" del SDK en mi programa C host donde el usuario selecciona un archivo .bit creado previamente (y un archivo .elf si es posible) para programar el FPGA / (SoC). Esto es solo para una prueba de concepto, luego me gustaría poner esta configuración dinámica en una de las CPUs ARM.

Muchas gracias Sam

    
pregunta Sam Palmer

2 respuestas

2

Depende de cómo se conecte el FPGA al host. Si está utilizando el cable JTAG de Xilinx, está prácticamente estancado con Impact. Sin embargo, si tiene una interfaz diferente al host, entonces no sería muy difícil, por ejemplo, escribir una interfaz de cargador que pueda aceptar un archivo de bits y sobrescribir la configuración flash. Entonces, todo lo que necesita hacer es reiniciar el tablero, y ya está listo. Yo sugeriría buscar en la guía de configuración de Xilinx para la parte que está usando; Tendrá información más específica sobre las distintas interfaces de configuración.

Editar: Interesante; no hay una guía de configuración separada para las partes Zynq. Eche un vistazo al capítulo 6 del manual de referencia técnica, Xilinx ug585. A Loks le gusta el procedimiento es arrancar un núcleo desde flash, luego hacer que el núcleo cargue la configuración de FPGA. Si puede cargar una nueva configuración en la RAM a través de cualquier interfaz arbitraria, entonces, si la restauración de la parte lógica programable no impide que el núcleo acceda a la imagen en la RAM, puede reiniciar el FPGA y cargar la nueva configuración desde la RAM. Parece que necesitas usar AXI-PCAP. Me imagino que también puede actualizar el software de núcleo ARM, pero no estoy seguro de cuál sería el procedimiento adecuado. ¿Tiene alguna memoria de programa externa o solo utiliza memoria en chip? Si puede usar la memoria externa, entonces tal vez pueda "crear" una nueva imagen en la memoria externa y luego volver a copiarla en la memoria interna antes de iniciarla. Básicamente, solo necesita una forma de guardar un poco de código que pueda volver a cargar la configuración de FPGA y luego volver a cargar y / o iniciar el software principal ARM.

    
respondido por el alex.forencich
1

Xilinx tiene una muy buena nota de aplicaciones con código C compatible que puedes usar como base para tu código.

Para que funcione su controlador, debe tener 4 GPIOs libres y conectarlos al FPGA (y a los otros dispositivos JTAG de la cadena) como se muestra en esta imagen:

Esposiblequetengaquecambiarlounpocoparaadaptarloasupropioentorno,perobásicamentedebeseguirlospasosdescritosenlanotadelaaplicación,anteriormenteuséelformatoXSVFparaprogramarelFPGAconuncontroladorCortexM3.Paraesoseguíestospasos:

Puede buscar en Xilinx XAPP058 : "Programación en el sistema de Xilinx usando una El microcontrolador incorporado "en su sitio web, es un poco antiguo, pero es posible que pueda encontrar el último que funciona con los nuevos dispositivos también.

    
respondido por el FarhadA

Lea otras preguntas en las etiquetas