Color expansion of a 1-bpp frame buffer with a per-tile color lookup table in an MCU DMA engine

A frame buffer of 1 bit per pixel is divided in tiles of 8×8 pixels. Each tile has a 4-bit index into a color lookup table (CLUT) of 16 foreground/background color pairs. A DMA engine in a microcontroller (MCU) reads the bitmap, the tile index map and the CLUT, and produces RGB565, RGB444 or RGB666 pixels on the fly, straight into a serial display interface such as SPI. No color frame buffer exists anywhere. A 240×240 display needs 7.7 kB (7,714 bytes) of RAM instead of 115 kB (115,200 bytes) for a 16-bit frame buffer. The aim is to make color displays usable on microcontrollers that cannot afford a color frame buffer. Changing a CLUT entry recolors every tile that uses it, without redrawing. The engine has two stages with one register between them: a fetch stage that reads memory and an output stage that sends the bytes, so the memory reads of a tile overlap the output of the previous tile. The same expansion in the scan-out path of a display controller is also described. Two anti-aliasing variants are also disclosed: 2 bits per pixel, and two bit planes (section 6). This document is a defensive publication: it discloses the methods described, and the variants listed in section 6, so that they are prior art. The PDF includes a Chinese abstract. The accompanying files (clut-dma.zip; also tag v1.0 of https://github.com/koendv/clut-dma) hold the Verilog model of the engine, its testbench, the formal properties, and an FPGA prototype with a Cortex-M1 soft core and a 240×280 ST7789 display. The software version of the engine is in the u8g2 graphics library, branch clut of https://github.com/koendv/u8g2 (tag clut-dma-v1.0). License: text (clut-dma.pdf) CC BY 4.0; code in clut-dma.zip BSD-2-Clause.

Authors

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2026-10-31
DOI
https://doi.org/10.5281/zenodo.23835660
Primary Topic
Embedded Systems and FPGA Applications
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Color expansion of a 1-bpp frame buffer with a per-tile color lookup table in an MCU DMA engine

Koenraad De Vleeschauwer
Zenodo (CERN European Organization for Nuclear Research)
Embedded Systems and FPGA Applications
article

Color expansion of a 1-bpp frame buffer with a per-tile color lookup table in an MCU DMA engine

Koenraad De Vleeschauwer
article en

Abstract

A frame buffer of 1 bit per pixel is divided in tiles of 8×8 pixels. Each tile has a 4-bit index into a color lookup table (CLUT) of 16 foreground/background color pairs. A DMA engine in a microcontroller (MCU) reads the bitmap, the tile index map and the CLUT, and produces RGB565, RGB444 or RGB666 pixels on the fly, straight into a serial display interface such as SPI. No color frame buffer exists anywhere. A 240×240 display needs 7.7 kB (7,714 bytes) of RAM instead of 115 kB (115,200 bytes) for a 16-bit frame buffer. The aim is to make color displays usable on microcontrollers that cannot afford a color frame buffer. Changing a CLUT entry recolors every tile that uses it, without redrawing. The engine has two stages with one register between them: a fetch stage that reads memory and an output stage that sends the bytes, so the memory reads of a tile overlap the output of the previous tile. The same expansion in the scan-out path of a display controller is also described. Two anti-aliasing variants are also disclosed: 2 bits per pixel, and two bit planes (section 6). This document is a defensive publication: it discloses the methods described, and the variants listed in section 6, so that they are prior art. The PDF includes a Chinese abstract. The accompanying files (clut-dma.zip; also tag v1.0 of https://github.com/koendv/clut-dma) hold the Verilog model of the engine, its testbench, the formal properties, and an FPGA prototype with a Cortex-M1 soft core and a 240×280 ST7789 display. The software version of the engine is in the u8g2 graphics library, branch clut of https://github.com/koendv/u8g2 (tag clut-dma-v1.0). License: text (clut-dma.pdf) CC BY 4.0; code in clut-dma.zip BSD-2-Clause.

Zenodo (CERN European Organization for Nuclear Research)
Openalex Percentile: Top 24%
Embedded Systems and FPGA Applications
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Laika access coming soon