4
\$\begingroup\$

I'm driving a TFP410 parallel to DVI (HDMI) converter using a DM368. Unfortunately I can't generate the exact clock frequencies required for HDMI CEA modes (74.25 MHz, 148.5 Mhz, etc.), I'm stuck with dividing a PLL. The PLL is 680 MHz, so the frequencies within the 720p-1080p video range I can use are basically 68, 75.5, 85, 97, 113 and 136 MHz.

I've written a kernel EDID parser that I'm using to get timing requirements from the monitors and feed them to the video encoder onboard the DM368. I know the video timings I'm sending to the TFP410 serialiser (HS/VS active lines, front/back porch, sync pulse width) are correct since that I'm testing them at the DVI/HDMI output using a development board where I can compare them with working signal sources. I'm also parsing maximum clock, min-max refresh ratios and keeping them into account when deciding the output clock.

Despite all this, I can't get the image to display on the oldest monitors (newer monitors are fine). I've spent quite some time on this, so I can tell you that for example, in one of the oldest monitors I can display an image by increasing the active size (720p to ~730p), or decreasing the clock (from 75.5 to 68 MHz). However, this approach doesn't really scale.

Are my problems due to my imperfect frequencies or is there something else I should look into? Unfortunately I can't add an external 74.25 MHz clock source at this stage.

HDMI is complicated and I'm afraid I don't understand it properly. I just wish monitors respected what they advertise in their EDID, but I'm starting to believe no one uses those specs anyway (max clock, min/max fps, etc.).

\$\endgroup\$
  • \$\begingroup\$ Why are you forced to use a divider? Using DDS techniques, you can generate arbitrarily accurate clocks for your interface. Ah, perhaps you mean TMS320DM368. Why should we have to guess? I was thinking that maybe you were using an FPGA. \$\endgroup\$ – Dave Tweed Jul 6 '17 at 20:46
  • \$\begingroup\$ I believe "I'm using a DM368" is as clear as it gets. I'm starting to believe maybe overclocking it might be the answer, but my question is really about frequencies and HDMI, not device specific. \$\endgroup\$ – throwaway-912376a1 Jul 6 '17 at 22:01
  • \$\begingroup\$ are you positively sure you can't do more advanced stuff then dividing the PLL, like, for example, have some fractional-N synth in between? \$\endgroup\$ – Marcus Müller Jul 7 '17 at 11:39
  • \$\begingroup\$ Unfortunately there is a shared clock source (where you can set multiplier and divider) sent to this divider. I would need to change the frequencies of several other modules of the processor by changing it. Like USB... Probably not a good idea. There is a second path for the same clock, from a PLL controlling "only" the ARM/DDR, so probably overclocking that is a more reasonable solution. Turns out this is what many are doing with this processor, at the cost of ~5-10% failure rate from what some are suggesting. \$\endgroup\$ – throwaway-912376a1 Jul 7 '17 at 15:32
3
\$\begingroup\$

The thing is, once you go outside the spec, anything can happen (and usually does on a major customer demo!). You might get it to work, sort of, sometimes, but as soon as you break spec, you are responsible for whatever does not work reliably.

I am not at all surprised that some monitors work and some do not, IME it is usually the computer monitors that are fussy while tellies will often take any old rubbish.

There are about half a dozen or so sets of frame timings that pretty much everything accepts, basically the broadcast derived ones, but they tend to need that clock that you don't have, and yea, EDID is often best ignored (or at least taken with caution), buggy does not begin to describe some of them.

One gotcha is to check the sound, as the dividers to derive the 48K audio rate from the pixel clock will be off, and that may cause issues.

Time for a board respin?

\$\endgroup\$
  • \$\begingroup\$ The problem with adding a 74.25 MHz input is that it would be multiplexed with the video output and would loose color depth, going from RGB888 to RGB565. However, I had some success today (every monitor works) by making sure my vertical refresh rate is almost exactly 60 Hz (60.02), I can do it by playing with the timings (front/back porch, etc). I've run out of monitors to tell me I'm wrong, so I think it's good enough :) \$\endgroup\$ – throwaway-912376a1 Jul 7 '17 at 15:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.