# 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.