Necesito alguna sugerencia/orientación sobre qué idioma/configuración utilizar para crear una aplicación con conectividad USB 3.0 que procese 1,6 Gbps de datos en tiempo real.
La aplicación recopila datos de un ADC y los traza en un gráfico en la aplicación. Básicamente, es una placa de adquisición de datos de alta velocidad que estoy diseñando y necesito software para emparejar con la placa.
El sistema operativo de destino es Windows, pero finalmente se necesitará soporte para OS X y Linux.
Tengo experiencia en el uso de chips de modo serie FTDI USB 2.0, pero no estoy seguro de si USB 3.0 será el mismo para velocidades de 1,6 Gbps.
Cualquier comentario/sugerencia es bienvenido.
¡Gracias!
Las partes críticas de velocidad que manejan el procesamiento de números en tiempo real deben escribirse en un lenguaje compilado y eficiente, como C o C++. 1,6 Gbps son 200 MB/s, así que dependiendo de la cantidad de procesamiento que estés haciendo... digamos que no deberías escribir esto en Ruby o Python.
Ahora, si su procesamiento es compatible con canalización (no requiere bifurcación o movimiento hacia arriba y hacia abajo en la pila del programa), o básicamente solo una serie de operaciones que son fijas y no dependen del contenido de los datos, lo mismo sucederá. hacerse con todos los datos, entonces esto es para lo que se crearon cosas como OpenCL o CUDA. Esto le permite realizar estas operaciones en la GPU de la computadora, usándola casi como DSP. OpenCL funciona en todas las tarjetas gráficas, CUDA es específico de Nvidia, por lo que recomendaría OpenCL. También puede retroceder y usar la CPU.
OpenCL es un marco en lugar de un lenguaje, pero especifica C99 como el lenguaje preferido para usar con él.
Además, el comentario de Kevin Reid es un gran consejo: los SDR hacen exactamente esto: procesar una avalancha de datos provenientes de algún lugar (generalmente USB 2.0 o 3.0) y un excelente lugar para comenzar. Una simple podría ser ver cómo lo hace el controlador rtl-sdr. El código está disponible aquí .
kevin red
petirrojo