Details of HDMI protocol layers
So I guess readers know broadly how DVI and HDMI work in outline, it serially transmits pixel data that’s reconstructed at a receiver.
But there are a surprising amount of details and room for implementation differernces.
At the bottom-most layer is the electrical interface.
TMDS33
DVI and HDMI specify that the same differential signalling is used on all the high-speed lines. Differential signalling is a very old and good technique for increasing signal to noise and resitance to common-mode noise. In the olden days transmission lines using this method were called “balanced”.
Instead of sending the signal on one wire (referenced say to 0v), you send the signal on two wires, known as + and -. The – signal is the same signal as +, but inverted (so if + is 1, – is 0 and vice versa). When the signals are combined, “common-mode” noise, noise that appears on both signals the same, tends to be cancelled out. And when differential signals are routed for long lengths, the wires are twisted togther so their emissions also tend to cancel.
HDMI needs more bandwidth than can be sent on one differential pair. So they use 3 data pairs and one clock pair, plus some auxiliary signals. (Two of the auxiliary signals are also in a twisted pair physically, but they are not TMDS33 or related to the HDMI data stream.) In total there are 19 conductors in the familar HDMI cable.
In DVI and HDMI the 3 data lanes and the clock lane are differential pairs using TMDS33 levels. TMDS requires 51R pullups to 3.3V at the receiver. However the differential voltages themselves are much smaller, on the order of 100 – 200mV. Smaller levels are quicker to reach and allow faster transmission rates.
The presence of these termination pullups is detected by the transmitter and it may suppress data transmission until they are seen, known as “receiver detection”.
My ‘scope is too weak to record the data faithfully at 742.5MHz clock used in 720p, but below gives you an idea of what the differential signals look like when pulled up to 3.3V and transmitting.
It also shows how inadequate a 200MHz bandwidth scope is for looking at this, there are actually ten bit-times shown between the two vertical lines (roughly one 74.25MHz period). HDMI receivers (and the FPGA used here) have higher bandwidth inputs that can resolve the individual bits properly.
TMDS33 Channels
The DVI or HDMI cable itself carries the clock pair and three data pairs that transmit in parallel.
Although the actual clock rate is very high, to ease carrying the clock on real cables and reduce RF emissions, the clock that is sent on the HDMI clock differential pair is 1/10th of the rate of the data on the data pairs. This makes the HDMI clock period represent one pixel period, in other words considering there are three data channels, there are 30 bits transmitted per HDMI clock period (== per pixel).
A PLL in the receiver reconstructs the x10 clock and us