7
\$\begingroup\$

I'm making a little project purely as a hobby using a small FPGA breakout board. I'm outputting VGA video which works fine, but would like HDMI output instead so I can connect to a television that has that input but no VGA.

I don't believe it's practical to generate HDMI directly from my FPGA board (correct me if I'm wrong...) so I was wondering if there was any encoder chip or board that doesn't cost too much that I could use in the project that takes VGA input (and possibly audio) and outputs a HDMI signal. I've not been able to find anything myself.

Any ideas? Or is this impractical and I should settle for analog video instead.

EDIT: Basically I'm asking if there is any way to generate HDMI that's possible for a small personal FPGA project, the VGA part isn't necessary if there is another way.

\$\endgroup\$
1
  • \$\begingroup\$ this post was a nice reminder to me -- I bought a $100 box to convert VGA to HDMI and it didn't work at all. I tested it way too late and as a result, couldn't get my money back. :( I hope you find something that does work! \$\endgroup\$
    – Dave
    Commented Jun 20, 2011 at 13:27

5 Answers 5

6
\$\begingroup\$

HDMI is just "DVI with knobs on" on the video side.

As to "can it be done"... my first question is "what FPGA"? Some of them can create HDMI/DVI signals with the IO blocks, others just fundamentally can't.

DVI uses TMDS signalling, which is an encoding on top of a Current Mode Logic (CML) differential pair. CML is actively pulled down by a current source for a '0' and floats high with a termination resistor at the far end for a '1'. It might be emulatable for a hobby project by using a bidirectional LVDS pair driven low and using the tristate line to drive and release (a bit like doing an open-drain drive).

Then you have to encode and serialise the data. TMDS describes how to encode the data bits, and then you you "just" have to serialise the data bits across the data pairs. The specification can be found here - see section 3:

Digital Visual Interface Spec

The TFP410 chip data sheet also has a reasonable description of what goes on:

TFP410 - TI PanelBus™ DIGITAL TRANSMITTER

\$\endgroup\$
4
  • \$\begingroup\$ Thank you. Although this seems too complicated for me at the moment for this project and not the main aim of the project. I'm using a cheap EP2C5T144 Altera Cyclone II board from ebay to make a small game as a "fun" project. I was going to output VGA but then it occured to me that it would be better to output something more modern. Perhaps it would make a good "next" project :) \$\endgroup\$ Commented Jun 20, 2011 at 9:33
  • \$\begingroup\$ Most systems would employ a dedicated HDMI encoder chip with its own framebuffer. The CH7036 (chrontel.com/products/7036.htm) is one example. Never used one before, so don't know what is entailed. \$\endgroup\$
    – Majenko
    Commented Jun 20, 2011 at 10:30
  • \$\begingroup\$ Looks complicated :) \$\endgroup\$ Commented Jun 20, 2011 at 10:44
  • \$\begingroup\$ I'll accept this answer as it explains what is needed. Seems not to be something I can do at this point :) \$\endgroup\$ Commented Jun 20, 2011 at 15:48
3
\$\begingroup\$

I just found this VGA to DVI converter (Hackaday article). It converts VGA-compliant R/G/B and sync pulses into DVI, which basically uses the same signaling as HDMI. You'll need the ability to generate a reliable pixel clock, as well as to be able to send bits at 10x the pixel clock. Using an FPGA's DCM (digital clock manager) you should be able to accomplish this. I haven't had a chance to test this code myself (am in the process of adopting one of my VGA-based projects to try it) but it has worked fine for others.

Edit: I was able to successfully integrate this into several of my VGA demo projects with little to no difficulty. So I can personally attest to the fact that this works.

\$\endgroup\$
2
\$\begingroup\$

VGA to HDMI is tricky at best. Simply because VGA is analog and HDMI is digital. You'd need to capture each frame of the VGA signal, digitize it, store it in a frame buffer, and output the HDMI stream.

While possible, it's not going to be 'simple'.

You can buy some external boxes that supposedly do VGA to HDMI, but I don't know how good they are. There's some on ebay.

\$\endgroup\$
4
  • \$\begingroup\$ Well I can output the video in a digital form too, with 2 or 3 bits for each color signal, if that is easier \$\endgroup\$ Commented Jun 20, 2011 at 7:54
  • \$\begingroup\$ Basically I just want to see if hdmi output is possible from my fpga project in any way, maybe using some external encoder or something? \$\endgroup\$ Commented Jun 20, 2011 at 8:06
  • \$\begingroup\$ If you can generate a bit stream fast enough, then I don't see why you shouldn't be able to. By fast enough I mean gigabits per second. A 1080p video stream is 4.455Gbps (obviously less for a lower resolution). The HDMI licensing people have a spec document available for download FOC somewhere I believe. \$\endgroup\$
    – Majenko
    Commented Jun 20, 2011 at 8:17
  • \$\begingroup\$ That data rate seems a bit too high for me to deal with properly for a "hobby" project... \$\endgroup\$ Commented Jun 20, 2011 at 8:43
2
\$\begingroup\$

Check out this development board from lattice. They have a reference design that includes dvi in and dvi outputs as well as cameralink inputs and outputs.

http://www.latticesemi.com/products/developmenthardware/developmentkits/machx02controlkit.cfm

$189

It demonstrates using an lvds cameralink deserializer to drive a dvi output chip. Depending on your Fpga board you may be able to output the cameralink serialized video from your board then use this dev board to convert that to a dvi output. Or just use this board for the whole thing.

If your budget is larger they have a nice Hd camera to hdmi output dev kit for $400.

http://www.latticesemi.com/products/developmenthardware/developmentkits/hdr60videocameradevkit/index.cfm

\$\endgroup\$
0
2
\$\begingroup\$

I don't understand all the discussion about specs, chips, development boards and building a converter from scratch. Just go to Amazon and buy one -- there are several, for example:

Sewell Hammerhead VGA to HDMI Active Converter 1080p Compact Size

OREI XD-600 VGA PC/Laptop to HDMI Video Converter -Upscaler Up to 720P/1080P Converter with Audio Jack

HDE VGA w/ Audio to HDMI 1080p Converter Box w/ DC Adapter

I gather since this is a hobby project it is a one-off, and not something to be sold. So it would be much simpler just to buy a ready-made box than build one from scratch, and have to get it working properly.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ An issue with this approach is that these boxes are all also upscalers. If you wanted to, for example, convert a 320x240 image (from a game console or older PC), these upscalers often do not upscale correctly - they misinterpret 320x240p60 as 640x480i60. This results in loss of image information because it's attempting to deinterlace frames that aren't interlaced. These devices also have a non-integer scale factor, which distorts the image. \$\endgroup\$ Commented Feb 12, 2018 at 22:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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