Interfaz 10 sensores de imagen a la CPU de Linux

0

Necesito procesar datos de imagen de 10 sensores de imagen simultáneamente (es decir, de OnSemi MT9V022 s o similar). Los 10 sensores serán disparados externamente por una señal común. La solución ideal sería realizar el procesamiento en algunas CPU de alto nivel como ARMv7 / 8 o x86, pero no sé cómo conectar todas las cámaras a la CPU. Me gustaría evitar usar USB para la conexión ya que no necesito la pila USB para nada (tal vez excepto la velocidad de transferencia).

Los sensores de imagen tienen salida en serie o en paralelo. Dado que es posible que no haya 10 tipos de entrada de datos similares en una CPU determinada, ¿es la única forma de multiplexar los datos de la imagen en menos (o solo) flujos? Si es así, ¿cómo podría hacerse tal multiplexación? ¿Hay algunos circuitos integrados que podrían usarse para eso o tengo que diseñar un FPGA personalizado? Tal como lo veo, ¿puedo necesitar desarrollar un dispositivo "multiplexor" personalizado que pueda ingresar los 10 sensores y unirlos a una salida común?

Dado que me gustaría al menos 10 x 320x240 en escala de grises de 8 bits a 10-30 FPS, ¿cuáles son las opciones de IO para la salida común (SPI, USB, etc.)? ¿Puedo usar una interfaz CSI para la salida común y escribir un controlador que haría la des-multiplexación? ¿O puedo simplemente multiplexar los sensores para transferirlos y luego des-multiplexarlos en la CPU y usar un controlador de sensor de imagen de Linux? Una CPU objetivo sería idealmente un ARM multinúcleo fuerte con soporte OpenCL, tal vez algo como nVidia Tegra K1 o X1.

    
pregunta Kozuch

1 respuesta

2

Esto parece ser una aplicación perfecta para un FPGA "SoC" como Xilinx Zynq o Altera Cyclone V SoC. Estas piezas combinan un núcleo de CPU ARM de doble núcleo con tejido FPGA en el mismo paquete, con interconexión de alta velocidad en el medio. Puede crear una instancia de la lógica de pegamento requerida en la mitad FPGA (interfaces SPI, LVDS, etc.) y luego usar una de las varias interconexiones AXI para canalizar esos datos al dominio de la CPU, para transmitirlos a través de la red o similar. Por supuesto, como tiene un FPGA, puede ver cuán "bonitas" han sido las herramientas de Xilinx / Altera en términos de implementación de un canal OpenCL. Además, dependiendo del rendimiento de los datos, puede implementar la memoria framebuffer y conectarse al FPGA si el DDR incorporado no es suficiente.

Diseñar una placa con este nivel de parte no es lo más fácil, pero afortunadamente, hay muchos proveedores que crean SoMs (sistema en módulo) que implementan el hardware "central" como el chip, DDR, etc. Usted puede "simplemente" construir una tarjeta / tarjeta de transportista para un SoM dado que actúa como su placa de interfaz de cámara / sensor. Esto le permitirá preocuparse menos por la carga del diseño de alta velocidad / diseño de alta complejidad y centrarse en su parte del diseño.

    
respondido por el Krunal Desai

Lea otras preguntas en las etiquetas