20160715 - LED Displays
Gathering information to attempt to understand what is required to drive indoor LED sign based displays.
Target
256x128 2:1 letter box display (NES was 256 pixels wide).
How do LED Modules Work?
Adafruit provides
one description how to drive a 32x16 LED module.
Attempting a rough translation.
LEDs are either on or off.
The 32x16 panel can only drive 64 LEDs at one time,
organized as two 32x1 lines 8 rows apart.
Scanning starts with lines {0,9}, then {1,10}, then {2,11}, and so on.
Panels are designed to be chained, driven by a 16-bit connector which provides 2 pixels per clock (one pixel for top and one for bottom scan-line).
Looks like
some other grouped LED panels go up to 128x128, driven by 4 row chunks of 128x32, each built from two chained 64x32 panels.
Seems like the 64x32 panels are driven with 2 lines of 64 pixels (based on the addition of one extra address bit).
Could not find a good description of chaining yet.
Seems like the 64x32 panels have roughly a 1/16 duty cycle (meaning only 1/16 of the LEDs are active at any one time).
LED displays are low-persistence high-frame-rate displays with binary pixels.
Based on
this thread they can drive one cable at 40 MHz.
So a 128x128 panel with 4 cables would be roughly 80M pixels / (128*32 pixel/frame) = 19.5 thousand frames per second.
The basic Pulse Width Modulation (PWM) to modulate brightness would transform this low-persistence display into something effectively scan-and-hold,
just with a lot of micro-strobed sub-frames doing PWM across the effective "scan-and-hold" period.
Getting something truly low-persistence is more of a challenge.
These displays can be over 1500 nits (even with a 1/16 duty cycle).
So one option for lower persistence is to actually insert black frames between frames,
dropping the scan-and-hold time.
A 120 Hz frame rate provides 8.333 ms of frame time,
switching to half black frames would drop to 4.16 ms (which isn't yet low persistence IMO),
and would reduce to a 750 nit display (half the contrast),
leaving roughly 80 or so sub-frames for PWM.
A 240 Hz frame rate at half black frames could be at the right compromise between lost contrast and low persistence.
A 480 Hz frame rate with no black frames might be able to provide full contrast, and low enough persistence,
but likely would need some seriously good temporal dithering.