DisplayPort with an FPGA

One of the challenges with display technology is the huge increase in bandwidth that has occurred since LCD panels took over from Cathode Ray Tubes. Low end laptops have a million pixels, UHD (“4K”) displays
have 8 million and the latest Full Ultra HD (“8k”) displays have over 33 million pixels. Updating all those pixels takes a lot of bandwidth – to update a 4k display at 60 Hz refresh rates takes close to a gigabyte per second. 8 billion bits – that is a lot of bits! That’s why VGA ports and even DVI ports are starting to vanish in favor of standards like HDMI and DisplayPort.

The current release of HDMI is 2.0, and is tightly licensed with NDAs and licensing fees. VESA, who created the DisplayPort standard, states the standard is royalty-free to implement, but since January 2010, all new DisplayPort related standards issued by VESA are no longer available to non-members.

So after receiving a new Digilent Nexys Video FPGA development board, Hackaday regular [Hamster] purchased a UHD monitor, scoured the internet for an old DisplayPort 1.1 standard, and started hacking.

A couple of months and 10,000 lines of VHDL code later what may be the first working Open Source DisplayPort
implementation is available. The design includes a 16-bit scrambler, an 8b/10b encoder, and multichannel support.

We had noticed that [Eli Billauer] had done something similar, but as far as we know his source is unreleased (although he has some interesting notes about what he found). Although [Hamster] is the first to admit that it is not yet production ready, this forms a base for the others who will no doubt follow. Nothing makes life easier than a reference implementation to compare against!

The video below is a talk about DisplayPort 1.3 from [CraigWiley] who is on the VESA standards committee and includes a good overview of the technical details at a high level. If you are looking for other Displayport hacks, you can drive an external display from an iPad or even drive a Retina display from any Displayport output.

[DisplayPort Plug Image by Belkin CC-BY-SA]

30 thoughts on “DisplayPort with an FPGA

      1. The irritating thing is all the cheap chinese gear will happily use the standard having either pirated or reverse-engineered it without paying anyone a dime but the rest of us must suffer.

  1. i don’t like displayport. Was having my external monitor connected through display port and started getting BSOD. Looking at debug data was seeing random causes. I linked it to display port after 3 months of stress when i took a trip and did not use external monitor and everything was fine.
    It turns out bad display port cable can cause a ton of issues.

    1. Yes – quite possible. Any security researchers, the AUX channel on DisplayPort AUX channel looks perfect for fuzzing attacks.

      The read requests contain an address and length byte, but the replies are not really well defined. I bet a few drivers trust that when they ask for 6 bytes, that they will get six bytes then the stop sequence, and might misbehave if they get 6000 bytes then the stop sequence.

      1. Now that you mention it, it seems so, even though i was not aware. I had a lot of share of bad HDMI cables, but the problems were never BSOD, most often was a bad connection.
        Maybe it takes some special recipe to get to BSOD, more than a mere bad cable.

        I kind of get the culture of using VGA on projectors in most places, even though it is the least popular type found directly on laptops and the beamers have all other types of inputs.

          1. Apart from open source projects and a few tightly integrated software / hardware platforms, usually the responsibilities for the OS and for the graphics card driver fall into different companies.

            Therefore the graphics driver needs a fix, not Displayport.

      2. Slightly damaged sata cables can cause problems too. I’ve sent two ssd disks back on varranty because I thought they are broken (they worked, but soon after start speed dropped to about floppy disks).

    1. In long, HDMI is just like DVI, but with a very long list (not limited to)…

      * The ability to carry stream metadata (eg. colour space info)
      * Support for deep colour modes, (8,10,12,16 bits per component).
      * Support for YCC colour spaces with 444 and 422 pixel sampling.
      * Support for studio level RGB ranges
      * BCH ECC on data packets,
      * CEC control to allow a back-channel for control
      * Some sort of Ethernet thingy in later revisions
      * HDCP DRM
      * Multichannel audio support

      … but with electrical compatibility to allow it to also talk with those really feature-poor DVI-D devices.

    2. Case in point, look at an Intel HD 4000 from the ivybridge generation. Claims to be HDMI 1.4 compatible and in fairness supports most of the features… except the clock rate, it tops out at 225MHz instead of 340 so is only really 1.1 compatible. End result? Anything over 1080p/60Hz which should work actually doesn’t. This is why I look for displayport on laptops these days, even older standards of it have tonnes of bandwidth.

    1. Really hope you’re being sarcastic. They sell shields for the raspberry pi and beaglebone black with fpgas on them. There was also just an article on here using some lattice semiconductor fpgas which are dirt cheap. Sure some expertise is needed to use them, but if you need the performance an FPGA truly has to offer when compared with your atmega328 based arduino you should already know what you’re doing or at least be willing to read enough documentation to get there.

    2. — Rant mode on —

      “…and do the other things, not because they are easy, but because they are hard; because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one we intend to win ..”

      FPGAs are about the only hope for anybody in the DIY community wishing to stay anywhere close to the sharp end of technology. Soon banging bits with an 8-bit micro (or even 32 bit micro) will not allow you to interface to anything new or novel.

      – USB 3.0 are already out of reach

      – HD cameras modules are out of reach

      – Analogue VGA is on it’s death bead.

      – Nice LCD Display modules are out of reach (thanks MIPI!)

      – Software defined radio is out of reach

      – Audio is now all high-speed I2S bitstreams with a codec on the end.

      – High speed / high bandwidth ADCs are out of reach

      – Doing anything with SATA storage is out of reach – it wasn’t so with IDE

      – UHS SD/uSD cards are out of reach – still bit-banging over SPI mode???

      – Gigabit Ethernet is out of reach, unless you have H/W support.

      – Plugging your own design into a PCIe slot to get it close to the CPU is for most a pipe dream.

      The bigger problem is that at the sharp end is is all just so gosh darn complex – Given a napkin of info somebody could implement RS232 or an Enhanced Parallel Port interface. Analogue VGA can be described on a couple of pages. The SD card spec is 200 pages, the HDMI spec is about 300 pages, and they both leave a lot unsaid.

      Advanced hobby hacking will soon (and already is) be assembling a team of specialists who individually can deliver a piece of the project. S/W, H/W, I/O, O/S, Driver, PCB layout….

      However, the population of advanced hackers most probably is a similar size to the number of people who built their own 8-bit micros in the 80s – for most it “was too hard, too expensive and not compatible”, and they got a ZX81 or TRS (and now an Arduino or Raspberry Pi).

      — rant mode off —

      1. Back in my poor student days I wire-wrapped an Altair 8800 clone. Does that count as building my own 8-bit micro?

        I’d really like to get into FPGAs, but every time I’m about to order a dev board I think of some other (presumably much easier) project that really needs to be done first. I guess we’re seeing the birth of a new tinkerer disease: FPGA procrastination.

      2. How often do you need to interface to anything truly “new or novel”, though? Most hobbyist stuff involves talking to commonplace hardware over standard interfaces that are already supported in hardware by your microcontroller; it’s what you do with that hardware that’s interesting.

    3. If it separate the real serious hackers from the wanna be “makers”, I am all for it.
      We were hacking before the internet and will be learning all the new tools that comes our way with all the tools that we can get our hands on.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.