Ambient lighting is a technique that creates light effects around the television that correspond to the video content. It has been pioneered by Philips under the brand Ambilight. In this project we will create a basic FPGA-based ambient lighting system that reads the video signal over HDMI. This means we are not limited to computer output. We can use it together with DVD players, video game consoles, etc.
Ideally we would like to snag the signal off the HDMI cable without disturbing it. However, the signals are really really fast current mode logic differential pairs, and signal integrity issues make any kind of passive tap a non-starter. We are stuck with doing the next best thing: decoding and recoding the signal. This has the advantage that we gain the ability to modify the signal on the way through the system to add debug information etc.
Thanks to our “man in the middle” position between the player and the display we can see all the pixel values, aggregate them in properly sized and positioned boxes and use this signal to drive a strand of LEDs over their SPI interface. These LEDs will be arranged in a ring around the back of the display, resulting in an ambient lighting effect. Due to the limitations of the FPGA boards currently available on a hobby budget, we will not be able to process video signals at resolutions higher than 720p. That’s unfortunate, but I expect this limitation to go away as series 7 FPGAs drop in price.
Meet the components
At the heart of the system is the FPGA. We are going to save ourselves a lot of trouble, and use a board that comes with an FPGA suitable for HDMI deserialisation/serialisation and two HDMI connectors already affixed. We are going to use the wonderful Scarab miniSpartan6+.
For the leds we are going to use a strand of 25 digitally addressable LEDs based on the WS2801 controller. There are denser, brighter, cheaper addressable LED strands out there now, but I have these lying around from another project, so that’s what we will use.
For More Details: DIY FPGA-based HDMI ambient lighting