We've been attempting to do some graphics over HDMI using an FPGA. I've built a board that has two HDMI connections. One of these links the required video lines directly to the FPGA. The second HDMI connection is wired to a TMDS chip - The TMDS141 from Texas Instruments - and then to the FPGA.
We managed to get 720p video out of our direct FPGA connection, which seems pretty good. However, it would be nice to use the TMDS buffering chip to get a more reliable connection and higher resolutions. Sadly, the TMDS connection appears not to work.
I've had a fair bit of trouble analysing what is wrong. I don't have any test points, the chip package is awkward, and the speed of HDMI is too fast for any logic analyser I have access to. I'm wondering where I've gone wrong.
Here is the schematic (I'll admit it's not the best - I am a beginner):
And here is a closeup of the TMDS on the board. You can see two FFC sockets. The one on the right does HDMI video via the TMDS chip in the centre. The one at the top connects directly to the FPGA.
The direct connection looks like this:
The FPGA relevant parts look like this:
Some of thoughts on this are:
- The chip is on the wrong way around. I think the dot is in the right place - it being the corner where pin 1 is. But maybe I got it wrong; not sure how to test that.
- The package didn't solder on right. I baked it with some solder paste, then ran over the joins with flux, a bit more solder and my iron. All the connections look good as far as I can tell but it's hard to test. Again, not sure how.
- Timing and resistance / cap values. Maybe I'm a bit off and too cavalier when it comes to getting the accuracy. This is high-speed stuff afterall.
- The differential paths are too different. I did check this in KiCAD and the normal HDMI connector works, so I doubt it's that.
- Something else needs to happen to the TMDS signal coming out of the FPGA. I need to check with my FPGA colleague, but using the same signal for both the direct and TMDS chip HDMI outputs may not be correct.
- The FPGA didn't solder properly when it was baked. I mean, we use different pins on the FPGA for each HDMI output (in theory, we could have two signals coming out of this thing), so it could just be that one connection didn't work.
Sometimes, when I plug a monitor in, we get a signal but the monitor claims it can't decode it, use it, or otherwise display anything. Sometimes I don't get that message but it stays 'on' - a little green light and no sleep mode. At other times it claims there is no signal and it just goes to sleep. Sounds like a loose connection perhaps? But I'd have thought I'd have managed to get at least something on screen. Perhaps it's noise? But then, surely our direct connection would not have worked.
Really, I'm a tad stuck on where to go next and how to get more information to diagnose the problem. I may have to redesign another board with more test points.
I'm a bit out of my league here. Any help at all would be great. I know I'll have to go back to the drawing board at some point but that's fine. Hopefully I've just done something silly and it's an easy fix.