Skip to main content
angeliran
Associate III
May 12, 2022
Question

Trying to understand hdmi/dvi protocol for noobs

  • May 12, 2022
  • 5 replies
  • 2872 views

The idea of ​​opening this question is to achieve what I put in the title: understand the encoding of the hdmi/dvi signal, in a staggered manner. I don't want to define any microcontroller capable of it yet, but my intention is, if possible (I know it is), to do it without external dedicated circuits, my final goal is to make an OSD in some HDMI device, that is, about putting text on a device that generates video, but I have to start with basics.

I come from generating signals by vga, and in the way that I have proposed, is that I managed to do it, where my guide page was:

https://www.artekit.eu/vga-output-using-a-36-pin-stm32/

I have to mention that I got the ideas from his description, but I didn't use his code as such, since I program basically in C.

So, following my experience, we would start by trying to understand the generation of horizontal and vertical synchronies, did someone say me?

Initially, the generation I have seen is achieved with 8 rails:

clk+, clk-

dt0+, dt0-

dt1+, dt1-

dt2+, dt2-

What I have found is that the synchronies are encoded in BLUE, without understanding it yet.

Greetings, and I thank you in advance, if we could complement with images.

The initial objective is to generate synchronicities, the second, to generate a green line (the thickness does not matter).

    This topic has been closed for replies.

    5 replies

    Tesla DeLorean
    Guru
    May 13, 2022

    ..

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    angeliran
    angeliranAuthor
    Associate III
    May 13, 2022

    Hi again @Community member​ ! Thx for the file, but i can´t see how the syncs are made... =(...

    Here you can see an example made with an fpga:

    https://www.fpga4fun.com/HDMI.html

    Tesla DeLorean
    Guru
    May 13, 2022

    Looks to use 2 bit pattern stuffed in the blue channel, ie as part of the 8-to-10 bit conversion 2-bits get XOR'd into the pattern indicating the horizontal/vertical sync signals.

    https://pdfserv.maximintegrated.com/en/an/AN4306.pdf

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    angeliran
    angeliranAuthor
    Associate III
    May 13, 2022

    Yes! Your document gives us a better idea:

    "The timing sequence of the analog video signals is exactly followed in the digital video signal format. In HDMI format, pixels are sent from left to right with horizontal synchronization codes between every line; lines are sent from top to bottom with vertical synchronization codes between every screen. During the times corresponding to the blanking of the analog video signal between every line and between every screen, horizontal and vertical synchronization pulses are encoded in channel 0. Four 10-bit code words, 1101010100, 0010101011, 0101010100, and 1010101011, represent (H = 0, V = 0), (H = 1, V = 0), (H = 0, V = 1), and (H = 1, V = 1), respectively. Using these codes, the horizontal and vertical synchronization pulses can be represented in the time domain with the accuracy of the pixel clock"

    0693W00000Npwu6QAB.bmp

    angeliran
    angeliranAuthor
    Associate III
    May 25, 2022

    Here we have a better idea:

    0693W00000NqfSMQAZ.jpgThis was created via dvi 640x480@60hz with a pico that i have programed today, we can see, the signals are paired, in complementary mode.

    And here:

    0693W00000NqfSbQAJ.jpgWe can see, that ck´s signals, are consistent

    and the screen recognizes the signal:

    0693W00000NqfTtQAJ.jpg 

    P.D.: My LA only works at 120 Mhz, we can´t see the sync´s signals...