Difference between revisions of "TileDriver"

From Hackstrich
(Much work, very tile.)
Line 2: Line 2:
  
 
== Project Status ==
 
== Project Status ==
 +
* 2015-11-28: Many speed and usability improvements in tilesend, now takes any image format and puts it on the display. Implemented gamma correction which makes the image look much better overall. Discovered that brightness levels are "wrapping around" and anything >127 goes back to zero brightness and ramps up again from there, indicating an MSB is getting chopped off somewhere. Logically analyzing r_value_a it seems bits 0 and 1 are always the same, which also doesn't seem right. Ran out of time after this point, need to pick back up here next time. Wrote a quick 'tilegradient' tool to generate a 0-255 gradient for troubleshooting.
 
* 2015-10-03: Build a breakout board for the tile connection to enable hooking a logic analyzer up to all the signals. Got SPI-to-tile working for a full display! Using the internal EBR in the CPLD right now, still need to fix up a lot of messy code and get the framebuffer into the external SDRAM, but it's getting there.
 
* 2015-10-03: Build a breakout board for the tile connection to enable hooking a logic analyzer up to all the signals. Got SPI-to-tile working for a full display! Using the internal EBR in the CPLD right now, still need to fix up a lot of messy code and get the framebuffer into the external SDRAM, but it's getting there.
 
* 2015-09-26: Got the first 3 bytes of RAM used to set the colour of the whole screen, which is a start.
 
* 2015-09-26: Got the first 3 bytes of RAM used to set the colour of the whole screen, which is a start.

Revision as of 00:38, 29 November 2015

TileDriver is a board to drive HUB75 type RGB matrix panels from an SPI bus. It contains a framebuffer and interface circuitry to allow slower CPUs like an AVR or PIC to drive the displays.

Project Status

  • 2015-11-28: Many speed and usability improvements in tilesend, now takes any image format and puts it on the display. Implemented gamma correction which makes the image look much better overall. Discovered that brightness levels are "wrapping around" and anything >127 goes back to zero brightness and ramps up again from there, indicating an MSB is getting chopped off somewhere. Logically analyzing r_value_a it seems bits 0 and 1 are always the same, which also doesn't seem right. Ran out of time after this point, need to pick back up here next time. Wrote a quick 'tilegradient' tool to generate a 0-255 gradient for troubleshooting.
  • 2015-10-03: Build a breakout board for the tile connection to enable hooking a logic analyzer up to all the signals. Got SPI-to-tile working for a full display! Using the internal EBR in the CPLD right now, still need to fix up a lot of messy code and get the framebuffer into the external SDRAM, but it's getting there.
  • 2015-09-26: Got the first 3 bytes of RAM used to set the colour of the whole screen, which is a start.
  • 2015-09-19: Got the BCM working so each colour can now be set to any brightness via the DIP switches.
  • 2015-09-18: Got the basic hardware assembled on the MachXO dev board (connector for tile, 3x3 DIP switches to set colours for testing). Screen is successfully being driven with a single hardcoded colour over the whole display.
  • 2015-09-16: Received 32x32 video tile and MachXO dev board to prototype this.
  • 2015-09: Started putting idea together to use in the future BRCRD Scoreboard project.

Overview

  • 640x640x24bpp max display size
  • Main data input via SPI at up to 50MHz
    • 256x256x24bpp can update at 30fps
    • 640x640x24bpp can update at 5fps, still fine for static data displays

Gallery