HDMI DE0-NANO

for more visit: www.fpgalover.com

If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.

Written by: Holguer A Becerra

Para los no estudiantes del curso ECE 31289 UPB:

  • El ejemplo que encuentra en esta practica utiliza los canales True LVDS de la NANO y estos deben ser acoplados a TMDS al ser conectados directamente al cable HDMI, tal como se explica mas adelante.

    • El modulo se diseño teniendo en cuenta algunos manuales de Xilinx, Maxim, Altera, Texas Instruments y los estándares HDMI soporta resoluciones VGA(640x480@60Hz), SVGA(800x600@60Hz), XVGA, WXGA1280x768, WXGA1280x800, HDTV720p(1280x720@60Hz), HD(1360x768@60Hz) y HDTV1080p(1920x1080@25Hz), todas ellas probadas en la DE0-NANO.

  • Usted podría conectar la NANO directamente al cable HDMI bajo su propia responsabilidad, según el manual de LVDS Owner's, el acople de LVDS to CML(similar TMDS) no requiere componentes adicionales ya que la mayoría de receptores CML ya tienen el AC/DC coupling.

    • ¿Funcionaria?

      • RTA: si funciona.

  • Advertencia:

    • Identifique los pines que están siendo usados en el ejemplo, primero antes de hacer cualquier conexión.

    • No haga pruebas en caliente.

    • Asegúrese de usar un cable HDMI blindado.

    • No use cables muy largos para las conexiones entre el cable y el acople(LVDS to TMDS).

DE0-NANO HDMI TEST: Download.

Requerimientos:

En esta practica vamos a construir una interfaz de Vídeo HDMI (High Definition Multimedia Interface), para esto debemos entender como funciona la transmisión TMDS (Transition Minimized Differential Signaling) y de esta forma llegar un modulo en Verilog HDL de transmisión que sea capaz de controlar este tipo de interfaz de Vídeo utilizando la DE0-NANO(Cyclone IV).

TMDS es algo similar a LVDS lo que quiere decir que la salida y entrada de un conector HDMI funciona de forma diferencial pero con diferentes parámetros de voltaje o rangos de operación VIH, VIL, VOH y VOL, el TMDS se parece mas a el tipo CML(Current Mode Logic) como podemos ver en la siguiente figura.

Si se ve en la figura LVDS varia con rangos de voltaje entre 1 y 1.4 V con un swing de +-350mV con máximos de velocidad de transmisión de hasta 3.125 Gbps, mientras que la transmisión de tipo CML soporta velocidades de transmisión hasta de 10Gbps con voltajes de operación que varían entre 2.7V y 3.4 V con un swing de +-800mV, a continuación se presenta la diferencia entre el tipo LVDS y CML en cuanto a su configuración para recepción y transmisión, información que usted puede leer leyendo el manual de "LVDS Owner's de Texas Instruments"

Al igual que CML la transmisión de tipo TMDS tiene en su receptor resistencias de 50 Ohm de pull-up en sus receptores y transmisores, también sus parámetros de entrada y salida de voltaje son similares como se puede observar en la siguiente tabla que muestra los rangos de operación de TMDS y el esquema conceptual.

  • ¿Por qué es importante conocer TMDS y las diferencias con respecto LVDS?

      • Las FPGAs Cyclone IV de Altera no cuentan aun con estándares para manejar señales del tipo TMDS, pero no quiere decir que no se puede diseñar un sistema de transmisión HDMI.

En este caso la FPGA Cyclone IV cuenta con canales diferenciales de tipo LVDS que pueden ser adaptados a TMDS con un acople AC ó DC como puede leer en el siguiente manual "Interfacing LVDS with other differential I/O types".

  • ¿Como es un transmisor HDMI?

Un TX HDMI consiste basicamente en 4 canales TMDS.

    • El canal 0: se encarga de transmitir la componente azul de vídeo y los pulsos de sincronización VSYNC y HSYNC similares a los que se vieron en la practica de VGA.

    • El canal 1: se encarga de transmitir la componente verde de video y algunos comandos de control y audio codificado.

    • El canal 2: se encarga de transmitir la componente roja de video y algunos comandos de control y audio codificado.

    • El canal del Clock: Se encarga de enviar el reloj base con el cual funciona VSYNC y HSYNC.

Nota: Todos los canales están codificados por medio del algoritmo TMDS que convierte señales de vídeo de 8 bits por componente de color en 10 bits codificados, de los cuales el noveno bit es producido por medio de algo que se llama "Transition Minimizing" y el décimo bit es producido para tener un balance DC apropiado y se produce con respecto al numero de ceros y unos que se generan después de agregar el noveno bit.

Después de la etapa de codificación de cada canal se pasa a una etapa de serialización de datos, en los cuales se deben transmitir 10 bits por canal y estos 10 bits pueden representar un pixel de video, encabezado o audio enviado por los canales TMDS como muestra la siguiente figura.

HDMI esta compuesto por tres modos TMDS de funcionamiento:

    • Video Data Period: Cuando se transmite el video visible.

    • Data Island Period: Cuando el video no es visible y se utiliza para transmitir audio y datos auxiliares.

    • Control Period: En este periodo se transmiten los cabezales necesarios para transmitir audio y video.

La señal TMDS clock es la señal de pixel_clock que se genera el en sincronizador de vídeo original, cada bit de un total de 10 bits deben ser serializados en el periodo de esta señal, lo que quiere decir que el stage de serialización debe funcionar con un reloj 10 veces mas rápido que el reloj de pixel_clock.

    • Ejemplo:

      • Si se quisiera enviar una señal de video de 800x600@60Hz SVGA conociendo que el reloj de pixel_clock seria de 40MHz se necesitaria un reloj de 400MHz para serializar los datos adecuadamente.

      • Si se quisiera enviar una señal de video de 1280x720@60 Hz 720p conociendo que el reloj de pixel_clocn seria de 74.25MHz se necesitaria un reloj de 742.5MHz para poder serializar los datos.

        • PD: La Cyclone IV de la DE0-NANO solo puede generar señales hasta de 475 MHz con sus PLLs internos, pero esto no quiere decir que no se puede crear una interfaz de video de HDTV a 720p o 1080i, existen otras tecnicas como el uso de DDIOs para generar double data rate y alcanzar frecuencias para transmitir datos hasta de 840Mbps utilizando los canales LVDS de la Cyclone IV.

En la imagen siguiente diseñada por Xilinx corp(las FPGAs modernas de esta marca son compatible con estandares TMDS y no requieren acople), podemos obvservar un transmisor HDMI mas de cerca, en el recuadro azul podemos ver la etapa de codificación, en el recuadro rojo la etapa de sinicronización de datos, en el recuadro verde el stage de señales en base a la señal de reloj de video original, en el recuadro magenta la etapa de serialización de datos y en el recuadro cyan los canales diferenciales TMDS.

  • Al igual que para construir el sincronizador VGA lo primero que debemos conocer es el conector HDMI, donde:

    • El pin 1 y 3 son las señales del canal 2 en TMDS.

    • El pin 7 y 9 son la señales del canal 0 en TMDS.

    • El pin 4 y 6 son la señales del canal 1 en TMDS.

    • El pin 10 y 12 son la señales del canal de clock en TMDS.

    • El pin 13 es el CEC (Consumer Electronics Control) utilizando para enviar comandos de control entre devices.

    • El pin 15 y 16 estan dedicados al DDC (Display Data Channel), usado para comunicaciones EDID (Extended Display Identification Channel) que utiliza protocolo i2C para intercambio de información entre periféricos.

    • El pin 18 es una salida que suministra baja corriente a un voltaje de 5 V.

    • El pin 19 es una entrada para detectar conexión o des-conexión del cable HDMI.

    • El pin 2, 5, 8 y 11 son las tierras de cada canal TMDS.

  • Diseño propuesto de HDMI para la DE0-NANO en esta practica de pre-laboratorio.

En la siguiente imagen usted podrá observar varios recuadros, entre el recuadro principal que es toda la descripción de hardware que va a contener la Cyclone IV e la DE0-NANO para el TX HDMI, en la parte externa a la FPGA hay un hardware que se requiera para hacer el traductor de LVDS a TMDS necesario para hacer compatible el modo LVDS con el TMDS propio de HDMI.

El diseño que contiene la Cyclone IV:

    • Video Sync: Encargado de generar las señales con respecto a las señales de activación de video con los tiempos respectivos.

    • PLL: encargado de generar la señal de reloj manteniendo la fase, una que controlara el sincronizador de vídeo, y otro que multiplicara x5 la señal de referencia del sincronizador de vídeo PCLK(Pixel Clock Reference), todas las señales de reloj van a relojes globales de la FPGA.

    • TMDS encoder: codificador de las señales de RGB, VSYNC, HSYNC, VDE, AUX y ADE.

    • LVDS DRIVER: I/O en modo True LVDS en la Cyclone IV.

    • DDIO: Double Data rate, encargado de enviar al doble de la frecuencia necesaria los datos de salida (ver mas).

    • Synchronizer: Sincronizador de datos entre el reloj de baja frecuencia a alta frecuencia.

    • Serializer: Serializador de 10:2 datos, serializa un bus de 10 bits de dos en 2 para enviarlos al DDIO encargado de enviar los datos al doble de la velocidad en Mbps.

¿En que consiste esta practica?

    • Usted tendrá como base el Video Sync, los PLLs, el TMDS encoder, los DDIO y un pequeño serializador, usted deberá montar el esquema que aparece en la imagen.

Nota: Según el manual de referencia de LVDS owner's de texas instruments la mayoria de receptores CML/TMDS tiene un acople AC a la entrada, lo que permite que una salida LVDS se pueda conectar directamente al las entradas HDMI sin necesidad de hacer el circuito anterior.

    • Instrucciones:

      • Consiga un cable HDMI y corte un extremo de el mismo(Estos extremos del cable se conectaran el traductor LVDS to TMDS).

      • Descargue la plantilla y revise a donde están asignados los canales LVDS para que conecte estos al traductor LVDS to TMDS.

      • Una vez tenga montado el esquema externo a la FPGA, genere el archivo .sof, conecte el cable HDMI a la pantalla, y programe la FPGA.

        • ¿Que aparece en la pantalla? ¿Que resolución y que frecuencia esta mostrando?

      • En la linea 46 de la plantilla modifique los parámetros, vuelva a generar el .sof y verifique cada una de las resoluciones.

        • Calcule el Data Rate para cada una de las resoluciones.

      • Analice ¿Cuales de las resoluciones de la tabla VESA y CEA-861 puede soportar la DE0-NANO?

      • ¿Por qué la Cyclone IV de la DE0-NANO no es capaz de soportar 1920x1080@60 not-interlaced?

      • ¿Donde podría existir metaestabilidad en el circuito y por qué? ¿como lo solucionaría?, revise la siguiente imagen y modifique el hardware si es necesario.

for more visit: www.fpgalover.com

If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.