Dos preguntas.
Tengo un Xilinx Spartan 6 FPGA que solo tiene entradas y salidas HDMI. ¿Hay algún tipo de guía o código preescrito que pueda usar para comenzar a enviar imágenes a la pantalla? No tengo idea de cómo comenzar y no he podido encontrar recursos.
En segundo lugar, la razón por la que hago esto es porque quiero usar y modificar el código Atari 2600, un tipo implementado en un Spartan 3E con VGA. ¿Es posible adaptar fácilmente el aspecto de video de mi proyecto?
Cualquier ayuda, recursos o consejos serán muy apreciados.
Respuestas:
La placa Atlys usa entradas TDMS, por lo que necesitará un decodificador HDMI que tome esas entradas y produzca VSYNC, HSYNC, DE y DATA. Xilinx detalla el proceso de codificación y decodificación DVI en un par de notas de aplicación. Cada uno viene con un código de ejemplo, se requiere iniciar sesión en xilinx:
El código de ejemplo está en verilog, aunque convertir el nivel superior a VHDL si lo prefiere es un ejercicio relativamente trivial.
Aquí hay una figura tomada de la primera nota de aplicación que muestra la premisa básica del receptor:
Dado que el Spartan 6 tiene hardware SERDES incorporado, estos se pueden usar como parte del proceso de deserialización. Hay un proceso de sincronización que recupera el reloj y asegura que todos los canales estén sincronizados. Finalmente, la decodificación 8b / 10b se aplica para producir los datos del canal RGB.
Una vez que se han recuperado las señales de video, puede reenviar estas señales a cualquier procesamiento que desee hacer, o en un codificador que las enviará nuevamente desde los puertos HDMI.
Si tiene la pantalla TFTMOD, reenviar los datos a la pantalla es tan simple como conectar las señales DE y DATA a los pines FPGA apropiados. El manual de referencia de la placa TFT es útil para cronometrar información sobre la pantalla, aunque descubrí que la temporización de salida del deserializador estaba bien.
Puede usar el archivo UCF de este proyecto , para las restricciones para el HDMI, y este proyecto para las restricciones MODTFT si está usando esa placa.
Lo único a tener en cuenta es que el ejemplo de Xilinx no maneja la información EDID. Si solo está usando el tablero para reenviar datos, puede enrutar las líneas EDID y llamarlo por día. Otros escenarios pueden requerir el manejo de los datos EDID en el FPGA. Básicamente es solo I2C. La interfaz opencores I2C es bastante sólida, o puede codificar la suya. Hasta donde yo sé, la tabla de Wikipedia sobre el formato de datos para EDID 1.3 es precisa.
fuente
Solo para complementar lo que una respuesta anterior ha explicado:
Un transmisor DVI / HDMI puede ser un buen punto de partida, ya que puede obtener directamente algunos videos.
La transmisión de video HDMI / DVI a través del enlace TMDS se divide lógicamente en etapas, como se muestra en la Figura 1: Diseño del transmisor TMDS de la implementación de una interfaz de video TMDS en el FPGA Spartan-6
Codificadores TMDS: convierta datos de píxeles de una fuente de video, datos auxiliares de HDMI / audio y HSYNC y VSYNC en tres flujos de símbolos de 10 bits
Los serializadores (10: 5 Gear Box y OSERDES2 5: 1 Convert) realizan en dos etapas una conversión paralela a serial de 10 bits en los tres flujos y luego los envían a tres canales de pares de salida diferencial (memorias intermedias TMDS).
Ambas etapas requieren un circuito de reloj para generar (PLL) y distribuir (BUFPLL, BUFG) las señales de reloj (con frecuencias del reloj de referencia de píxeles y sus múltiplos) correctamente.
Por supuesto, el núcleo del transmisor son los bloques codificadores. Puede comenzar con el codificador DVI debido a su simplicidad en comparación con el HDMI. Tanto HDMI como DVI tienen muchos aspectos en común, incluido el enlace físico TMDS, el algoritmo de codificación de video activo y las definiciones de tokens de control.
La nota de aplicación también proporciona 2 diseños. Un simple pero bueno para comenzar es la "Generación de barra de color SMPTE HD con temporización de video programable". Envía un video generador de barra de color a través de muchos modos de pantalla que pueden ser seleccionados por los interruptores deslizantes. Este diseño es útil porque podemos cambiar el generador de barras de color con otra fuente de video y aún así poder obtener algo de video manteniendo el bloque transmisor original.
¡Espero que esto ayude!
fuente
Aquí está el texto de un diseño de referencia que puede descargar desde la página del tablero al que se vinculó:
También puede ver los diseños de referencia que vienen con el kit de procesamiento de video industrial Xilinx spartan 6. http://www.em.avnet.com/en-us/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (haga clic en el enlace de los archivos de soporte, es necesario iniciar sesión en avnet )
Probablemente también haya más diseños de referencia para diferentes fpgas.
Además, a menos que esté implementando el audio o el cifrado, hdmi es básicamente lo mismo que dvi.
fuente
El siguiente tutorial, que hace uso de un miniSpartan6, es muy detallado y vale la pena echarle un vistazo: http://zerocharactersleft.blogspot.com/2015/04/diy-fpga-based-hdmi-ambient-lighting.html
fuente