Showing results for 
Search instead for 
Did you mean: 

Trying to understand hdmi/dvi protocol for noobs


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:

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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

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:

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

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"


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:


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