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.)}