Objetivo: adquirir un flujo de datos generado por ADC de alto rendimiento (1 Msample / s @ 16bits) en un procesador System-on-Chip. Propósito: visualización de datos en tiempo real y algunos procesamientos (menores) en tiempo real
¿Cuáles son los pros y los contras de las distintas arquitecturas para lograr el objetivo?
Arquitectura 1
Una RAM de doble puerto, que toma datos de un FPGA que pega la salida SPI de los ADC y el puerto 1 de la RAM. El SoC IC está conectado a esta RAM en el puerto 2 mediante un bus de memoria externo y ve los datos muestreados en su propio espacio de memoria. El procesador está 100% libre de gestionar el ADC. Los datos de muestra son visibles en un esquema de búfer doble desde el final de Soc con interrupciones que informan al SoC cuando los búferes están llenos.
Arquitectura 2
Como en la Arquitectura 1, hacer que la RAM de doble puerto sea visible en un bus PCIe como un dispositivo de punto final (en lugar de usar el Bus de memoria externa que hemos visto en varios SoC).
Arquitectura 3
Utilice una Soc con controladores SPI incrustados y DMA. Programe la DMA para que se active mediante la señal de fin de conversión de los ADC y para mover los datos del SPI FIFO a la memoria.
Arquitectura 4
Use un procesador dual o quad-core y dedique un núcleo para controlar la interfaz SPI con el ADC y seleccione un puerto GPIO para detectar la final de la conversión. De hecho, esta solución se implementa mediante una funcionalidad similar al DMA del software.
Arquitectura 5 ¿Tu solución?