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 escrito previamente que pueda usar para comenzar a enviar imágenes a la pantalla? No tengo idea de cómo empezar 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 que implementó un Spartan 3E con VGA. ¿Es posible adaptar fácilmente el aspecto de video de mi proyecto?

Cualquier ayuda, recursos o consejos serían muy apreciados!

    
pregunta ballaw

4 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. Estos vienen con código de ejemplo, se requiere inicio de 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:

DadoqueelSpartan6tienehardwareSERDESincorporado,estossepuedenutilizarcomopartedelprocesodedeserialización.Hayunprocesodesincronizaciónquerecuperaelrelojyaseguraquetodosloscanalesesténsincronizados.Finalmente,ladecodificación8b/10bseaplicaparaproducirlosdatosdelcanalRGB.

Unavezquesehayanrecuperadolasseñalesdevideo,puedereenviarestasseñalesacualquierprocesamientoquedeseehacer,oauncodificadorquelasenviaránuevamentefueradelospuertosHDMI.

SitienelapantallaTFTMOD,enviarlosdatosalapantallaestansimplecomoconectarlasseñalesDEyDATOSalospinesFPGAapropiados. El manual de referencia de la placa TFT es útil para sincronizar la información sobre la pantalla, aunque encontré que el tiempo de salida del deserializador estaba bien.

Puede usar el archivo UCF desde este proyecto , para las restricciones para el HDMI y este proyecto para las restricciones de MODTFT si está utilizando ese tablero.

Lo único que se debe tener en cuenta es que el ejemplo de Xilinx no maneja la información EDID. Si solo está utilizando la pizarra para reenviar datos, puede enrutar las líneas de EDID y llamarlas al día. Otros escenarios pueden requerir el manejo de los datos EDID en el FPGA. Básicamente es solo I2C. El opencores I2C interface es bastante sólido, o puede codificar tu propio. Que yo sepa, la tabla de wikipedia sobre el formato de datos para EDID 1.3 es correcta.

    
respondido por el stanri
4

Solo para complementar lo que ha explicado una respuesta anterior:

Un transmisor DVI / HDMI puede ser un buen punto de partida, ya que puede ver un poco de video.

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 de transmisor TMDS de Implementando una interfaz de video TMDS en Spartan-6 FPGA

  1. CodificadoresTMDS:conviertedatosdepíxelesdeunafuentedevideo,datosdeaudio/auxiliarHDMI,yHSYNCyVSYNCentresflujosdesímbolosde10bits

  2. Losserializadores(10:5GearBoxyOSERDES25:1Convert)realizanendosetapasunaconversiónde10bitsenparaleloaserieenlastressecuenciasyluegolasenvíanatrescanalesdeparesdesalidadiferenciales(buffersTMDS).

Ambasetapasrequierenuncircuitoderelojparagenerar(PLL)ydistribuir(BUFPLL,BUFG)lasseñalesdereloj(confrecuenciasdelrelojdereferenciadepíxelesysusmúltiplos)correctamente.

Porsupuesto,elnúcleodeltransmisoreselbloquedecodificadores.PuedecomenzarconelcodificadorDVIdebidoasusimplicidadencomparaciónconelHDMI.TantoHDMIcomoDVItienenmuchosaspectosencomún,incluidoselenlacefísicoTMDS,elalgoritmodecodificacióndevideoactivoylasdefinicionesdetokensdecontrol.

Lanotadeaplicacióntambiénproporciona2diseños.Unsimpleperobuenoparacomenzaresla"Generación de barras de color SMPTE HD con temporización de video programable". Envía un video generador de barras de color a través de muchos modos de pantalla que pueden seleccionarse mediante 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 un video manteniendo el bloque transmisor original.

Espero que esto ayude!

    
respondido por el L30nardo SV.
3

Aquí está el texto de un diseño de referencia que puede descargar de la página de la pizarra a la que se ha vinculado:

  

DSD-0000326 12/13/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 marcos de entrada en la memoria y luego envía el búfer a otro puerto HDMI. Esto se implementa utilizando 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. enlace (haga clic en el enlace de archivos de soporte, se requiere inicio de sesión en avnet).

Probablemente también haya más diseños de referencia para diferentes fpgas.

También, a menos que esté implementando el audio o el cifrado, hdmi es básicamente el mismo que dvi.

    
respondido por el davidd
1

El siguiente tutorial, que utiliza un miniSpartan6, es muy detallado y vale la pena verlo: enlace

    
respondido por el Jason Denney

Lea otras preguntas en las etiquetas