¿Cómo diseña un sistema Zynq PS-PL con un acelerador / coprocesador en el PL?

3

Soy nuevo en el desarrollo de FPGA y estoy tratando de construir un sistema simple usando el SoC de Zynq (en el Zedboard). Consistirá en un bloque de IP generado usando Vivado HLS que aceptará matrices de datos, operará en ellas y producirá matrices de resultados. Una aplicación completa (que se ejecuta en un núcleo ARM en el Sistema de Procesamiento (PS)) utilizará el bloqueo de IP (en la Lógica Programable (PL)).

No estoy seguro de cómo gestionar la transferencia de datos entre el PS y el PL. De la información que he visto hasta ahora, una opción es incluir las interfaces AXI Stream en el bloque de IP y usar un DMA AXI para transferir datos hacia y desde la memoria.

: para un diseño de este tipo, ¿cuál sería la secuencia de programación en la aplicación completa?

-¿Cuál sería la estructura del código C utilizado para generar la IP (para que la IP pueda aceptar y devolver arreglos usando los puertos AXIS)?

Realmente apreciaría cualquier sugerencia o enlace a información relevante.

Gracias.

{Editar (23/05/16): la formación de redes neuronales es la aplicación específica en la que estoy trabajando. Así que las matrices de entrada al bloque IP son parámetros de red. Se procesan, actualizan y devuelven. Esto implica operaciones de acumulación múltiple en las filas de las matrices. Y la formación en red implica muchas iteraciones de "entrada-proceso-salida". Por supuesto, esto se puede hacer en un procesador (en realidad se hace usando GPU en la mayoría de los casos), pero hacerlo en un FPGA podría ser más rápido y más eficiente en el uso de la energía.

No hay necesidad de ninguna E / S de usuario. (Solo imprimiré en una terminal para propósitos de depuración).

Estaba buscando principalmente algunas pautas / indicadores sobre la gestión de la interacción entre el procesador y la IP (diseñando la interfaz en HLS y la secuencia de programación para la aplicación completa), así como cualquier sugerencia sobre otros enfoques. que podría tomar (alternativas a usar el AXI DMA y AXIS).

(Estoy usando Xilinx Vivado Design Suite y Xilinx SDK. El flujo de diseño sería:
    1. Crea y exporta IP usando Vivado HLS.
    2. Diseñe el sistema PS-PL Zynq utilizando Vivado IP Integrator.
    3. Exporte hardware a Xilinx SDK y escriba la aplicación completa en SDK.)}

    
pregunta user3482357

2 respuestas

2

¿Puede ser más específico acerca de lo que quiere hacer con estos arreglos? ¿Los estás enviando al terminal? ¿Qué es lo que estás tratando de lograr con tu diseño? ¿Es algo que se podría hacer solo con un procesador o está utilizando el FPGA para un algoritmo de hardware específico?

¿Has leído la documentación de Xilinx o has visto los videos de capacitación de Vivado? Xilinx tiene un montón de gran documentación y tutoriales.

  

: para un diseño de este tipo, ¿cuál sería la secuencia de programación en la aplicación completa?

Le recomendaría que utilice las herramientas automatizadas para configurar el FPGA. Puede utilizar el Vivado IP Integrator para configurar el bus interno Conexiones con diagramas de bloques.

Esta herramienta creará un archivo de diseño que luego se puede exportar al SDK, donde puede escribir su código C. La comunicación entre el FPGA y ARM debe realizarse con un tipo de datos definido en los archivos de encabezado C generados.

  

-¿Cuál sería la estructura del código C utilizado para generar la IP (para que la IP pueda aceptar y devolver arreglos usando los puertos AXIS)?

La IP se genera desde Vivedo IP Integrator. Utilice mejor las herramientas automatizadas si es nuevo en el diseño.

Recuerde que el FPGA es una pizarra en blanco y debe configurarse antes de que se use a diferencia del procesador que está cableado para Fetch Decode Execute.

Nota: He usado Xilinx ISE y diseñado con VHDL e IP. Estoy menos familiarizado con las herramientas más nuevas.

    
respondido por el Digital Dude
0

Parece que la velocidad máxima del reloj es de 1.33 GHz para el ARM. Pero no estoy seguro de que puedas cronometrar el PL tan rápido. Me imagino que puede aprovechar el paralelismo en el FPGA para hacer muchas operaciones MAC simultáneamente.

Si el FPGA puede acceder a la memoria principal a través de DMA, puede llenar la memoria y luego enviar un indicador a la CPU para descargar los datos cuando haya terminado.

23 Descripción general de la página:

enlace

Manual técnico de referencia de 1863 páginas:

enlace

    
respondido por el Digital Dude

Lea otras preguntas en las etiquetas