Para un convertidor ADC de velocidad media-alta, mi FPGA recibe actualmente muestras de 16 bits a 54 MHz a través de una interfaz LVDS (4 líneas de señal diferencial más 1 señal de reloj diferencial). Se trata de señales de vídeo/cámara.
Ahora, necesito considerar cómo puedo llevar la imagen desde la FPGA al PC. Tengo un microcontrolador y una interfaz USB-OTG. Pero el USB es de 480 Mbit/s, y probablemente baje a 35 MB/s efectivamente (o menos), lo que no es lo suficientemente alto para 16 bits 1,5 MPixels @ 54 frames/sec. Eso supondría 162 MB/seg, demasiado alto para el USB 2.0. ¿Estoy obligado a utilizar el USB 3.0? Realmente quería sacar las imágenes en bruto al PC. También podría realizar una compresión sin pérdidas en la FPGA.
La segunda cuestión es cómo transmitir estos datos fuera de la FPGA. Podría almacenar los datos del ADC en una memoria RAM externa, o podría establecer una interfaz con el microcontrolador, o incluso dirigir directamente las señales de salida en un puerto. En cualquier caso, ¿qué opciones tengo con respecto a grandes flujos de datos?
Se agradece cualquier ayuda.
0 votos
Quieres usar un microcontrolador para 162MB/s... ¿De verdad? ¿Qué microcontrolador pensabas utilizar exactamente?
0 votos
No, no directamente, por supuesto. Sin embargo, el uController necesita estar en un papel de supervisión.
0 votos
¿Se puede añadir alguna otra interfaz específica para el vídeo? ¿HDMI o algo así?
0 votos
Hay tarjetas de captura de vídeo de alta definición, Black Magic creo que hacer algunos 1080p60 / HDMI / HD-SDI, pero es una gran petición de vídeo sin comprimir / sin pérdida como el ancho de banda está en el límite de lo que una gran cantidad de hardware está diseñado para cualquier manera sostenida.
1 votos
...por otro lado, los datos comprimidos pueden hacerse increíblemente pequeños, las imágenes de 1080p30 pueden ser enviadas por ethernet a 1Mbit/s con un códec H.264 decente con una calidad sorprendentemente buena.
0 votos
Un proyecto en el que estoy trabajando utiliza un procesador TI DaVinci que es un núcleo DSP para manejar la codificación de vídeo (LVDS -> H.264 / MPEG4 / MJPEG) y un núcleo ARM que supervisa la ejecución de Linux.
0 votos
Puedes dejar de lado el USB2, no hay forma de que funcione sin una compresión muy fuerte, pero puedes usar fácilmente una placa USB3 como esta arrow.com/es/productos/beusb3.0/arrow-development-tools/#page-1 que puede ser 'hackeado' para conectarse a cualquier placa FPGA, o comprar uno de los disponibles en el mercado. Con eso puedes conseguir hasta 100MB/s no más (militación de la CPU de Cypress)
1 votos
Para ser honesto contigo, yo iría con PCIE en lugar de USB para asegurarme de que no tendrás ninguna sorpresa más adelante. Las placas PCIe son bastante comunes y puedes conseguir una a un precio decente y con un conector estándar (FMC) para conectar a tu ADC, e incluso con un PCIe gen1 de 4 canales, obtienes un rendimiento mucho mejor que el que puede ofrecer USB2/3.