¿Estás seguro de que son 40Msps? No tengo conocimiento de ningún ADC basado en SPI que se ejecute tan rápido; requeriría una velocidad de SPI de 400MHz para 10 bits :-)
Suponiendo que sea paralelo, necesitaría al menos un microcontrolador de 80MIPS (es decir, no necesariamente de frecuencia de reloj a menos que sea una instrucción por ciclo), o uno con un periférico adecuado (por ejemplo, DMA de puerto paralelo)
Sin embargo, un FPGA sería la herramienta preferida para algo a esta velocidad.
Si nos da más información sobre lo que está tratando de hacer (más el número de pieza de ADC) y confirma la velocidad exacta (por ejemplo, 40,0000 kps como está escrito arriba = 400 Msps, no 40 Msps), se puede dar una mejor respuesta.
EDITAR: convertir la salida paralela de ADC a serie significaría que necesita multiplicar la frecuencia de reloj (es decir, 40Mhz * 10bit = 400Mhz, lo cual no es factible) o ejecutar el ADC a una velocidad de reloj mucho más lenta.
Como se mencionó, un FPGA / CPLD se puede usar para procesar datos en forma muy rápida en paralelo, por lo que están diseñados para este tipo de tareas.
Si puede reducir un poco el requisito de Msps, un PIC32 tiene DMA y un puerto maestro paralelo (PMP) que el IIRC puede leer cada 3 (o posiblemente 2 en algunas circunstancias, tendría que consultar las hojas de datos) (máx. 80 MIPS)
He usado uno (PIC32) para leer un ADC de 8 bits a unos 20-30Msps (ráfagas cortas en el búfer luego enviadas por USB), aunque fue solo un proyecto experimental rápido y un FPGA asumió este trabajo en otras versiones. Recuerdo haber estado jugando con una rutina de ensamblador para llamar desde el código C (por ejemplo, una larga lista de lectura y escritura)
Tenga en cuenta que esto es solo leer / enviar datos en ráfagas cortas. No menciona si desea leer / escribir continuamente, o cómo desea imprimirlo (por ejemplo, en qué formato, qué tan rápido), por lo que es difícil decir qué puede lograr.
Lo que es seguro es que cualquier procesamiento en absoluto ralentizará las cosas significativamente, y como esto probablemente incluirá enviarlo de vuelta (a menos que se pueda usar un periférico) no esperaría mucho más de 10 Msps (continuo, probablemente optimista) no haciendo nada más que leer y luego escribir para dar salida directamente. Si está leyendo en ráfagas cortas, probablemente podrá mejorar esto.
Por supuesto, también podría ver procesadores más rápidos (por ejemplo, algunos ARM), pero la forma más económica y flexible de hacerlo será un dispositivo lógico programable. Tal vez tomaría una pequeña placa de desarrollo (como Flashy combinada con una Pluto de KNJN) y pruébelos.