Quiero usar la FPGA para hacer procesamiento de video y necesito una entrada y una salida de video. El problema es que la mayoría de las placas FPGA tienen un puerto (HDMI o VGA) y el precio aumenta significativamente con las placas que tienen dos HDMI \VGA.
Así que mi pregunta es: ¿Es razonable utilizar Ethernet o USB para introducir el vídeo desde el PC a la FPGA teniendo en cuenta la complejidad extra de desarrollo?
Edición: El vídeo es de 1080p y 30fps. El procesamiento es bastante ligero. Usando Ethenet, puedo pasar de un $400 board to a $ 150 y quiero desarrollar la interfaz yo mismo para ahorrar costes
Respuestas
¿Demasiados anuncios?El vídeo es de 1080p y 30fps.
Así que, asumiendo 8 bits por canal de color, 3 canales de color, eso es
$$1920\cdot 1080\frac{\text{px}}{\text{frame}}\cdot 3\frac{\text{channel}}{\text{px}}\cdot 8\frac{\text{b}}{\text{channel}}\cdot30\frac{\text{frame}}{\text s}\approx 1.5 \,\frac{\text{Gb}}{\text s}\text.$$
Eso es más de lo que puede transportar Gigabit Ethernet.
Así que no, eso no es posible con lo que se llamaría "Ethernet", a menos que se comprima el vídeo, pero entonces hay que hacer la descompresión del vídeo HD (y probablemente la compresión) en la FPGA, y eso no es lo que se llamaría "procesamiento ligero".
1,5 Gb/s también es más rápido de lo que puede funcionar el USB2.
Por lo tanto, o bien se trata de USB3 o de 10 Gigabit Ethernet. Ambos buses muy complejos, y no puedo recomendar la integración de cualquiera de ellos en el primer diseño de FPGA que hagas - y en base a la falta de concepto en cómo estás tratando de especificar tu proyecto, supongo que este es tu primer proyecto serio.
HDMI/DVI/DP no es un bus tan complejo, si te limitas a un solo formato de trama. Hay proyectos de código abierto que lo implementan, así que tener una FPGA con una interfaz así construida por ti mismo suena más prometedor que ir a por un bus universal.
Por supuesto, es posible. Tienes que implementar la interfaz USB/ETHERNET en tu FPGA (o comprar la IP, aunque es más barato comprar una placa) y también desarrollar alguna IP personalizada (o un programa si usas ZYNQ o Mircroblase) para convertir los datos de entrada en el flujo de píxeles. A partir de ahí, puedes utilizar un enfoque estándar para desarrollar IPs de procesamiento de imágenes.