Software apps and online services
Dreaming about your own video LED display is easy. Building one by yourself? Not so much. This project presents and provides the open-source Pixblasters-Light FPGA LED controller that makes it much easier. The Pixblasters-Light enables big and affordable handmade video LED displays that connect to the Raspberry Pi, or any other computer with the standard video output, as an ordinary monitor and with absolutely no programming required to display any video content.
Built by cost-effective addressable RGB LED strips, such displays are very affordable and provide the best of the high-end professional solutions such as size, content management and visibility. They can be curved and glued to different surfaces in big video installations that cannot be supported by standard rigid LED modules.
Controlling of large numbers of LEDs requires high-performance controller, able to feed each LED with individual control data while keeping all timings stable and within pretty precise and narrow limits. Typically, these requirements cannot be fulfilled by software-based and less performing hardware controllers that use the Ethernet and other non-native video input interfaces. They need to spend significant performance on executing network protocol stacks and encoding/decoding video data for the display. Most importantly, the software-based LED controllers have limited video content capabilities and cannot display any graphics or video.
The Pixblasters-Light FPGA-based LED controller overcomes all of the mentioned design challenges! With this controller and with no need for guru level software skills, anything that displays on the monitor displays on the LEDs too.
The Pixblasters-Light code is demonstrated on the Pixblasters MS1 video controller board, which is successfully crowdfunded on Crowd Supply platform, but can be easily adapted for and used on other FPGA-based hardware boards.How it Works
The Figure 2 shows the demo system configuration. The Pixblasters MS1 LED board with the Xilinx Spartan-6 chip, which is configured by the open-source Pixblasters-Light LED controller, connects to the Raspberry Pi single-board computer by a monitor cable. The Raspberry Pi is free to play any video content and drives the LED installation as a regular monitor.Since no computing performance is used on LED driving tasks, the Raspberry Pi can display full speed AVI, FLV, MP4, WMV, or any other video. It can even run full-featured digital signage software to combine video and graphics, news feeds and posts from social networks, use scheduled playlists, etc. Remote video LED display’s management is possible through the Raspberry Pi network interfaces.
The FPGA controller receives the video formatted for the monitor, crops the image part selected for the LED display (Figure 3), and drives the LED strips by properly formatted video data. The complexity of LED driving is hidden from the driving computer and the WS2812B LEDs can be refreshed at the maximum 60 Hz refresh rate!
Used WS2812B RGB LED strips have the 3-pin interface: +5V power input, GND ground pin, and the DIN control data input. Because of the significant power requirements, the LED strips need to be powered by an external regulated power supply. Each RGB LED draws approximately 50 mA when it is set to full brightness white color and powered at VDD = +5V, so make sure to select the proper power supply. The presented demo setup uses the 350W (60A)AC/DC converter, which was available at the time of display making. It makes our 1, 920 LEDs demo display (max. 96A) underpowered, but works well as long as we display changing and colorful video contents.
Most of the modern FPGA chips must drive the LED strip through suitable voltage level shifters, since the WS2812B LED control DIN input expects the signal level in the 0.3-0.7 VDD range. Make sure to properly orient the LED strip – there are small arrows printed on the strip that show the proper data direction.
The Pixblasters-Light is a key IP core for high-capacity FPGA LED controllers. It captures video from the DVI or the RGB parallel video input and buffers up to 16 of max. 512 pixels long video lines. The IP core crops the input video at an arbitrary position, double-buffers the cropped image and shifts it out serialized and encoded for driving addressable digital LED strips.With no help from the processor, the Pixblasters-Light IP core can drive thousands of LEDs at once and at the refresh rate allowable by the maximum LED strips communication speed.
The top level design of the Pixblasters-Light Demo LED controller includes the Pixblasters-Light IP core, instantiates the DVI video input receiver and the necessary clocking infrastructure. The design is fully compatible with the Pixblasters MS1 Video LED Strip Controller board. It can be also adapted for use with third-party Xilinx FPGA based boards. The key Pixblasters-Light IP core’s features are:
- LED driving capacity - 8192 RGB WS2812 LEDs
- Max. LED display's resolution is 512 x 16 (H xV)
- Supports 60 fps vertical refresh
- RGB888 pixel format - 16M full colors
- Integrated RGB LED gamma color correction
- Crops the input video and shows the selection onLEDs
- Configurable cropping window: TOP_LEFT_X & TOP_LEFT_Y generics
- The length of the LED display line set by the LINE_LENGTH generic
Please note that the Pixblasters MS1 Video LED Controller Board integrates the full-featured Pixblasters FPGA controller with bigger LED capacity, support for board chaining and displays with more than 200, 000 LEDs, on-board micro-controller and other advanced features, which are not supported by the open-source Pixblasters-Light IP core.Build Up and FPGA Implementation
With the Pixblasters-Light FPGA LED controller making of the LED display is maximally simplified:
- Cut all LED strips (display lines) to the same length. Make sure to orient all strips in the same direction indicated by printed arrow signs.
- Connect the DIN inputs of the LED strips to FPGA driving pins. Use the proper voltage level shifters. The Figure 6 shows example drivers from the Pixblasters MS1 board.
- Out of our experience, you can cut to roughly 2 meters (120 LEDs) with no significant “LED browning” effect caused by the powerdrop. If you like to use longer LED lines, insert additional power supplies along the strips and consider extra wiring to supplement tiny copper power traces through the LED strip.
- Connect the driving computer to the FPGA board by the monitor cable.
- Load the FPGA with the Pixblasters-Light LEDcontroller configuration file.
- Power up and enjoy.
Because of significant power requirements of bigger LED displays, the power for LEDs is not distributed through the Pixblasters MS1. Instead, use external terminal blocks and make sure to properly connect system grounds - connect Pixblasters MS1 ground terminals with LED strips and power supply ground pins.
FPGA implementation instructions:
- Download the FPGA code from Pixblasters github repository: https://github.com/PixiGreen/Pixblasters-MicroDemo
- Make sure to have installed the Xilinx ISE WebPack. This free and the fully featured front-to-back solution is available for download: https://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.html
- Follow step-by-step implementation instructions provided in the readme.md file
- Optionally, use the pre-compiled pixblasters-top.bit to configure the Pixblasters MS1 board with no design implementation
The open-source Pixblasters-Light demo FPGA controller can be ported to non-Pixblasters FPGA boards that need to provide the following:
- DVI/HDMI video input connector for external video grabbing.
- Original code is written for the Xilinx Spartan-6, but the only architecture specific code are BRAM instances in the liner.vhd file. Used BRAM instances can be easily replaced.
- The LED strips require +5 V. Figure 6 shows the logic detail from the Pixblasters MS1 board.