Cómo utilizar el puerto HDMI en FPGA (básico)

8

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.

Ballaw
fuente
¿Es esta una junta de desarrollo comercial? si es así, qué modelo y verifique los diseños de referencia que vienen con él.
davidd
Este es el tablero: digilentinc.com/Products/… No vino con nada.
ballaw
@ballaw - Los productos Digilent vienen con bastante buen soporte. Desplácese hasta la parte inferior de la página que acaba de vincular y verá una gran cantidad de documentación y proyectos de muestra en línea: i.stack.imgur.com/F0TgY.png . En línea ahora cuenta como "viene con eso". También es posible que desee buscar las hojas de datos de otras partes de la placa, como el búfer XC6SLX45 FPGA y TMDS141RHAR HDMI, que se encuentran en otras partes de Internet.
Kevin Vermeer

Respuestas:

12

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:

de la nota de la aplicación Xilinx

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.

Stanri
fuente
4

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

ingrese la descripción de la imagen aquí

  1. 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

  2. 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!

L30nardo SV.
fuente
2
Se desaconsejan las respuestas de solo enlace porque si Xilinx reorganiza su sitio en el futuro y el enlace se desactiva, no será de ninguna ayuda para futuros visitantes. ¿Quizás podría agregar algunos detalles adicionales del enfoque general que describe la nota de aplicación?
PeterJ
Gracias, tienes toda la razón. He agregado algunos detalles más al respecto.
L30nardo SV.
3

Aquí está el texto de un diseño de referencia que puede descargar desde la página del tablero al que se vinculó:

DSD-0000326 13/12/11 Este archivo zip contiene un proyecto de demostración EDK que demuestra el uso de HDMI en la placa Genesys. Acepta una entrada HDMI, almacena los cuadros de entrada en la memoria y luego envía el búfer a otro puerto HDMI. Esto se implementa utilizando el bus PLB. Descargar

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.

davidd
fuente
Gracias. Vi eso, pero no estoy muy seguro de cómo usarlo, ya que usa EDK, que no tengo porque no es gratis. ¿Sería una simple cuestión de usar los archivos vhd que contiene? Lo dudo porque hay muchas otras cosas en la descarga, la mayoría de las cuales no tengo idea de qué son.
ballaw