Hardware-Encoder für NeoPixel (WS2812)

Aus Hackerspace Bielefeld Wiki
Wechseln zu: Navigation, Suche


Dieses Projekt ist in seiner Entstehung begriffen und wird mit der Zeit erweitert! Bei Fragen oder Anregungen bitte auf meiner Diskussionsseite melden!

Projektbeschreibung

Ziel dieses Projektes ist es, eine Schaltung in VHDL für einen WS2812(b) Encoder zu erstellen. Das Protokoll der WS2812-Controller ist relativ einfach, stellt jedoch einige Anforderungen an das Timing und ist daher schwierig auf Mikrocontrollern zu implementieren.

Der Grundgedanke ist nun, den zeitkritischen Codiervorgang auf ein FPGA auszulagern und den Zugriff darauf über verbreitete Schnittstellen nach Außen zur Verfügung zu stellen. Da bieten sich serielle Schnittstellen wie UART oder SPI an, parallele Schnittstellen sind ebenfalls möglich, brauchen aber mehr IO-Ports am Controller.

Einleitung

Hier geht es um Vorüberlegungen zu dem Hardware-Encoder. Taktraten, Timings und die Codierung des WS2812 werden betrachtet.

Hardware

In diesem Abschnitt geht es um die zu beschreibende Hardware, Features, Schnittstellen und Blockdiagramme. Unterkapitel widmen sich den einzelnen Schaltungsblöcken im Detail.

UART

Dieses Kapitel ist der seriellen asynchronen Kommunikation gewidmet. Hier geht es um das Protokoll sowie die Implementierung eines entsprechenden Schnittstellenmoduls.

SPI

Im Gegensatz zum UART befassen wir uns hier mit synchroner Datenübertragung und der Implementierung des passenden Moduls.

VRAM

LED-Encoder

Ablaufsteuerung

Bussteuerung

Protokoll und Software