Sie sind auf Seite 1von 111

E R SIT

Universität des Saarlandes IV

UN

A
S
Lehrstuhl für Mikroelektronik
Prof. Dr.-Ing. Chihao Xu

SA

IS
R

S
A VIE N

Ein Pipeline-Prozessor für das


energieoptimierte Treiberschema SQC
für PMOLED-Displays

Diplomarbeit
zur Erlangung des akademischen Grades
eines Diplom-Ingenieurs
der Naturwissenschaftlich-Technischen Fakultät II
- Physik und Mechatronik -
der Universität des Saarlandes

– vertraulich –

Verfasser Yassen Dobrev, geboren am 19.06.1987 in Sofia, Bulgarien

Betreuer Prof. Dr.-Ing. Chihao Xu


Dipl.-Ing. Michael Buczek
Dipl.-Ing. Christoph Drews

Saarbrücken, 2011
Eidesstattliche Erklärung
Ich versichere hiermit, dass ich die vorliegende Arbeit selbständig verfasst
und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.

Saarbrücken, den 24. März 2011

Yassen Dobrev
Danksagung
Herrn Prof. Dr.-Ing. Chichao Xu, Inhaber des Lehrstuhls für Mikroelektronik
an der Universität des Saarlandes, danke ich für die Möglichkeit der Durch-
führung dieser Diplomarbeit an seinem Lehrstuhl und für die Bereitschaft,
meine Diplomarbeit zu betreuen.

Herrn Dipl.-Ing. Michael Buczek und Herrn Dipl.-Ing. Christoph Drews, Dok-
toranden am Lehrstuhl für Mikroelektronik an der Universität des Saarlan-
des, danke ich für die fachliche Betreuung und moralische Unterstützung bei
der Anfertigung meiner Diplomarbeit.

Meiner Freundin Kalina Petrova, meiner Familie und meinen Freunden dan-
ke ich für die Geduld, das Verständnis und die Inspiration.

Mein besonderer Dank gilt der Studienstiftung des deutschen Volkes und
der Dr. Jürgen und Irmgard Ulderup Stiftung, die mich bei der Finanzierung
meines Studiums unterstützt haben und zu einer wertvollen Bereicherung
meines Studiums beigetragen haben. Denn „wer viel erlebt, dem wird mehr
einfallen“.
Kurzzusammenfassung
Heutzutage besteht ein großer Bedarf an günstigen energieeffizienten Dis-
plays. Diese sind vor allem für mobile Geräte, wo das Display einen Groß-
teil des Gesamtpreises und des Gesamtenergieverbrauchs ausmacht, beson-
ders wichtig. Ein vielversprechender Kandidat für diese Anwendung bietet
die PMOLED-Technologie. Bedingt durch kapazitive Verlustleistung sind
PMOLED-Displays jedoch nur bis zu einer kleinen Größe effizient einsetzbar.

Um diesen Nachteil von PMOLED zu überwinden, wurde am Lehrstuhl für


Mikroelektronik der Universität des Saarlandes das energieoptimierte Trei-
berschema SQC entwickelt. In dieser Arbeit wird ein Pipeline-Prozessor für
dieses Treiberschema entwickelt. Hierzu wird zunächst das elektrische Modell
eines PMOLED-Displays vorgestellt und anhand dessen die Funktionsweise
von SQC aus physikalischer und programmiertechnischer Sicht betrachtet.
Um die hohen Anforderungen an der Geschwindigkeit für eine Echtzeitpro-
zessierung zu erfüllen, wird ein Pipeline-Prozessor entwickelt. Dieser wird
im Weiteren hinsichtlich der benötigten Chipfläche optimiert und um zu-
sätzliche Funktionalität erweitert. Aufbauend auf vergangenen Arbeiten wird
schließlich ein Demonstrator entwickelt, an dem sich die Energieeinsparung
eines PMOLED-Displays von ca. 50% mithilfe des Treiberschemas SQC de-
monstrieren lässt. Das in dieser Arbeit entwickelte Hardwaredesign dient in
Zukunft als Grundlage für einen kommerziellen PMOLED-Treiberchip.
Abstract
In present days there is a big demand for cheap and efficient displays. They
are of particular interest for mobile applications, since the displays accounts
for a large part of the entire price and energy consumption of mobile devices.
The PMOLED-technology is a promising candidate for such applications.
The size of PMOLED-displays is however limited due to too high energy
losses of larger displays.

In order to overcome this size-limitation the driving-scheme SQC was deve-


loped at the Institute of Microelectronics at Saarland University. This work
concentrates on the development of a pipeline-processor for this driving-
scheme. First the electrical model of PMOLED-displays is derived. Then
the principle of operation of SQC is discussed from physics and hardware-
programming point of view. In order to fulfill the high speed-demand of a
real-time processor, a pipeline-processor is developed. This processor is opti-
mized in order to minimize the necessary chip area and extended with addi-
tional functionality. Building up on past work a demonstrator is developed,
showing an energy optimization of approximately 50% of a PMOLED display
using the driving-scheme SQC. The hardware design, which was created in
this theses will be used as a basis for a commercial PMOLED driver chip.
Inhaltsverzeichnis
1 Einleitung 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Grundlagen 3
2.1 OLED-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Geschichte, Aufbau und Funktionsprinzip . . . . . . . . 3
2.1.2 Typen von OLED . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Vor- und Nachteile von OLED . . . . . . . . . . . . . . 7
2.1.4 Elektrisches Modell . . . . . . . . . . . . . . . . . . . . 8
2.1.5 Größen der Helligkeitsmessung . . . . . . . . . . . . . . 10
2.2 Stand der Technik . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Konventionelles Ansteuerungsverfahren . . . . . . . . . 10
2.2.2 Problemanalyse – kapazitive Verlustleistung . . . . . . 13
2.2.3 Lösungsansatz – SQC . . . . . . . . . . . . . . . . . . . 19
2.3 SQC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.1 Theoretische Grundlagen . . . . . . . . . . . . . . . . . 20
2.3.2 Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.3 Erweiterung . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Zielsetzung 33

4 Material und Methoden 36


4.1 Displaycharakterisierung . . . . . . . . . . . . . . . . . . . . . 36
4.1.1 Messaufbau . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.2 Messvorgang . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Normierung und Diskretisierung der Messdaten . . . . . . . . 43
4.3 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Binäre Suche . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Bresenham-Linienalgorithmus . . . . . . . . . . . . . . 49
4.4 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5 Implementierung und Ergebnisse 61


5.1 SQC – Effiziente Implementierung . . . . . . . . . . . . . . . . 61
5.1.1 Grundlegende Implementierung . . . . . . . . . . . . . 61
5.1.2 Verbesserte Implementierung . . . . . . . . . . . . . . . 65
5.2 Bereitstellung der LUTs . . . . . . . . . . . . . . . . . . . . . 68
5.3 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.4 Flächenoptimierung – Semi-Pipeline . . . . . . . . . . . . . . . 74
5.5 Implementierung verschiedener Displayhelligkeiten . . . . . . . 77
5.6 PC-Steuerungssoftware . . . . . . . . . . . . . . . . . . . . . . 80

6 Diskussion 82
6.1 Echtzeitprozessierung im Vergleich zu 2D-LUT . . . . . . . . . 82
6.2 Energieverbrauch . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.3 Bildqualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.4 Taktfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.5 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7 Zusammenfassung 94

Abbildungsverzeichnis 96

Literaturverzeichnis 103
Abkürzungsverzeichnis
AMOLED Active Matrix OLED
ASIC Application-Specific Integrated Circuit
CAM Content Addressable Memory
EL Emitter Layer
FPGA Field-Programmable Gate Array
GUI Graphical User Interface
HDL Hardware Description Language
HOMO Highest Occupied Molecular Orbital
HTL Hole Transport Layer
ITO Indium Tin Oxide (Indium-Zinn-Oxid)
LCD Liquid Crystal Display
LED Light Emitting Diode
LSB Least Significant Bit
LUMO Lowest Unoccupied Molecular Orbital
LUT Lookup-Tabelle
CMLA Consecutive Multiline Addressing
OLED Organic Eight Emitting Diode
PLED Polymer Light Emitting Diode
PMOLED Passive Matrix OLED
PWM Pulsweitenmodulation
RGB Rot, Grün, Blau
ROM Read-Only Memory
SLA Single Line Addressing
SMOLED Small Molecules OLED
SQC State-Dependent Charge-Controlled Driving
SRAM Static Random Access Memory
Kapitel 1.1: Motivation 1

1 Einleitung
1.1 Motivation
Die Menschheit befindet sich heutzutage im Informationszeitalter. Ständig
wird neue und aktuelle Information produziert, die schnellstmöglich jedem,
jederzeit und überall zur Verfügung stehen muss. Deshalb finden tragbare
und mobile Geräte immer weitere Verbreitung und neue Anwendungen. Da
das Auge das Hauptsinnesorgan des Menschen darstellt, wird die meiste In-
formation visuell über Displays übertragen.

Die Anforderungen an Displaygröße und Bildqualität steigen ständig, so-


mit aber auch der Energieverbrauch und der Preis, so dass das Display
einen beträchtlichen Anteil des Gesamtenergieverbrauchs und -preises mo-
derner mobiler Geräte ausmacht (bis zu ein Drittel). Aus diesen Gründen
sind energieoptimierte, kostengünstige Displays ein aktuelles und relevantes
Forschungsthema.

Abb. 1.1: Aktuelle OLED Anwendungen. Von links nach rechts: Videoarmband-
uhr mit 128x128 OLED Display und 8GB Speicher [1], 31-Zoll OLED
Fernseher der Firma LG, vorgestellt bei der IFA-2010 in Berlin [2],
Konzept eines faltbaren Smartphone der Firma Kyocera, vorgestellt
bei der CTIA 2009 [3].

Ein vielversprechender Kandidat, der den wachsenden Anforderungen von


Industrie und Benutzern standhalten könnte, stellt die organische Leucht-
diode (engl. Organic Light-Emitting Diode, OLED) dar. Displays, die auf
der OLED-Technologie beruhen, bieten viel besseren Kontrast, kürzere Re-
aktionszeit und erhöhte Helligkeit gegenüber herkömmlichen Liquid Crystal
Displays (LCD). Des Weiteren sind sie leichter und energieeffizienter und
können theoretisch viel billiger und umweltschonender hergestellt werden.
So können durch OLED existierende Anwendungen verbessert werden sowie
heute noch undenkbare Produkte realisiert werden (vgl. Abb. 1.1).
Kapitel 1.2: Aufbau der Arbeit 2

Neben den Vorteilen von OLED existieren natürlich auch gewisse Nachtei-
le, die den kommerziellen Erfolg und die Wettbewerbsfähigkeit der OLED-
Technologie immer noch verhindern. Dazu zählen unter anderem die relativ
kurze Lebensdauer und die relativ komplizierte Ansteuerung. Um von den
hervorragenden Eigenschaften von OLED in der Praxis profitieren zu können,
ist noch viel Forschung und Arbeit erforderlich.

1.2 Aufbau der Arbeit


In dieser Diplomarbeit wird das energieoptimierte Treiberschema SQC für
PMOLED-Displays implementiert.

In Kapitel 1 wird die Motivation zur Forschung im Bereich der OLED-


Technologie vorgestellt.

In Kapitel 2 wird die OLED-Technologie näher vorgestellt. Es wird auf die


für diese Arbeit relevante Passivmatrix OLED (PMOLED) und deren hohen
kapazitiven Verlustleistung eingegangen. Als Lösungsansatz wird das ener-
gieoptimierte Treiberschema SQC beschrieben.

In Kapitel 3 wird der in dieser Arbeit zu implementierende Gesamtaufbau


vorgestellt.

In Kapitel 4 wird die zum SQC-Betrieb notwendige Displaycharakterisierung


beschrieben. Es wird auf weitere Algorithmen eingegangen, die in dieser Ar-
beit Anwendung finden.

In Kapitel 5 wird die Implementierung eines effizienten und ausreichend


schnellen Prozessors für das Treiberschema SQC beschrieben.

In Kapitel 6 werden die Ergebnisse der Arbeit diskutiert und bewertet.

In Kapitel 7 findet sich eine kurze Zusammenfassung der Arbeit.


Kapitel 2.1: OLED-Grundlagen 3

2 Grundlagen
Im Folgenden wird die OLED-Technologie kurz vorgestellt. Es wird auf das
physikalische Funktionsprinzip sowie auf die Vor- und Nachteile eingegangen.

2.1 OLED-Grundlagen
2.1.1 Geschichte, Aufbau und Funktionsprinzip
Geschichte
Die Geschichte der OLED begann in den 1950er Jahren, als Wissenschaft-
ler der Universität Nancy, Frankreich zum ersten Mal Elektrolumineszenz
in organischen Materialien beobachteten. Wegen der zu niedrigen Leitfähig-
keit der damals verfügbaren organischen Materialien waren dazu sehr hohe
elektrische Spannungen erforderlich, so dass dieser Effekt keine praktische
Anwendung fand. Es hat noch 40 Jahre gedauert bis 1990 im Cavendish-
Laboratorium in Cambridge, Großbritannien die ersten hocheffizienten grün-
leuchtenden OLEDs produziert wurden [4].

Aufbau
Im Folgenden wird der vereinfachte Aufbau einer typischen Top Emission
Doppelschicht-OLED beschrieben. OLEDs sind aus mehreren Schichten auf-
gebaut. Auf einem Glassubstrat befindet sich die durchsichtige Anode (vgl.
Abb. 2.1). Besonders gut dafür eignet sich der Halbleiter Indium-Zinn-Oxid
(ITO1 ), der für sichtbares Licht bis zu 90% transparent ist und hohe, fast
metallische elektrische Leitfähigkeit aufweist [6]. Darauf folgen die organi-
schen Lochleitungs- (HTL2 ) und Emitterschicht (EL3 ). Der Zweck der Loch-
leitungsschicht ist, die Löcherinjektion zu fördern und die Elektron-Loch-
Rekombinationszone von der Kathode/Emitterschicht Grenzfläche ins Inne-
re zu verschieben, wodurch die Effizienz der OLED verbessert wird. Ein ge-
eignetes Material für die Lochleitungsschicht ist z.B. Kupfer-Phthalocyanin
(CuPc) [7]. Die Emitterschicht enthält den Farbstoff und bestimmt die Wel-
lenlänge des emittierten Lichts, z.B. grün – Farbstoff Aluminumoxinat (Alq3 ).
Die letzte Schicht im Stapel ist die metallische Kathode. Dafür verwendet
man Metalle wie Kalzium (Ca), Aluminium (Al) oder Magnesium (Mg), die
geringe Austrittsarbeit besitzen, was die Elektroneninjektion fördert.
1
ITO – Engl. Indium Tin Oxide.
2
HTL – Engl. hole transport layer.
3
EL – Engl. emitter layer.
Kapitel 2.1: OLED-Grundlagen 4

OLED Struktur
Kathode

Emitterschicht

Lochleitungs-
schicht

Anode

Substrat

Abb. 2.1: Vereinfachter Aufbau einer OLED [5].

Funktionsprinzip
Legt man eine elektrische Spannung von ca. 3V − 12V über die OLED an,
so dass die Anode positiv gegenüber der Kathode ist, werden Elektronen von
der Kathode in das niedrigste unbesetzte Orbital des Moleküls (LUMO4 ) der
Emitterschicht und Löcher von der Anode in das höchste besetzte Orbital
des Moleküls (HOMO5 ) der Lochleitungsschicht injiziert [9].

Infolge elektrostatischer Anziehungskräfte driften Elektronen und Löcher auf-


einander zu und treffen sich in der Emitterschicht. Dort bilden sie einen ge-
4
LUMO – Engl. lowest unoccupied molecular orbital, äquivalent dem Leitungsband bei
nichtorganischen Halbleitern.
5
HOMO – Engl. highest occupied molecular orbital, äquivalent dem Valenzband bei
nichtorganischen Halbleitern.
Kapitel 2.1: OLED-Grundlagen 5

Glassubstrat Anode Lochleitungs- Kathode


(ITO) schicht Emitterschicht

LUMO e- e-

Licht HOMO
h +
h+
h+
ca. 100 nm 10 - >100nm <100nm >100nm

Abb. 2.2: Vereinfachte schematische Darstellung einer OLED [8].

bundenen Zustand, der als Exziton bezeichnet wird. Beim Übergang dieses
angeregten Zustandes in den Grundzustand wird ein Photon ausgesendet
(vgl. Abb. 2.2). Die Frequenz dieses Photons und somit die Farbe der Strah-
lung wird durch
∆E = ELU M O − EHOM O = h · f (2.1)
bestimmt, wo ELU M O und EHOM O die Energien des niedrigsten unbesetz-
ten bzw. des höchsten besetzten Orbitals des Moleküls, h das Plancksche
Wirkungsquantum und f die Frequenz der Strahlung bezeichnen. Eine de-
taillierte physikalische Beschreibung findet sich in [7].

2.1.2 Typen von OLED


Je nach verwendeten Materialien und Ansteuerungsart unterscheidet man je
zwei Typen von OLED-Displays.

Materialien In Abhängigkeit von dem bei der Herstellung des Displays


benutzen Material gibt es zwei Arten von Displays: Small Molecule OLED
(SMOLED) und Polymer LED (PLED). Bei der Herstellung von SMOLED-
Displays wird die emittierende Schicht durch thermisches Verdampfen in Va-
kuum abgeschieden. Dies ermöglicht die Herstellung von mehrlagigen Struk-
turen mit gut kontrollierbarer Schichtdicke. Durch die Verwendung von geeig-
neten Masken lassen sich so auch RGB-Displays herstellen. Das verbreitetste
Small Molecule Material ist Aluminumoxinat (Alq3 ). PLEDs lassen sich dage-
gen nicht durch thermisches Verdampfen herstellen, da sie bei höheren Tem-
peraturen zerfallen. Geeignete Methoden sind Rotationsbeschichtung (Spin
Kapitel 2.1: OLED-Grundlagen 6

coating) und Inkjet Drucken. Obwohl diese Methoden viel günstiger und ein-
facher im Vergleich zum thermischen Verdampfen sind, können die Parame-
ter wie Schichtdicke und laterale Auflösung dabei nicht so genau kontrolliert
werden. Ein typisches Polymer, das bei der Herstellung von PLED-Displays
Anwendung findet ist Poly(p-Phenylen-Vinylen) (PPV). Obwohl sich PLED
im Allgemeinen kostengünstiger und einfacher herstellen lassen, sind ihnen
SMOLED bezüglich Effizienz und Lebensdauer überlegen, so dass heutzutage
SMOLED eine weitere Verbreitung finden [7, 10].

OLED Passivmatrix OLED Activmatrix


Kathode Kathode

Organische Organische
Schichten Schichten
Anode TFT
Matrix
Anode

Abb. 2.3: Vereinfachte schematische Darstellung eines Abschnitts eines Displays.


Links: PMOLED. Rechts: AMOLED (nach [5]).

AMOLED/PMOLED Man unterscheidet zwei Ansteuerungsarten von


OLED-Displays – Aktivmatrix und Passivmatrix (vgl. Abb. 2.3). Bei Pas-
sivmatrix OLED Displays (PMOLED) werden die Anoden (Displayzeilen)
und Kathoden (Displayspalten) der OLEDs so verschaltet, dass sie eine Ma-
trix aus senkrecht zueinander stehenden Streifen bilden. An jedem Kreuz-
punkt zwischen den Anoden- und Kathodenstreifen befindet sich die organi-
sche Schicht. Eine OLED im Kreuzpunkt einer gewünschten Zeile und Spalte
lässt sich durch Anlegen einer Spannung an der Anode und Verbindung der
Kathode zum Massepotential zum Leuchten bringen. Somit ist es möglich
mit n Anschlüssen für die Zeilen und m Anschlüssen für die Spalten n · m
Pixel anzusteuern (die Ansteuerung von PMOLED-Displays wird ausführlich
in Kapitel 2.2.1 betrachtet).

Während PMOLED-Displays sehr einfach und kostengünstig hergestellt wer-


den können, haben sie den großen Nachteil, dass so nur relativ kleine Displays
(in der Regel bis 3 Zoll [10]) realisierbar sind. Dafür gibt es im Allgemeinen
drei Gründe:
Kapitel 2.1: OLED-Grundlagen 7

• Bei gleichbleibender Bildwiederholfrequenz verringert sich die Zeilen-


ansteuerungszeit mit steigender Zeilenanzahl, da die Zeilen sequen-
tiell angesteuert werden. Die maximal erreichbare Pixelhelligkeit ist
näherungsweise proportional der Zeilenansteuerungszeit und der An-
steuerungsstromamplitude. Deswegen sinkt die maximal erreichbare Pi-
xelhelligkeit mit steigender Zeilenanzahl bei gleichbleibender Ansteue-
rungsstromamplitude. Somit ist in erster Näherung nur die Zeilenan-
zahl begrenzt, da für ab einer bestimmten Zeilenanzahl eine gegebene
Sollhelligkeit nicht erreicht werden kann.
• Die Erhöhung der Ansteuerungsstromamplitude würde das Problem
aus dem ersten Punkt lösen. Wegen des relativ hohen Spaltenwider-
standes von PMOLED-Displays führt dies jedoch zu Wärmeentwick-
lung und einen ungewünschten Spannungsabfall über den Spaltenwi-
derstand, der zur Verschlechterung der Bildqualität führt.
• Mit steigender Zeilenanzahl nimmt weiterhin die kapazitive Verlust-
leistung näherungsweise quadratisch zu (dies wird ausführlich in Kapi-
tel 2.2.2 behandelt).
Eine Alternative bietet die Aktivmatrix OLED (AMOLED). Bei AMOLED
wird an jedem Pixel eine relativ komplizierte Schaltung angebracht [11]. Dies
ermöglicht eine effiziente und flexible Ansteuerung auf Kosten erhöhter Kom-
plexität und Preissteigerung. Diese Arbeit konzentriert sich ausschließlich auf
PMOLED.

2.1.3 Vor- und Nachteile von OLED


Wie bereits in Kapitel 1 erwähnt, bietet die OLED-Technologie viele Vorteile
gegenüber der existierenden und weit verbreiteten LCD-Technologie. Neben
diesen existieren jedoch auch eine Reihe von Nachteilen, die zuerst überwun-
den werden müssen, damit man von den hervorragenden Eigenschaften der
OLED-Technologie profitieren kann. Im Folgenden werden diese kurz zusam-
mengefasst und diskutiert.

Vorteile von OLED:


• Während die LCD-Matrix bei LCD-Displays als Farbfilter für die Hin-
tergrundbeleuchtung wirkt, sind die OLED-Displays selbstleuchtend
und benötigen keine Hintergrundbeleuchtung. Deswegen weisen sie einen
höheren Kontrast auf, sind potentiell energieeffizienter, besitzen einen
sehr breiten Blickwinkel von ca. 170◦ und lassen sich sehr dünn her-
stellen (bis 0, 3mm [12]). Das macht sie besonders attraktiv für mobile
Anwendungen.
Kapitel 2.1: OLED-Grundlagen 8

• Theoretisch lassen sich OLED-Displays günstiger als LCD-Displays


herstellen, da sie sich auf fast alle Trägermaterialien (z.B. Kunststoffe)
drucken lassen. Dies öffnet außerdem die Möglichkeit flexible, aufroll-
bare Displays herzustellen.
• Mit einer Reaktionszeit von ca. 1µs sind OLED-Displays ca. 1000 Mal
schneller als LCD-Displays, die eine Reaktionszeit von minimal 1ms
erreichen können.

Nachteile von OLED:


• OLED besitzen im Allgemeinen eine kürzere Lebensdauer6 als LCD,
da bei der Lichterzeugung mehr als 50% der Leistung in Wärme umge-
wandelt wird, was zur Selbstzersörung führt. Da die Lebensdauer der
verschiedenen Farbdioden unterschiedlich ist (da sie aus verschiedenen
Materialien hergestellt werden), führt dies bei älteren Displays zu Farb-
verschiebungen. Als besonders problematisch erweisen sich die blauen
Dioden, die schneller als die roten und die grünen Dioden altern. Dies
macht eine Nachregelung erforderlich.
• Die Dioden sind extrem empfindlich gegenüber Feuchtigkeit (inklusive
Luftfeuchtigkeit) und Sauerstoff und müssen daher sehr gut verkapselt
werden.
• Da die OLED-Technologie noch relativ unreif ist, sind die Herstellungs-
kosten von OLED-Displays zur Zeit immer noch größer als von her-
kömmlichen LCD-Displays.

2.1.4 Elektrisches Modell


Die grundsätzliche physikalische Struktur einer OLED wurde bereits in Kapi-
tel 2.1.1 vorgestellt. Beruhend darauf lässt sich ein vereinfachtes elektrisches
Modell bestehend aus diskreten Bauelementen herleiten [14]. Ausgehend vom
physikalischen Aufbau einer OLED (vgl. Abb. 2.4a) lässt sich jede Schicht
durch eine Parallelschaltung eines Kondensators, eines Widerstands und einer
Reihenschaltung aus einer idealen Diode und einem Widerstand beschreiben
(vgl. Abb. 2.4b).

Die Kondensatoren berücksichtigen die Kapazität der jeweiligen Schicht und


werden bestimmt durch deren Dicke und dielektrische Konstante. Die Wi-
derstände berücksichtigen den relativ hohen elektrischen Widerstand jeder
6
Als Lebensdauer bezeichnet man die mittlere Betriebszeit, nach welcher die Leucht-
dichte auf 50 Prozent des Anfangswerts abgesunken ist [9].
Kapitel 2.1: OLED-Grundlagen 9

Mg:Al RsET
Electron CET RpET
Transport DET
Layer
CHT RsHT
Rtotal
Hole RpHT
CP CP DOLED
Transport DHT
Layer DOLED
RsHI
Hole CHI RpHI RITO
Injection DHI
Layer
ITO RITO

a b c d

Abb. 2.4: Vereinfachung des elektrischen Modells einer OLED (nach [13]).

Schicht. Die Dioden berücksichtigen die gleichrichtende Eigenschaft der ein-


zelnen Schichten im Stapel. In Reihe dazu muss man noch den relativ ho-
hen elektrischen Widerstand der ITO-Schicht als Serienwiderstand beachten.
Aufgrund der guten metallischen Leitfähigkeit lässt sich im Allgemeinen der
Widerstand der Mg:Al-Schicht bei nicht zu hohen Diodenströmen vernach-
lässigen.

Wie in Abb. 2.4c dargestellt, lässt sich dieses Modell weiter ohne signifi-
kanten Qualitätsverlust vereinfachen. Die Parallelwiderstände RpET , RpHT
und RpHI sind im Allgemeinen sehr groß und somit zu vernachlässigen. Die
Serienwiderstände RsET , RsHT und RsHI lassen sich zu einem Widerstand
Rtotal , die Kondensatoren CET , CHT und CHI zu einem Kondensator Cp 7
und die Dioden DET , DHT und DHI zu einer Diode DOLED zusammenfassen.
Der Widerstand der ITO-Schicht RIT O bleibt unverändert. Die Parameter
der diskreten Bauteile aus dem elektrischen Ersatzschaltbild lassen so aus-
wählen, dass die Simulation die experimentell ermittelten Daten sehr gut
annähert [13]. Eine weitere, für diese Arbeit ausreichende Näherung stellt
Abb. 2.4d dar.
7
Cp – Parasitärkapazität.
Kapitel 2.2: Stand der Technik 10

2.1.5 Größen der Helligkeitsmessung


Dieses Kapitel verschafft einen groben Überblick über die photometrischen
Größen, die in dieser Arbeit verwendet werden. Man unterscheidet allgemein
zwischen strahlungsphysikalischen (radiometrischen) Größen und lichttech-
nischen (photometrischen) Größen. Während durch radiometrische Größen
sich die objektiven Eigenschaften des Strahlungsfeldes beschreiben lassen,
beschreiben die photometrischen Größen die subjektive Wahrnehmung des
sichtbaren Lichtspektrums durch das menschliche Auge [15, 16].

Die Lichtstärke I ist eine der sieben Basisgrößen (gemessen in Candela (cd))
und wird definiert als das ausgesendete Licht von einer Strahlungsquelle be-
stimmter Frequenz und bestimmter Strahlstärke. Auf Basis der Lichtstärke
wird der Lichtstrom als Lichtstärke pro Raumwinkel definiert (Φ = I · Ω).
Die Lichtmenge ergibt sich aus der Integration des Lichtstroms über die Zeit
zu Q = Φ · t. Den Lichtstrom pro Fläche nennt man Leuchtdichte (auch Lu-
minanz, Helligkeit, engl. Luminance): L = AI .

Ein Überblick über die photometrischen und die entsprechenden radiome-


trischen Größen mit den jeweiligen Einheiten findet sich in Tabelle 2.1.

Photometrische Größe Einheit Radiometrische Größe Einheit


Lichtmenge Q lm · s Strahlungsenergie J
Lichtstrom Φ lm Strahlungsfluss W
W
Lichtstärke I cd Strahlstärke sr
W
Beleuchtungsstärke E lx Bestrahlungsstärke m2
J
Belichtung H lx · s Bestrahlung m2
Leuchtdichte L
lm W
(auch Luminanz, Helligkeit) m2
Strahldichte sr·m2

Tabelle 2.1: Übersicht über die photometrischen und die entsprechenden radio-
metrischen Größen.

2.2 Stand der Technik


2.2.1 Konventionelles Ansteuerungsverfahren
Abb. 2.5 zeigt die Verschaltung der einzelnen OLEDs in einem PMOLED-
Display. Das dargestellte Display besteht aus m Zeilen (R1 . . . Rm ) und n Spal-
ten (C1 . . . Cn ). Dies ergibt m · n Pixel. Da OLEDs stromgesteuert sind, sind
Kapitel 2.2: Stand der Technik 11

C1 C2 C3 Cn

I1(t) = I0 I2(t) = I0 I3(t) = 0 In(t) = 0

Cp Cp Cp Cp

Rtotal Rrow Rtotal Rrow Rtotal Rrow Rtotal


R1
Rcol Rcol Rcolumn Rcol
Vcomh

Cp Rrow Cp Rrow Cp Rrow Cp


R2

Rcol Rcol Rcol Rcol

Cp Rrow Cp Rrow Cp Rrow Cp


Rm-1
Rcol Rcol Rcol Rcol

Cp Rrow Cp Rrow Cp Rrow Cp


Rm

Abb. 2.5: Ersatzschaltbild eines PMOLED-Displays (nach [17]).

n schaltbare Konstantstromquellen (I1 . . . In ) der Amplitude I0 erforderlich.


Im Folgenden wird das konventionelle Ansteuerungsverfahren für PMOLED-
Displays ausführlich erläutert.

Beim konventionellen Ansteuerungsverfahren werden die Zeilen sequentiell


selektiert. Alle Spalten werden gleichzeitig angesteuert. Da das menschli-
che Auge relativ langsam ist, werden bei ausreichend schneller Ansteuerung
die einzelnen emittierten Lichtmengen integriert und als einheitliche Hellig-
keit empfunden. Während das menschliche Auge ca. 65 Bilder pro Sekunde
wahrnehmen kann, gibt es auch spezielle Strukturen bei denen unter einer
Bildwiederholfrequenz von 80Hz ein Flimmereffekt zu sehen ist. Aus diesem
Grund verwendet man in der Praxis beim sequentiellen Bildaufbau eine Bild-
wiederholfrequenz8 von ff rame = 100Hz [18]. Für die Zeit tf rame , in der ein
8
Bildwiederholfrequenz, auch Framerate. Als Frame wird eine einzelne Bildwiederho-
lung bezeichnet.
Kapitel 2.2: Stand der Technik 12

Frame aufgebaut werden muss ergibt sich somit


1 1
tf rame = = = 10ms. (2.2)
ff rame 100Hz
Während dieser Zeit müssen alle m Zeilen nacheinander selektiert werden.
Da in dieser Arbeit ein Display mit 64 Zeilen benutzt wird, ergibt sich für
die Zeilenadressierzeit trow für m = 64
tf rame 10ms
trow = = ≈ 156µs. (2.3)
m 64
Der Ansteuerungsprozess wird im Folgenden anhand des Beispiels der An-
steuerung der ersten 2 Pixel der Zeile R1 in Abb. 2.5 veranschaulicht. Wäh-
rend der Zeilenadressierzeit trow wird die selektierte Zeile und somit die Ka-
thoden der selektierten OLEDs mit Masse verbunden. So stellen die OLEDs
einen leitenden Pfad nach Masse für den Strom I0 aus den Stromquellen
der Spalten C1 und C2 dar und emittieren dabei Licht näherungsweise pro-
portional zur Zeitdauer und zur Amplitude des durchfließenden Stroms. Die
restlichen m − 1 Zeilen werden auf ein höheres gemeinsames Potential Vcomh
(Engl. Common high Voltage) gelegt. So wird die OLED-Durchlassspannung
unterschritten und die nicht selektierten OLEDs sperren. Da die Dioden zu
diesem Zeitpunkt sperren, wurden sie in Abb. 2.5 nicht dargestellt.

Während eine Zeile selektiert ist, sollen die Stromquellen so gesteuert werden,
dass die Pixel in den Kreuzungspunkten der selektierten Zeile und der jewei-
ligen Spalte die Sollhelligkeit erreichen. Dies kann auf zwei Wegen erreicht
werden: Man kann die Amplitude des Steuerstroms variieren, oder den Steu-
erstrom mittels Pulsweitenmodulation (PWM) modulieren und den Tastgrad
(Engl. Duty Cycle) variieren. Die erste Möglichkeit setzt die Verwendung
von hochauflösenden und hochgenauen Stromquellen mit genau einstellbarer
Stromamplitude voraus. Diese sind kompliziert und teuer zu realisieren. Da
man in der Elektronik die Zeit viel einfacher und genauer kontrollieren kann,
wird zur Ansteuerung die PWM-Methode mit konstanter Stromamplitude
benutzt.

Im Allgemeinen kann man durch PWM q Graustufen darstellen. Dabei ent-


spricht 0 der minimal darstellbaren Helligkeit (schwarz) und q der maxi-
mal darstellbaren Helligkeit (weiß). Unter der vereinfachten Annahme eines
linearen Zusammenhangs zwischen Injektionszeit und Helligkeit und voller
Verfügbarkeit der Zeilenadressierzeit muss der Tastgrad wie folgt eingestellt
werden, um die Graustufe i ∈ [0; q] darzustellen:
tinj i · tlsb
T astgrad = = . (2.4)
trow trow
Kapitel 2.2: Stand der Technik 13

Dabei bezeichnet tinj die Injektionszeit, also die Zeit, während welcher die
jeweilige Stromquelle aktiv ist und Strom in die OLED injiziert wird. Als tlsb
(lsb – Engl. für Least Significant Bit, niedrigstwertiges Bit) bezeichnet man
die Zeit, die zur Änderung der Helligkeit um ein niedrigstwertiges Bit (z.B.
von i auf i + 1) benötigt wird. tlsb lässt sich nach folgender einfacher Formel
berechnen:
trow
tlsb = . (2.5)
q
Zur Veranschaulichung wird im Folgenden das sehr einfache Beispiel eines
monochromen 2-Bit 2 × 2 PMOLED-Displays betrachtet. Es soll die Hellig-
keitsmatrix aus Abb. 2.6a darstellen. Das Ergebnis der Ansteuerung ist in
Abb. 2.6b illustriert.

Nach Gl. (2.3) und Gl. (2.5) ergibt sich trow = tf rame /2 und tlsb = trow /3.
Abb. 2.6c stellt die sequentielle Ansteuerung der Zeilen dar. Während das
dargestellte Signal einer selektierten Zeile logisch HIGH ist, muss man be-
achten, dass die Zeile dabei auf Masse gelegt wird. Abb. 2.6d veranschaulicht
das Treiben der Spalten. Die jeweilige Spalte wird so lange mit Strom ge-
speist, wie in der Helligkeitsmatrix vorgegeben. Während der HIGH-Phase
des Spaltensignals ist die jeweilige Stromquelle aktiv.

2.2.2 Problemanalyse – kapazitive Verlustleistung


Während Kapitel 2.2.1 die grundlegende Struktur des konventionellen An-
steuerungsverfahren beschrieb, wurden zur Erhöhung der Übersichtlichkeit
mehrere Vereinfachungen vorgenommen. Eine Analyse der Parasitärkapazi-
täten in Abb. 2.5 zeigt, dass die Parasitärkapazitäten Cp aller nicht selek-
tierten Zeilen unter Vernachlässigung der Spaltenwiderstände Rcol und der
Zeilenwiderstände Rrow parallelgeschaltet sind und mit der selektierten Zeile
verkoppelt sind. Die äquivalente Kapazität Ceq 9 , die sich aus der Parallel-
schaltung der nicht selektierten Zeilen ergibt, berechnet sich zu:
Ceq = (m − 1) · Cp ≈ m · Cp . (2.6)
Eine solche kapazitive Kopplung existiert bei den Spalten nicht. Die galva-
nische Kopplung durch die Zeilenwiderstände Rrow , die zur Anhebung der
Kathodenspannung der einzelnen OLEDs führt, ist zu vernachlässigen. So
lassen sich die folgenden Betrachtungen auf eine einzelne Spalte beschränken.
Unter der Annahme |ZCeq |  |ZCp | und |ZCeq |  |ZRtot | für die betrachteten
Frequenzen lassen sich auch Cp und Rtot des selektierten Pixels vernachläs-
sigen. Das Ersatzschaltbild vereinfacht sich zur Schaltung aus Abb. 2.7.
9
Ceq – Equivalent Capacitance.
Kapitel 2.2: Stand der Technik 14

C0 C1 C0 C1
a b
R0 0 1 R0

R1 2 3 R1

c
R0

R1

t=0 t=trow t=2∙trow t=3∙trow


d
C0 2∙tlsb

C1 1∙tlsb 3∙tlsb 1∙tlsb

tframe

Abb. 2.6: a – Einfaches Beispiel einer Helligkeitsmatrix eines 2-Bit 2 × 2


PMOLED-Displays. b – Das Ergebnis der Ansteuerung. c, d – Ver-
einfachte schematische zeitliche Darstellung der Zeilen- bzw. Spalten-
ansteuerung.

Um die Auswirkung der Parasitärkapazitäten zu veranschaulichen wurde eine


PSPICE-Simulation durchgeführt (vgl. Abb. 2.8). Da die OLED-Parameter
den Werten aus [13] und nicht dem in der Arbeit verwendeten Display ent-
sprechen, ist das Ergebnis der Simulation nur qualitativ zu werten. Zu Beginn
der Ansteuerung gilt für die Anodenspannung VOLED = Vcol = 0 und die Pa-
rasitärkapazität Ceq ist auch entsprechend geladen. Wenn die Stromquelle
aktiviert wird, ist die OLED wegen Vcol = 0 gesperrt und der Gesamtstrom
fließt in die Parasitärkapazität, so dass Icap = I0 gilt (vgl. Abb. 2.7, 2.8). Dies
führt zu einer Aufladung von Ceq und Anstieg der Spannung Vcol . Ab dem
Zeitpunkt t = tth , wenn die Anodenspannung Vcol die Schwellenspannung
Kapitel 2.2: Stand der Technik 15

C1

I1=I0

Vcol
IOLED Icap

R1
Vcomh

Ceq
R2...Rm

Abb. 2.7: Vereinfachtes Ersatzschaltbild eines angesteuerten OLED-Pixels mit


Berücksichtigung der resultierenden Parasitärkapazitäten der restli-
chen Zeilen (nach [19]).

Vth 10 überschreitet, beginnt die OLED zu leiten und der Diodenstrom IOLED
steigt auf Kosten des Parasitärstroms Icap an [20]. Am Ende der Ansteue-
rungszeit (zum Zeitpunkt t = 10ms in der Simulation, vgl. Abb. 2.8) wird
die Stromquelle abgeschaltet und die Parasitärkapazität entlädt sich über
die Diode, so dass IOLED = −Icap gilt. Dabei sinkt die Spaltenspannung Vcol
näherungsweise logarithmisch [21].

Discharge
Da das emittierte Licht näherungsweise proportional zum durch die OLED
durchfließenden Strom ist, führt die Entladung der Parasitärkapazität durch
die OLED dazu, dass die Spaltenspannung am Anfang der Ansteuerung des
nächsten Pixels unbekannt und variabel ist. Dies führt zur Verschlechte-
rung der Bildqualität. Einen Ausweg bietet der sog. Discharge11 . Dabei wird
am Ende der Ansteuerung die Anode über einen Discharge-Schalter an die
Dischargespannung Vdis < Vth , z.B. Vdis = 0V gelegt. Dabei entlädt sich die
Parasitärkapazität direkt nach Masse und führt nicht zur übermäßigen Lich-
temission. Während dadurch bessere Bildqualität gewährleistet wird, führt
das zu großer Energieverschwendung, da ein großer Teil der injizierten Ener-
gie, die in der Parasitärkapazität gespeichert wird, nicht zur Lichtemission
10
Vth – Threshold voltage (engl. für Schwellenspannung).
11
Discharge – Engl. für Entladen.
Kapitel 2.2: Stand der Technik 16

10V

5V

Vth

0V
V0LED
400uA

0A

-400uA
0s tth 5ms 10ms 15ms 20ms
I0LED Icap
Time

Abb. 2.8: PSPICE-Simulation des zeitlichen Verlaufs der Diodenspan-


nung VOLED (analog der Spaltenspannung Vcol ), des Dioden-
stroms IOLED und des Parasitärstroms Icap an einem OLED-Pixels
infolge eines PWM-Pulses (qualitativ).

benutzt wird, sondern dissipiert wird. Die dadurch entstehende Leistungsbi-


lanz lässt sich vereinfacht folgendermaßen beschreiben [19]:

Pinj ≈ Plum + Pdis . (2.7)

Dabei entspricht Pinj der von der Stromquelle injizierten Leistung, Plum der
in der OLED verbrauchten Leistung und Pdis der beim Discharge dissipierten
Leistung. Die mittlere dissipierte Leistung Pdis,ij in einem Pixel ist propor-
tional der in die Parasitärkapazität injizierten Ladung ∆Qcap :
Z trow
Pdis,ij ∼ Icap (t)dt = ∆Qcap ≈ m · Cp · Vcol . (2.8)
0

Für ein Display mit m Zeilen und n Spalten ergibt sich somit für die Ge-
samtverlustleistung:
m X
n
m · Cp · Vcol,ij ∼ m2 · Cp .
X
Pdis ∼ (2.9)
i=1 j=1
Kapitel 2.2: Stand der Technik 17

Die Gesamtverlustleistung hängt also quadratisch von der Zeilenanzahl und


linear von der OLED-Parasitärkapazität ab. Aufgrund der quadratischen
Abhängigkeit von der Zeilenanzahl wächst die Verlustleistung bei größeren
OLED-Displays stark an. Des Weiteren vergrößert sich die Parasitärkapazität
Cp bei neueren Technologien, da sich die OLED-Dicke verringert.

Precharge
Ein weiteres Problem, das aus der Simulation in Abb. 2.8 ersichtlich ist, ist
das für Zeiten t < tth , also während die Diode sperrt, kein Licht emittiert
wird. Einen Ausweg bietet der sog. Precharge12 . Während der Prechargephase
am Anfang jedes Ansteuerungszyklus wird Strom mit mehrfacher Stromam-
plitude über eine festgelegte Zeit injiziert, so dass am Ende der Precharge-
phase die Spaltenspannung Vcol . Vth ist (Stromprecharge). Alternativ kann
man Spannungsprecharge durchführen, indem die Spalte auf die Spannung
Vpre . Vth gelegt wird. So führt die Strominjektion nach der Precharge-Phase
direkt zu Lichtemission. Eine bessere Möglichkeit bietet jedoch die Verände-
rung der Dischargespannung Vdis . Anstatt 0V kann man Discharge auf Vth
durchführen (man beachte dabei, dass für Spaltenspannung Vcol ≤ Vth kei-
ne Lichtemission stattfindet). Dies verringert die Energieverluste und führt
zu einem impliziten Precharge (Spannungsprecharge). Dabei ist zu beachten,
dass die Spaltenspannung am Ende des Precharge bzw. nach dem Discharge
sicher kleiner als Vth ist, damit keine unerwünschte Lichtemission stattfindet.

Gammakorrektur zur Linearisierung


Während Discharge die unerwünschte Lichtemission vermeidet und für einen
definierten Zustand am Anfang des Ansteuerungszyklus sorgt und Prech-
arge eine längere Strominjektion ermöglicht, existiert ein weiteres Problem,
dass noch gelöst werden muss. Bisher wurde davon ausgegangen, dass die
emittierte Lichtmenge (und somit die Pixelhelligkeit) linear mit der Injek-
tionszeit zusammenhängt (vgl. Abb. 2.6). Der lineare Zusammenhang ist
jedoch nur zwischen dem injizierten Strom und der emittierten Lichtmen-
ge (Pixelhelligkeit) zu betrachten. Da der zeitliche Verlauf IOLED (t) aus
Abb. 2.8 nichtlinear ist, ist eine Gammakorrektur zur Linearisierung notwen-
dig [22]. Das Ergebnis der tatsächlichen optischen Messung der Lichtmenge
als Funktion der Injektionszeit veranschaulicht dies (vgl. Abb. 2.913 ). Wie
dem Graph zu entnehmen, führen gleiche Änderungen der Injektionszeit von
12
Precharge – Engl. für Vorladen.
13
Die y-Achse in Abb. 2.9 stellt den an einem Photodetektor mittels eines Picoammeters
gemessenen Strom dar. Der Messvorgang wird ausführlich in Kapitel 4.1 beschrieben.
Kapitel 2.2: Stand der Technik 18

Lum−Inj(t)

2.3664

∆Lum=0.39

1.9715

∆Lum=0.36

1.6154
Lum−Inj [µA]

∆Lum=0.35
1.2626
∆Lum=0.31
0.9569
∆Lum=0.28
0.6735
∆Lum=0.22
0.4489
∆Lum=0.18
0.2658
∆Lum=0.14
0.1234 ∆Lum=0.08
0.0413
0 10 20 30 40 50 60 70 80 90 100 110
t [µs]

Abb. 2.9: Optische Messung zur Veranschaulichung des nichtlinearen Zusammen-


hangs zwischen Injektionszeit und erzeugter Lichtmenge. Äquidistante
Zerlegung der Injektionszeitachse.

Lum−Inj(t)

2.5

2.25

1.75
Lum−Inj [µA]

1.5

1.25

0.75

0.5

0.25
∆t=39.0 ∆t=13.3 ∆t=10.4 ∆t=8.7 ∆t=8.2 ∆t=7.1 ∆t=7.1 ∆t=6.9 ∆t=6.4∆t=6.1
0
0 39 52.3 62.7 71.4 79.6 86.7 93.8 100.7 107.1 113.2
t [µs]

Abb. 2.10: Optische Messung zur Veranschaulichung des nichtlinearen Zusam-


menhangs zwischen Injektionszeit und erzeugter Lichtmenge. Äquidi-
stante Zerlegung der erzeugten Lichtmenge-Achse.
Kapitel 2.2: Stand der Technik 19

jeweils ∆t = 10µs zu unterschiedlichen Änderungen der erzeugten Lichtmen-


ge von ∆Lum = 0, 08 . . . 0, 39 in Abhängigkeit davon, wie steil die Kurve
im jeweiligen Bereich ist. Dies führt dazu, dass dunkle Pixel noch dunkler
und helle Pixel noch heller dargestellt werden. Abb. 2.10 zeigt dasselbe Mes-
sergebnis, jedoch mit äquidistanter Zerlegung der Lichtmenge. Die dadurch
gewonnene Zuordnung der Sollhelligkeit zur jeweiligen Injektionszeit wird
in einer Lookup-Tabelle (LUT) gespeichert und während der Ansteuerung
benutzt. Nur so ist eine korrekte Soll-Ist-Helligkeitszuordnung möglich.

2.2.3 Lösungsansatz – SQC


Wie in Kapitel 2.2.2 erwähnt, stellt die kapazitive Verlustleistung ein si-
gnifikantes Problem dar. Da die Verluste quadratisch mit der Displaygröße
ansteigen, sind SLA-gesteuerte PMOLED-Displays nur bis eine Größe von
ca. 100 Zeilen effizient zu betreiben [23]. Aus diesem Grund werden für An-
wendungen, die größere Displays erfordern, die teureren und komplizierteren
AMOLED-Displays oder LCDs verwendet (vgl. Kapitel 2.1.2).

INJ DIS INJ INJ Z INJ

trow_i trow_i+1 trow_i trow_i+1


VOLED VOLED

Qcap_i+1
Qcap_i Qcap_i
t t
IOLED IOLED

t t
a b

Abb. 2.11: Qualitativer zeitlicher Vergleich der Treiberschemata SLA mit


Vdis = 0 (a) und SQC (b). Die Fläche unter der IOLED Kurve ent-
spricht der in Licht umgewandelten elektrischen Leistung [19]. INJ –
Strominjektion; DIS – Discharge; Z – Hochohmige Phase.

Der Einsatzbereich der PMOLED-Displays lässt sich auf größere Displays


erweitern, wenn man die kapazitiven Verluste verringert. Man kann dies er-
reichen, indem man die in der Parasitärkapazität gespeicherte Energie zur
Lichterzeugung benutzt, anstatt dissipiert. Dazu wird am Ende der Injekti-
onszeit eine hochohmige Phase eingeführt (vgl. Abb. 2.11). Während dieser
Kapitel 2.3: SQC 20

Phase wird die Stromquelle deaktiviert und die Parasitärkapazität entlädt


sich über die OLED, wobei Licht emittiert wird. Dieses Phänomen wird im
Weiteren als Nachleuchten bezeichnet. Während dieses Licht bei der stan-
dardmäßigen SLA-Ansteuerung zur Überschreitung der Soll-Helligkeit füh-
ren würde, kann man durch geeignete Steuerung gewährleisten, dass genau
so lange Strom injiziert wird, dass die Summe aus Injektionsluminanz und
Nachleuchten genau gleich der Soll-Helligkeit ist. Für diesen Zweck wurde
der Algorithmus SQC entwickelt. Im folgenden Kapitel wird der Algorith-
mus detailliert vorgestellt.

2.3 SQC
2.3.1 Theoretische Grundlagen
Während in Kapitel 2.2.3 die Grundidee von SQC vorgestellt wurde, ist zur
Implementierung des Algorithmus eine genauere theoretische Betrachtung
der stattfindenden Prozesse notwendig [19]. Der Algorithmus SQC beruht
darauf, Discharge und somit Energiedissipation zu vermeiden. Das passiert,
indem die in der Parasitärkapazität Ceq gespeicherte Ladung ∆Qcap (vgl.
Gl. (2.8)) zur Lichterzeugung genutzt wird. Da Discharge vermieden wird,
ist die Spaltenspannung Vcol am Anfang und am Ende der Ansteuerungszeit
variabel. Somit ergibt sich für die in der Parasitärkapazität Ceq gespeicherte
Ladung Qcap,i mit der Spaltenspannung Vcol,i in Zeile i:

Qcap,i = Ceq · Vcol,i . (2.10)

Wie bereits erwähnt, ist die Pixelhelligkeit näherungsweise proportional zum


Strom, der während der Ansteuerungszeit durch die Diode fließt, d.h. der
Ladung Qlum , die in Licht umgewandelt wird:
Z trow
Lum = k · Qlum ∼ IOLED (t)dt. (2.11)
0

Dabei stellt k einen Proportionalitätsparameter dar. Mit der durch die Strom-
quelle injizierten Ladung
Qinj = I0 · tinj (2.12)
lässt sich somit die folgende Ladungsbilanz aufstellen (vgl. auch Abb. 2.11
b):
Qinj + Qcap,i = Qlum + Qcap,i+1 . (2.13)
Die durch die Stromquelle injizierte Ladung plus die in der Parasitärkapa-
zität vorhandene Ladung ist gleich der zur Lichterzeugung durch die OLED
Kapitel 2.3: SQC 21

durchflossenen Ladung plus der in der Parasitärkapazität verbleibenden La-


dung. Da das Treiberschema vom jeweiligen Spaltenspannungszustand ab-
hängt (State-Dependent) und auf der Ladungserhaltung beruht (Charge-
Controlled), wird es als State-Dependent Charge-Controlled Driving (SQC)
bezeichnet.

Obwohl ein Discharge meistens vermieden werden kann, gibt es einen Sonder-
fall, in dem Discharge erforderlich ist. Ist z.B. die Sollhelligkeit vom Pixel i
sehr hoch und die Spannung Vcol,i somit sehr hoch und die Sollhelligkeit vom
Pixel i + 1 sehr niedrig, so würde durch das Nachleuchten die Sollhelligkeit
vom Pixel i + 1 überschritten. In diesem Fall ist ein Discharge erforderlich
(disi,j = 1). Für die Verlustleistung bei SQC ergibt sich:
m X
X n
Pdis,SQC ∼ disi,j · Cp · (Vcol,ij − Vdis ). (2.14)
i=1 j=1

Dieser Fall ist sehr selten. Da Discharge auf die Dischargespannung Vdis . Vth
anstatt auf Masse durchgeführt wird und da die Endspannung Vcol,i infolge
Nachleuchten im Vergleich zum Spitzenwert und im Vergleich zum konven-
tionellen Ansteuerungsverfahren abgesunken ist, ist die kapazitive Verlust-
leistung bei SQC im Allgemeinen vernachlässigbar klein.

Gl. (2.13) lässt sich mit Gl. (2.12), (2.10) und (2.11) folgendermaßen um-
schreiben:
Lum
I0 · tinj + Ceq · Vcol,i = + Ceq · Vcol,i+1 . (2.15)
k
Die Größen, die in Gl. (2.15) vorkommen sind alle direkt messbar bzw. steu-
erbar. Aus steuerungstechnischer Sicht kann man tinj als die Stellgröße, Lum
als die zu steuernde Größe und Vcol,i und Vcol,i+1 als die Zustandsgrößen be-
trachten. Die Aufgabe des zu implementierenden Algorithmus besteht darin,

LUTs

Lum dis, tinj

Vcol, i
SQC Vcol, i+1

Abb. 2.12: Grundlegende systematische Darstellung des Algorithmus SQC.


Kapitel 2.3: SQC 22

bei gegebener Sollhelligkeit Lum und gegebenem Anfangszustand Vcol,i die


Injektionszeit tinj und den Endzustand Vcol,i+1 zu bestimmen sowie zu ent-
scheiden, ob Discharge nötig ist. Dazu werden noch die Ergebnisse der elek-
trischen und optischen Messungen, die das jeweilige Display charakterisieren,
benötigt. Diese werden in sog. Lookup-Tabellen (LUTs) abgespeichert. Das
Blockschaltbild des Systems ist in Abb. 2.12 dargestellt.

2.3.2 Umsetzung
Bis jetzt wurde die Theorie zur Funktionsweise des Treiberschemas SQC
vorgestellt. Im Folgenden wird auf die praxisnahen Details eingegangen, die
zur Hardwareimplementierung erforderlich sind. Als Grundlage dafür soll
Abb. 2.13 dienen. Sie beinhaltet die Ergebnisse der vier Messungen, die zum
SQC-Betrieb benötigt werden (die Ermittlung der Messkurven wird ausführ-
lich in Kapitel 4.1 behandelt).

State-Inj(t) State-Post(t)
8.00 8.00

V2
7.00

6.00 6.00
V1,i
5.00 5.00
State-Post [V]

V1, i+1
State-Inj [V]

4.00 4.00

3.00 3.00

2.00 2.00

1.00 1.00

0.00 0.00
0 50 t1 100 150 200 250 300 0 t2 200 400 600 800 1000 1200

t [µs] t [µs]

Lum-Inj(t) Lum-Post(t)
14.00 14.00

12.00 12.00

10.00 10.00
Lum-Post [µA]
Lum-Inj [µA]

8.00 8.00

6.00 6.00

4.00 4.00

2.00 2.00
Lum-Inj Lum-Post
0.00 0.00
0 200 250 300 200 400 600 800 1000 1200
t1 t search t2 ttzz
t [µs] t [µs]

Abb. 2.13: Graphische Darstellung der Ergebnisse der elektrischen und optischen
Messungen mit Kennzeichnung der für SQC wichtigen Größen.

Die vier Messkurven sind:


Kapitel 2.3: SQC 23

• Lum-Inj(t) (Injection Luminance) – Die erreichte Pixelhelligkeit wäh-


rend der Strominjektion.
• State-Inj(t) (Injection State) – Die Spaltenspannung während der Stro-
minjektion.
• Lum-P ost(t) (Post Luminance) – Die erreichte Pixelhelligkeit beim
Nachleuchten.
• State-P ost(t) (Post Luminance State) – Die Spaltenspannung beim
Nachleuchten.

Ausgehend von einer Sollhelligkeit Lum und einer Spaltenspannung V1,i soll
der Algorithmus mithilfe der Messkurven aus Abb. 2.13 die Injektionszeit tinj
und die Spaltenspannung für das nächste Pixel V1,i+1 berechnen. Dabei soll
die Helligkeit, die während der Injektion und des Nachleuchtens erreicht wird,
gleich der Sollhelligkeit sein (die Gleichheit ist bis auf einen relativ kleinen
Diskretisierungsfehler gewährleistet). Der Algorithmus soll auch bestimmen,
ob ein Discharge notwendig ist (dis = 1), oder nicht (dis = 0).

Die Berechnung erfolgt iterativ. Als Grundlage dient der Algorithmus bi-
näre Suche (engl. Binary Search). Die binäre Suche ist ein sehr effizienter
iterativer Suchalgorithmus, der in einem sortierten Feld ein gesuchtes Ele-
ment findet. Bei Nichtvorhandensein des gesuchten Elements im Feld liefert
die binäre Suche das nächstliegende Element als Ergebnis. Die binäre Suche
wird ausführlich in Kapitel 4.3.1 behandelt.

Während die x-Achse der Messkurven aus Abb. 2.13 die Einheit einer Zeit
hat, wird damit nicht eine tatsächlich vergehende Zeit, sondern nur ein Offset
in der jeweiligen LUT bzw. eine Verschiebung der Anfangszeit bezeichnet. So
ist die Zeit t1 als einen durch die Spaltenspannung V1,i verursachten Offset zu
betrachten. Dieser Offset beachtet die Tatsache, dass die Steilheit der Kurven
Lum-Inj(t) und State-Inj(t) vom Betrag der Spaltenspannung abhängen.

Für eine Spaltenspannung V1,i und eine Injektionszeit tsearch werden folglich
die rot gekennzeichneten Kurvenabschnitte für die Spaltenspannung und die
erreichte Pixelhelligkeit durchgelaufen und die Spaltenspannung V2 erreicht.
Analog werden während des Nachleuchtens die grün gekennzeichneten Kur-
venabschnitte durchgelaufen und die Spaltenspannung V1,i+1 erreicht.

Der Algorithmus zur Umsetzung des Treiberschemas SQC findet sich in


Listing 2.1 und wird im Folgenden erklärt. Zunächst wird geprüft, ob ein
Discharge notwendig ist (Zeilen 1 bis 7 in Listing 2.1). Dazu wird die Zeit
Kapitel 2.3: SQC 24

1 t2,dis = S t a t e -Post- I n v e r s e ( V1,i )


2 I f (Lum-Post ( t2,dis + trow ) − Lum-Post ( t2,dis ) ) > Lum Then
3 dis = 1
4 V1,i = Vdis
5 Else
6 dis = 0
7 End I f
8
9 t1 = S t a t e - I n j - I n v e r s e ( V 1 )
10 ∆Lum,best = 0
11 mint = 0
12 maxt = trow
13 tsearch = mint + ((maxt − mint ) >> 1)
14
15 While mint ≤ maxt Do
16 Lum- I n j = Lum- I n j ( tsearch + t1 ) − Lum- I n j ( t1 )
17 V2 = S t a t e - I n j ( tsearch + t1 )
18 t2 = S t a t e -Post- I n v e r s e ( V2 )
19 tz = trow − tsearch
20 Lum-Post = Lum-Post ( tz + t2 ) − Lum-Post ( t2 )
21 Lumsearch = Lum- I n j + Lum-Post
22
23 ∆Lum = |Lumsearch − Lum|
24 I f ∆Lum < ∆Lum,best Then
25 ∆Lum,best = ∆Lum
26 tbest = tsearch
27 t2,best = t2
28 End I f
29
30 I f ∆Lum,best == 0 Then
31 Break
32 Else I f Lumsearch < Lum Then
33 maxt = tsearch − 1
34 Else
35 mint = tsearch + 1
36 End I f
37 tsearch = mint + ((maxt − mint ) >> 1)
38 End While
39
40 tinj = tbest
41 V1,i+1 = S t a t e -Post ( (trow − tbest ) + t2,best )

Listing 2.1: Algorithmus zur Umsetzung des energieoptimierten Treiberschemas


SQC in Pseudocode [24].
Kapitel 2.3: SQC 25

t2,dis ermittelt, die den Punkt auf der Messkurve State-P ost(t) in Abhän-
gigkeit von der Anfangsspannung V1,i bestimmt (die Zeit t2,dis ist nicht in
Abb. 2.13 dargestellt, wird aber analog zu t2 berechnet):
t2,dis = State-P ost-Inverse(V1,i ). (2.16)
Ausgehend davon, berechnet man die Helligkeit, die beim Nachleuchten vom
Zustand V1,i für die Zeit trow ohne Injektion erreicht würde (die Hellig-
keit ∆Lum-P ostdis ist nicht in Abb. 2.13 dargestellt, wird aber analog zu
∆Lum-P ost bestimmt):
∆Lum-P ostdis = Lum-P ost(t2,dis + ttow ) − Lum-P ost(t2,dis ). (2.17)
Ist die Helligkeit ∆Lum-P ostdis größer als die Sollhelligkeit Lum, dann ist
ein Discharge erforderlich, da ansonsten der Pixel heller als die Sollhelligkeit
wäre. Die Anfangsspannung V1,i ist nach dem Discharge gleich der Dischar-
gespannung Vdis .

Ausgehend von der Inversen der LUT State-Inj(t) und vom Zustand V1,i
wird die Zeit t1 bestimmt (Zeile 9 in Listing 2.1, vgl. auch Abb. 2.13):
t1 = State-Inj-Inverse(V1,i ). (2.18)
Danach werden die Anfangswerte für die Iteration gesetzt und die Iteration
gestartet (Zeilen 10 bis 13 in Listing 2.1).

Im Folgenden wird eine Berechnungsiteration beschrieben (veranschaulicht in


Abb. 2.13). Diese hat den Zweck, bei gegebenem Zustand V1,i und gegebener
Suchinjektionszeit tsearch die sich ergebende Helligkeit Lumsearch (Zeilen 16
bis 21 in Listing 2.1) zu berechnen und anhand dessen die Startwerte für die
nächste Iteration zu bestimmen (letzteres gilt nicht für die letzte Iteration).
Die Suchinjektionszeit tsearch ist die Zeit, die durch den Algorithmus iterativ
so verändert wird, dass die Helligkeit Lumsearch möglichst gleich der Sollhel-
ligkeit Lum wird.

Als erstes werden die Helligkeiten bestimmt, die den Zeiten t1 und t1 + tsearch
entsprechen. Die Differenz
∆Lum-Inj = Lum-Inj(t1 + tsearch ) − Lum-Inj(t1 ). (2.19)
ergibt die Helligkeit, die während der Strominjektion erreicht wird. Der Zu-
stand V2 , der am Ende der Strominjektion erreicht wird, errechnet sich zu:

V2 = State-Inj(t1 + tsearch ). (2.20)


Kapitel 2.3: SQC 26

Dieser Zustand wird als Anfangszustand für das Nachleuchten betrachtet.


Daraus lässt sich analog zu Gl. (2.18) die Zeit t2 berechnen:

t2 = State-P ost-Inverse(V2 ). (2.21)

Die Zeit tz , die für das Nachleuchten übrig bleibt, berechnet man aus der
Zeilenadressierzeit trow und aus der Suchinjektionszeit tsearch zu

tz = trow − tsearch . (2.22)

Damit kann man die Helligkeit, die beim Nachleuchten erreicht wird, berech-
nen (analog zu Gl. (2.19)):

∆Lum-P ost = Lum-P ost(t2 + tz ) − Lum-P ost(t2 ). (2.23)

Die Helligkeit Lumsearch (V1,i , tsearch ) ergibt sich aus der Summe von Gl. (2.19)
und Gl. (2.23):

Lumsearch = ∆Lum-Inj + ∆Lum-P ost. (2.24)

Bei jeder Iteration wird der absolute Fehler zwischen der berechneten Hel-
ligkeit und der Sollhelligkeit berechnet (Zeilen 23 bis 28 in Listing 2.1):

∆Lum = |Lumsearch − Lum| (2.25)

Dieser wird mit dem kleinsten Fehler aus den vorherigen Iterationen ∆Lumbest
verglichen. Falls er kleiner ist, so werden für tsearch,best , t2,best und ∆Lumbest
die Werte der jeweiligen Iteration übernommen.

Die berechnete Helligkeit Lumsearch wird dann mit der Sollhelligkeit Lum
verglichen (Zeilen 30 bis 37 in Listing 2.1). Dabei unterscheidet man drei
Fälle:
• Lumsearch = Lum – Wenn die berechnete Helligkeit gleich der Sollhel-
ligkeit ist, ist die Iteration erfolgreich und die Suche wird abgebrochen.
• Lumsearch > Lum – Wenn die berechnete Helligkeit größer als die Soll-
helligkeit ist, muss die Suchinjektionszeit tsearch gemäß der binären Su-
che verkürzt werden und die Berechnung erneut durchgeführt werden.
• Lumsearch < Lum – Wenn die berechnete Helligkeit kleiner als die
Sollhelligkeit ist, muss die Suchinjektionszeit tsearch gemäß der binären
Suche verlängert werden und die Berechnung erneut durchgeführt wer-
den.
Kapitel 2.3: SQC 27

Entsprechend dem Algorithmus binäre Suche wird die iterative Suche abge-
brochen, sobald das ganze Intervall durchsucht wurde.

Schließlich wird die Spaltenspannung für die nächste Zeile V1,i+1 bestimmt
(Zeile 41 in Listing 2.1):

V1,i+1 = State-P ost(t2,best + (trow − tbest )) (2.26)

Der gesuchte Wert für die Injektionszeit tinj ist der Wert tbest , bei dem der
absolute Fehler minimal (oder verschwindend) ist.

2.3.3 Erweiterung
In diesem Kapitel wird eine Erweiterung des Treiberschemas SQC beschrie-
ben, die im Rahmen dieser Arbeit vorgenommen wurde. Ihr Zweck ist einer-
seits die mittlere Stromamplitude zu senken und andererseits die Berechnung
zu vereinfachen und zu präzisieren.

Vcol Pixel 1 Pixel 2 Pixel 3 Pixel 4

a t

INJ POST DIS POST INJ POST INJ POST

Vcol

b t

Z INJ POST DIS POST PRE INJ POST CI INJ POST

Abb. 2.14: Vergleich des konventionellen (a) und erweiterten (b) SQC-
Treiberschemas (qualitativ).

Abb. 2.14 illustriert den Unterschied zwischen dem konventionellen und dem
erweiterten SQC-Treiberschema anhand des Beispiels des zeitlichen Verlaufs
Kapitel 2.3: SQC 28

der Spaltenspannung Vcol von 4 aufeinanderfolgenden Pixeln. Beim konven-


tionellen SQC-Treiberschema wird der Discharge am Ende der Zeilenadres-
sierzeit durchgeführt (vgl. Abb. 2.14a, Pixel 1). Dazu muss zum Zeitpunkt der
Berechnung und Steuerung von Pixel 1 die Sollhelligkeit von Pixel 2 bekannt
sein, was die Rechnung erschwert. Des Weiteren führt dies dazu, dass die
maximale Injektionszeit tinj,max,conv verkürzt wird, da während der Dischar-
gezeit tdis kein Strom injiziert werden kann. Da in vielen Fällen dagegen kein
Discharge notwendig ist, wird die maximale Injektionszeit variabel:

tinj,max,conv = trow − dis · tdis , mit (2.27)


dis = 0: Kein Discharge erforderlich,
dis = 1: Discharge erforderlich.

Dieses Problem lässt sich lösen, indem man anstatt eines Discharges am Ende
der Ansteuerungszeit, eine Anfangsphase einführt. Während dieser Anfangs-
phase pretodo der Länge tpre werden folgende 4 Fälle unterschieden (vgl. auch
Abb. 2.14):
• Hochohmige Phase (pretodo = Z) – Wenn bei gegebener Spaltenspan-
nung die Helligkeit, die durch Strominjektion mit einfacher Stromam-
plitude während der Anfangsphase und Nachleuchten während der rest-
lichen Adressierzeit erreicht wird, größer als die Sollhelligkeit ist, muss
die Spalte während der gesamten Anfangsphase im hochohmigen Zu-
stand betrieben werden (Stromquelle abgeschaltet, Abb. 2.14b, Pixel
1). Diese Phase ist äquivalent dem Nachleuchten.
• Discharge (pretodo = DIS) – Wenn bei gegebener Spaltenspannung
die Helligkeit, die nur durch Nachleuchten erreicht wird, größer als die
Sollhelligkeit ist, ist Discharge zur Senkung der Spannung notwendig
(Abb. 2.14b, Pixel 2). Der Discharge wird, wie bereits besprochen, auf
die Dischargespannung Vdis durchgeführt.
• Precharge (pretodo = P RE) – Wenn bei gegebener Spaltenspannung
und Strominjektion während der gesamten Adressierzeit die produzier-
te Helligkeit geringer als die Sollhelligkeit ist, wird während der An-
fangsphase ein Stromprecharge mit doppelter Stromamplitude durch-
geführt (Abb. 2.14b, Pixel 3). Aufgrund der doppelten Stromamplitude
ist dabei ein viel steilerer Anstieg der Spaltenspannung zu beobachten.
• Strominjektion (pretodo = CI, engl. für Current Injection) – Wenn kei-
ner der obigen Fälle zutrifft, wird während der Anfangsphase Strom mit
einfacher Stromamplitude injiziert (Abb. 2.14b, Pixel 4). Diese Phase
ist äquivalent der normalen Strominjektion.
Kapitel 2.3: SQC 29

Die maximale Injektionszeit errechnet sich zu

tinj,max = trow − tpre . (2.28)

Da während der PRE-Phase Strom mit doppelter Amplitude injiziert wird,

State-Pre(t) State-Inj(t)
9.00 9.00

8.00 8.00

7.00 7.00

6.00 6.00
State-Pre [V]

State-Inj [V]
5.00 5.00

4.00 4.00

3.00 3.00

2.00 2.00

1.00 1.00

0.00 0.00
0 10 20 30 40 50 60 0 10 20 30 40 50 60

t [µs] t [µs]

Lum-Pre(t) Lum-Inj(t)
2.00 2.00

1.80 1.80

1.60 1.60

1.40 1.40

1.20 1.20
Lum-Pre [µA]

Lum-Inj [µA]

1.00 1.00

0.80 0.80

0.60 0.60

0.40 0.40

0.20 0.20

0.00 0.00
0 10 20 30 40 50 60 0 10 20 30 40 50 60

t [µs] t [µs]

Abb. 2.15: Der Verlauf der Spaltenspannung und der Helligkeit bei Precharge mit
doppelter Stromamplitude (links) ist steiler im Vergleich zur normalen
Strominjektion (rechts).

steigt die Spaltenspannung schneller an (bzw. die Parasitärkapazitäten wer-


den schneller aufgeladen) und es wird mehr Licht produziert im Vergleich zur
Strominjektion mit einfacher Amplitude (vgl. auch Abb. 2.15). Für die ma-
ximal erreichbare Pixelhelligkeit innerhalb der Zeilenadressierzeit trow ergibt
sich:

Lummax,conv ∼ trow · I0 (2.29)


Lummax,pre ∼ tpre · 2I0 + (trow − tpre ) · I0 = trow · I0 + tpre · I0 (2.30)
Kapitel 2.3: SQC 30

Es kann also tpre · I0 mehr Helligkeit erreicht werden. Eine Messung für
tpre ≈ 10%·trow ergab eine Erhöhung der maximalen Pixelhelligkeit von 16%.

Beim konventionellen SQC-Treiberschema muss für das gleiche Ergebnis die


Zeilenadressierzeit trow verlängert werden (Bildwiederholfrequenz verringert)
oder die Stromamplitude I0 vergrößert werden (mehr Stress bzw. kürzere Le-
bensdauer der OLED). Das heißt, dass man dank der Precharge-Phase für
die gleiche maximale Helligkeit bei konstanter Zeilenadressierzeit die mittle-
re Stromamplitude verringert. Der Stromprecharge ist nur erforderlich, wenn
auf ein sehr dunkles Pixel ein sehr helles Pixel folgt. Da dieser Fall für typi-
sche Bilder sehr selten ist, stellt der Stromprecharge insgesamt wenig Stress
für die OLED dar.

Diese Erweiterung kostet eine Steigerung der Komplexität. Zum einen muss
der Hardwaretreiber den Precharge mit doppelter Stromamplitude unterstüt-
zen und zum anderen sind weitere Schritte zur Bestimmung der Anfangsphase
notwendig. Dazu werden mithilfe der bereits erwähnten Messkurven zusätz-
liche LUTs erstellt. Im Folgenden wird eine Liste dieser LUTs vorgestellt.
• LumZ (V ) – Die Helligkeit, die ausgehend von einer Spaltenspannung V
beim Nachleuchten für die Zeit trow produziert wird.
• LumI (V ) – Die Helligkeit, die ausgehend von einer Spaltenspannung V
bei Strominjektion mit einfacher Stromamplitude für die Zeit trow pro-
duziert wird.
• P reV (V ) – Die Spaltenspannung, die ausgehend von einer Spaltenspan-
nung V nach Strominjektion mit doppelter Stromamplitude für die
Zeit tpre erreicht wird.
• P reL (V ) – Die Helligkeit, die ausgehend von einer Spaltenspannung V
bei Strominjektion mit doppelter Stromamplitude für die Zeit tpre pro-
duziert wird.
• LumCIZ (V ) – Die Helligkeit, die ausgehend von einer Spaltenspan-
nung V bei Strominjektion mit einfacher Stromamplitude für die Zeit tpre
und nachfolgendem Nachleuchten für die Zeit trow −tpre produziert wird.
• ZV (V ) – Die Spaltenspannung, die ausgehend von einer Spaltenspan-
nung V nach Nachleuchten für die Zeit tpre erreicht wird.
• ZL (V ) – Die Helligkeit, die ausgehend von einer Spaltenspannung V
beim Nachleuchten für die Zeit tpre produziert wird.
• CIV (V ) – Die Spaltenspannung, die ausgehend von einer Spaltenspan-
nung V nach Strominjektion mit einfacher Stromamplitude für die
Zeit tpre erreicht wird.
Kapitel 2.3: SQC 31

• CIL (V ) – Die Helligkeit, die ausgehend von einer Spaltenspannung V


bei Strominjektion mit einfacher Stromamplitude für die Zeit tpre pro-
duziert wird.

1 I f LumZ (V1 ) > Lum Then


2 pretodo = DIS
3 V0 = 0
4 Lum0 = Lum
5 Else I f LumI (V1 ) < Lum Then
6 pretodo = P RE
7 V0 = P reV (V1 )
8 Lum0 = Lum − P reL (V1 )
9 Else I f LumCIZ (V1 ) > Lum Then
10 pretodo = Z
11 V0 = ZV (V1 )
12 Lum0 = Lum − ZL (V1 )
13 Else
14 pretodo = CI
15 V0 = CIV (V1 )
16 Lum0 = Lum − CIL (V1 )
17 End I f
18

19 (tinj , V1,i+1 ) = SQC(Lum0 , V0 , trow − tpre )

Listing 2.2: Der erweiterte Algorithmus zur Umsetzung des Treiberschemas SQC
in Pseudocode [25].

Der erweiterte Algorithmus findet sich in Listing 2.2. Dabei wird mit V1 die
Spaltenspannung am Anfang der Ansteuerung und mit Lum die Sollhelligkeit
bezeichnet. V0 und Lum0 bezeichnen die Spaltenspannung am Ende der An-
fangsphase bzw. die Restsollhelligkeit, die in der verbleibenden Zeit trow −tpre
nach der Anfangsphase noch erreicht werden muss.

In Zeilen 1 bis 4 wird zunächst überprüft, ob Discharge notwendig ist (pretodo =


DIS). Wenn ja, wird die Spaltenspannung V0 auf Null und die Restsollhellig-
keit Lum0 gleich der Sollhelligkeit Lum gesetzt, da während Discharge kein
Licht produziert wird.

Falls kein Discharge notwendig ist, wird überprüft, ob Precharge notwendig


ist (pretodo = P RE, Zeilen 5 bis 8). Wenn ja, werden mithilfe der LUTs P reV
bzw. P reL die Spaltenspannung V0 und Restsollhelligkeit Lum0 bestimmt.
Dabei gewährleistet der Code, dass die Summe der Helligkeit P reL (V1 ), die
während der Anfangsphase produziert wird, und der Restsollhelligkeit Lum0
gleich der Sollhelligkeit Lum ist.
Kapitel 2.3: SQC 32

Auf analoge Weise wird mithilfe der restlichen LUTs überprüft, ob Stro-
minjektion während der Anfangsphase unzulässig ist und Nachleuchten er-
forderlich ist (pretodo = Z, Zeilen 9 bis 12). Ansonsten gilt pretodo = CI (vgl.
Zeilen 13 bis 16).

Schließlich wird die in Listing 2.1, Zeilen 15 bis 38 vorgestellte iterative Suche
durchgeführt (hier als SQC bezeichnet, vgl. Zeile 19). Dabei ist zu beachten,
dass als Spaltenspannung die Spannung V0 , als Sollhelligkeit, die Helligkeit
Lum0 und als maximale Injektionszeit trow − tpre benutzt werden.
3 ZIELSETZUNG 33

3 Zielsetzung
Im Umfang vergangener Arbeiten am Lehrstuhl für Mikroelektronik wurde
ein Demonstrator entwickelt, an dem die erwartete Verlustleistungsoptimie-
rung bei SQC-Betrieb in der Praxis gezeigt werden konnte. Bei diesen Ver-
suchen wurde jedoch ein PC zur Erzeugung der Ansteuerungsdaten für den
Hardwareaufbau gemäß dem in Kapitel 2.3.2 aufgeführten Algorithmus be-
nutzt.

Der Einsatz eines PCs zur Durchführung der notwendigen Rechenarbeit ist
für die reale Anwendung nicht akzeptabel. Das Treiberschema SQC lässt
sich im Allgemeinen als eine zweidimensionale Lookup-Tabelle (LUT) reali-
sieren, die alle Kombinationen von Sollhelligkeit Lum und Spaltenspannung
V1,i enthält:

[tinj , V1,i+1 , pretodo ] = SQC-LU T [Lum, V1,i ] (3.1)

Diese 2D-LUT lässt sich sehr einfach im Vorfeld generieren und im ROM auf
dem Chip speichern. Aufgrund der Zweidimensionalität ist diese LUT sehr
groß. Der Speicheraufwand vervielfacht sich weiterhin durch die Notwendig-
keit je eine solche LUT pro unterstütze Displayhelligkeit zu speichern. Da
der sich ergebende ROM-Gesamtbedarf sehr hoch ist, wird diese Implemen-
tierungsmöglichkeit nicht weiter betrachtet.

Einen Ausweg bietet ein Prozessor, der aus 1D-LUTs parallel zur Display-
ansteuerung die zum SQC-Betrieb benötigten Daten generiert. Bei gleicher
Stützstellenanzahl sind die 1D-LUTs viel kleiner als die 2D-LUTs. In dieser
Arbeit muss untersucht werden, ob die Realisierung eines solchen Prozessors
als ASIC plausibel ist. Da die Prozessierung sehr rechenintensiv ist, werden
hohe Anforderung an das Hardwaredesign gestellt. Es muss eine bestimmte
Prozessierungsgeschwindigkeit erreichen und bezüglich der Fläche optimiert
werden.
• Prozessierungsgeschwindigkeit – Die Implementierung des Algorithmus
muss gewährleisten, dass ein Betrieb mit maximaler Bildwiederholfre-
quenz und maximaler Displaygröße möglich ist. Die gewünschte Dis-
playgröße ist 240 Zeilen × 320 Spalten. Dabei soll es möglich sein, ein
RGB1 Display anzusteuern. Aus der Anforderung für die Bildwieder-
holfrequenz ff rame = 100Hz und bei 240 Zeilen, lässt sich die Zeilen-
1
RGB – Rot, Grün, Blau. Damit wird ein Farbdisplay im Gegensatz zu einem Schwarz-
Weiß-Display gemeint.
3 ZIELSETZUNG 34

adressierzeit ausrechnen (analog zu Gl. (2.3)):


tf rame
trow,soll = ≈ 41, 7µs. (3.2)
240
Innerhalb dieser Zeit müssen die Werte für alle 320 Spalten und für alle
drei Farben prozessiert werden, insgesamt 320 · 3 = 960 Werte.
• Chipfläche – In der Mikroelektronik lässt sich im Allgemeinen die Pro-
zessierungsgeschwindigkeit auf Kosten der benötigten Chipfläche und
somit des Chippreises erhöhen. Um eine kostengünstige und effizien-
te Implementierung des Treiberschemas SQC zu realisieren, muss das
Hardwaredesign bezüglich der Chipfläche optimiert werden.
Ziel dieser Arbeit ist, das gesamte Treiberschema SQC in der Hardwarebe-
schreibungssprache Verilog zu implementieren und mithilfe des bestehenden
Demonstrators zu verifizieren. Der Gesamtaufbau ist systematisch in Abb. 3.1
dargestellt und wird im Folgenden kurz beschrieben.

Auf der PC-Seite werden Bilddaten mithilfe einer graphischen Benutzero-


berfläche über die RS-232/UART-Schnittstelle auf das FPGA übertragen.
Die Bilddaten werden auf dem FPGA im RAM „Image Data“ gespeichert.
Diese Daten werden auf dem FPGA prozessiert und parallel im SQC-Betrieb
und mittels des konventionellen Treiberschemas auf zwei Displays dargestellt.
Dies ermöglicht den direkten Vergleich des Energieverbrauchs und der Qua-
lität beider Treiberschemata.

Das Hardwaredesign wird des Weiteren um das Modul „Set Bright“ erwei-
tert, das die Darstellung eines Bildes in verschiedenen Displayhelligkeiten er-
möglicht. Da die Displayhelligkeit über die Amplitude des Spaltenstroms I0
gesteuert wird, müssen für jede Displayhelligkeit die Kurven aus Abb. 2.13
gemessen und im ROM gespeichert werden. Dies vervielfacht den Speicher-
aufwand. Der ROM-Bedarf lässt sich verkleinern, indem nur Stützpunkte
jeder Kurve im ROM-Speicher abgelegt werden.

Die Stützpunkte der Messdatensätze für die verschiedenen Displayhellig-


keiten, werden in den ROMs ROM0 . . . ROMk fest programmiert. Bei der
Wahl einer Displayhelligkeit i ∈ [0; k] werden aus ROMi im Betrieb die
vollständigen LUTs, die zum SQC-Betrieb notwendig sind, generiert und im
SRAM-Speicher hinterlegt. Dies erfolgt durch das Modul „Generate LUTs“.
Bei Wechsel der Displayhelligkeit werden die Daten im SRAM-Speicher über-
schrieben (dieser Prozess wird ausführlich in Kapitel 5.5 beschrieben). In
den beiden Modulen „Driver Logic“ werden die Displayansteuerungsdaten
3 ZIELSETZUNG 35

in Zeilen- und Spaltenadressiersignale umgesetzt, die dann direkt den „HW


Driver“ ansteuern.

PC FPGA Demonstrator

ROM0 ROMk
PC GUI Generate LUTs
Display 1
(SQC)
LUTs

Set Bright

UART
Driver
SQC
Image Data Logic HW
Driver

Conventional
Driving
Driver
Scheme Logic
Display 2
(Conventional
Driving
Scheme)
Gamma
Correction

Abb. 3.1: Blockschaltbild des SQC-Demonstrators.


Kapitel 4.1: Displaycharakterisierung 36

4 Material und Methoden


In diesem Kapitel wird die Methode, die zur Gewinnung der zum SQC-
Betrieb benötigten Messkurven benutzt wurde, vorgestellt. Danach wird die
Normierung und Diskretisierung der Messdaten besprochen. Es werden zwei
Algorithmen, die in dieser Arbeit benutzt und an die entsprechende An-
wendung angepasst wurden, ausführlich beschrieben. Schließlich wird auf die
theoretischen Grundlagen des Pipelinings eingegangen.

4.1 Displaycharakterisierung
Die Messdaten, die zum SQC-Betrieb benötigt werden, wurden bereits in
Kapitel 2.3.2 in Abb. 2.13 auf Seite 22 bzw. Abb. 2.15 auf Seite 29 vorgestellt.
In diesem Kapitel wird darauf eingegangen, wie sich diese gewinnen lassen.

4.1.1 Messaufbau

Treiberplatine

Spartan IIE
FPGA

Level Shifters

Display-Adapter

Osram 128x64
1.6'' OLED Display

Abb. 4.1: Messaufbau zur Charakterisierung von PMOLED-Displays (nach [26]).


Kapitel 4.1: Displaycharakterisierung 37

Der Aufbau, an dem die Messungen durchgeführt wurden, wurde im Rahmen


vergangener Arbeiten am Lehrstuhl für Mikroelektronik entwickelt und ist
in Abb. 4.1 dargestellt. Grundsätzlich besteht er aus einem OLED-Display,
das über eine Treiberschaltung von einem Digilent D2-FT System Board [27]
gesteuert wird. Das Board basiert auf einem Xilinx Spartan IIE FPGA. Das
vereinfachte Schaltbild der Treiberschaltung ist in Abb. 4.2 dargestellt und
wird im Folgenden kurz beschrieben.

Vcc

Vcc ≈ 14V
Vcomh = 8V
Spaltentreiber Vgate = 9V … 11,5V
Vdis = 2,5V
MAX313L MAX313L

3,3V Vcc R0=8,06k R1=8,06k R2=4,03k


Vcc

FPGA Level Shifter


col_ctrl BSS84p
HEF4069UB
MC14504 Vpre
Vgate

Spannungsprecharge - Schalter
MAX313L

Discharge - Schalter
MAX313L

Zeilentreiber
3,3V Vcomh
Vcomh
OLED-
Pixel

Vdis

FPGA
row_ctrl Level Shifter

HEF4069UB
MC14504

Abb. 4.2: Vereinfachtes Schaltbild der Treiberschaltung (nach [28]).

Der Spaltentreiber hat die Aufgabe gemäß dem FPGA-Steuersignal col_ctrl


die OLED-Spalten mit Strom zu treiben. Dies umfasst das An- und Abschal-
ten der Spaltenstromquelle, die aus dem PMOS Transistor BSS84p [29] und
einem Lastwiderstand besteht [30]. Die Amplitude des Spaltenstroms lässt
sich durch den Betrag des Lastwiderstandes und der Gatespannung Vgate ein-
stellen.

Für den Fall normaler Strominjektion mit einfacher Amplitude ist nur der
Kapitel 4.1: Displaycharakterisierung 38

Widestand R0 aktiv, so dass sich dabei die Stromamplitude I0 ergibt. Die


Stromamplitude lässt sich näherungsweise verdoppeln, indem durch einen
Schalter vom Typ M AX313L [31] der Widerstand R1 parallel zu R0 geschal-
tet wird, da sich durch die Parallelschaltung der Wert des Lastwiderstandes
halbiert. Die Parallelschaltung von R0 , R1 und R2 ergibt eine Stromampli-
tude von ≈ 4 · I0 .

Das FPGA kann die Stromquelle nicht direkt an- bzw. abschalten, da es
technologiebedingt nur zwischen den Logikpegeln LOW und HIGH schalten
kann. Mithilfe eines M C14504 Level Shifters wird HIGH in VCC ≈ 14V um-
gewandelt. Der HEF 4069U B Inverter [32] invertiert anschließend das Signal.
So wird das LOW Signal in VCC zum Abschalten der Stromquelle gewandelt.
Das HIGH Signal wird in Vgate < VCC gewandelt, was die Stromquelle an-
schaltet. Durch die Amplitude von Vgate lässt sich die Amplitude des Spalten-
stroms variieren. Bei Vgate ≈ 10V beträgt die Stromamplitude I0 ≈ 300µA.

Die Funktionsweise des Zeilentreibers ist sehr ähnlich zum Spaltentreiber.


Wird das FPGA-Signal row_ctrl HIGH, so wird die Zeile auf Masse gelegt.
Wird row_ctrl dagegen LOW, so wird die Zeile auf die Spannung Vcomh = 8V
gelegt, so dass die Schwellenspannung der nicht selektierten OLEDs unter-
schritten wird (vgl. Kapitel 2.2.1). Dabei arbeitet der Inverter gleichzeitig als
Zeilentreiber.

Der Messaufbau verfügt noch über die Funktion einen Discharge und einen
Spannungsprecharge durchzuführen. Beim Discharge wird die OLED-Anode
an die Dischargespannung gelegt, beim Spannungsprecharge an die Precharge-
spannung. Spannungsprecharge wird zur Charakterisierung des Nachleuch-
tens benutzt. Die Discharge- und die Prechargespannung lassen sich an ex-
ternen Labor-Netzteilen einstellen.

4.1.2 Messvorgang
Das Ziel der Messung ist, die zeitlichen Verläufe der erreichten Pixelhellig-
keit und der Spaltenspannung bei Strominjektion mit einfacher und doppelter
Stromamplitude sowie beim Nachleuchten zu bestimmen. Dazu wird das Dis-
play in verschiedenen, speziellen Messmodi betrieben.

Obwohl die Messkurven des zeitlichen Verlaufs der erreichten Pixelhellig-


keit (Lum-Inj(t), Lum-P ost(t) und Lum-P re(t)) bei der Prozessierung so
benutzt werden, als wären sie an einem einzigen Pixel gemessen, werden bei
der Charakterisierung über 100 Pixel zusammen vermessen. Dies hat den
Kapitel 4.1: Displaycharakterisierung 39

Vorteil, dass sich dabei die Schwankungen der einzelnen Pixel ausgleichen
und dass man durch die Summierung ein stärkeres Signal erhält, das sich
besser messen lässt. Die Messungen werden an einem „all-on“ Bild (alle Pi-
xel gleich angesteuert) durchgeführt.

Im Rahmen dieser Arbeit wurde ein Hardwaredesign in der Hardwarebe-


schreibungssprache Verilog entwickelt, das die Aufgabe der Displayansteue-
rung in den speziellen Messmodi erfüllt. Das Design besteht grundsätzlich
aus einem UART-Modul [33], welches die Kommunikation zu einem PC er-
möglicht, und aus einem Treiber-Modul, welches das Display ansteuert. Der
Messmodus und die aktive Zeit werden mittels einer GUI am PC vorgegeben
(vgl. Abb. 4.3). Unter „Measurement mode“ wählt man den gewünschten
Messmodus aus:
• Injection Luminance – Zur Messung von Lum-Inj(t) und State-Inj(t).
• Post Luminance – Zur Messung von Lum-P ost(t) und State-P ost(t).
• Current Precharge 1 – Zur Messung von Lum-P re(t) und State-P re(t).
Unter „Active time“ gibt man einen tlsb -Faktor ein (vgl. auch Gl. (2.5) auf
Seite 13), der über Drücken des Knopfs „Send“ an das FPGA übertragen
wird. Dieser bestimmt die aktive Zeit, während welcher die in dem jeweiligen
Messmodus zu vermessende Phase (Injektion, Nachleuchten bzw. Precharge)
aktiv ist. Für die aktive Zeit tactive ergibt sich mit dem tlsb -Faktor i:
tactive = i · tlsb . (4.1)

Abb. 4.3: Die graphische Benutzeroberfläche getluts die im Rahmen dieser Arbeit
zur Steuerung der Messhardware in C# .NET entwickelt wurde.

Die Parameter der seriellen Kommunikation wurden zu Baudrate 115,2kbps,


Kapitel 4.1: Displaycharakterisierung 40

1 Stop Bit, 8 Datenbits und keine Parität festgelegt. Das Kommunikations-


protokoll zwischen PC und FPGA wurde möglichst einfach realisiert. Jedes
gesendete 8-Bit Zeichen entspricht einem Kommando. Als einfache Übertra-
gungsfehlerkontrolle wird das gleiche Zeichen im Anschluss vom FPGA zum
PC übertragen. Falls es mit dem ursprünglichen Zichen übereinstimmt, so
war die Kommunikation erfolgreich. Die möglichen Kommandos sind:
• 0 . . . 63 – Wenn eine Zahl zwischen 0 und 63 übertragen wird, wird der
tlsb -Faktor i dieser Zahl gleichgesetzt (für die aktive Zeit ergibt sich
tactive = 0 . . . 63 · tlsb ).
• 253 – Wenn die Zahl 253 übertragen wird, wird der Messmodus Post
Luminance aktiviert.
• 254 – Wenn die Zahl 254 übertragen wird, wird der Messmodus Current
Precharge 1 aktiviert.
• 255 – Wenn die Zahl 255 übertragen wird, wird der Messmodus Injec-
tion Luminance aktiviert.
Die Displayansteuerung erfolgt ähnlich zum konventionellen Treiberschema.
Es wird eine niedrige Bildwiederholfrequenz von ff rame = 25Hz (also lan-
1
ge Zeilenadressierzeit wegen trow ∼ ff rame ) benutzt, damit die vollständige
Messkurve innerhalb trow erfasst werden kann.

Abb. 4.4a illustriert die Spaltenansteuerung und die gemessenen Kurven für
tactive = 8 · tlsb (durchgezogen) und tactive = 63 · tlsb im Modus Injection Lumi-
nance zur Messung von Lum-Inj und State-Inj. Die Ansteuerung besteht
aus Strominjektion während tactive = i · tlsb und einem Discharge während der
restlichen Zeit. Dabei wird über die GUI der Wert für i von 0 bis 30 variiert1 .
Zu jedem tactive [i] werden Lum-Inj[tactive ] und State-Inj[tactive ] aufgenom-
men.

Die Ansteuerung im Modus Current Precharge 1 zur Messung von Lum-P re


und State-P re erfolgt analog, jedoch mit betätigtem Schalter zur Stromver-
dopplung. Die Messung wurde nur für i ∈ [0; 6] durchgeführt, da für längere
Zeiten Gefahr für den Zeilentreiber und das Display bestand2 . Da bei dieser
Messung der Anstieg der Spaltenspannung sehr steil ist und somit alle Zu-
stände bekannt waren, war keine längere Messung nötig.
1
Obwohl i > 30 auch denkbar ist, wurden keine so hohen Werte bei der Injektions-
messung gebraucht. Die Werte i > 30 sind jedoch wichtig für das Nachleuchten wegen
des flachen logarithmischen Abfalls der Spaltenspannung, der sogar länger als trow,25Hz
ist (vgl. State-P ost(t) in Abb. 4.4 b).
2
Im Laufe der Messung haben infolge zu langer Injektion mit doppelter Stromamplitude
mehrere Inverter HEF 4069U B, die grenzwertig betrieben wurden, versagt.
Kapitel 4.1: Displaycharakterisierung 41

trow
(100Hz)

Lum-Inj(t) t

Vcol, max Vcol, max

State-Inj(t)

a INJ DIS DIS INJ DIS DIS

tmeas = 8tlsb tmeas = 30tlsb trow = 63tlsb

Lum-Post(t) Lumoffset t

Vcol, max

State-Post(t)

b PRE POST DIS PRE POST DIS

tmeas = 8tlsb trow = 63tlsb

Abb. 4.4: Veranschaulichung der Ansteuerung in den Messmodi bei einer Bild-
wiederholfrequenz ff rame = 25Hz (qualitativ, vereinfacht): Stromin-
jektion (a) und Nachleuchten (b). Das graue Rechteck oben links il-
lustriert den Zeitbereich, der innerhalb einer Zeilenadressierzeit bei
ff rame = 100Hz durchlaufen wird.

Der Modus Post Luminance zur Messung von Lum-P ost und State-P ost
unterscheidet sich von den anderen Modi darin, dass während der aktiven
Zeit tactive anstatt injiziert, nachgeleuchtet wird und dann ein Discharge ge-
macht wird (vgl. Abb. 4.4b).

Das Nachleuchten erfolgt ab einer Spannung Vcol,max , die dem Maximalwert


entspricht, der beim Injizieren erreicht wird. Dazu muss die Spalte zuerst
über den Spannungsprecharge-Schalter auf die am externen Netzteil einge-
stellte Spannung aufgeladen werden. Da während dieser Prechargezeit tpre
Licht emittiert wird, erhält man auch für die aktive Zeit tactive = 0 eine
Helligkeit
Lum-P ost[0] = Lumoffset 6= 0. (4.2)
Kapitel 4.1: Displaycharakterisierung 42

Dieser Offset muss nachträglich von den Messwerten abgezogen werden:

Lum-P ost[i] = Lum-P ost[i] − Lumoffset , i ∈ [0, 63]. (4.3)

Abb. 4.5: Picoammeter Keithley 6485 (links) und Photodiode Newport 818-SL-L
(rechts) [34, 35].

Zur Messung der Lum-Kurven wurden eine Photodiode der Firma New-
port und ein Picoammeter der Firma Keithley Instruments benutzt (vgl.
Abb. 4.5). Dazu wird der mittlere Wert des Lichtstroms gemessen (vgl. Ka-
pitel 2.1.5). Dazu wird der Lichtstrom über eine gewisse Integrationszeit
tint  trow integriert und gemittelt.

t [µs] Lum [µA] State [V ]


t[0] = 0 · tlsb Lum[0] State[0]
t[1] = 1 · tlsb Lum[1] State[1]
t[2] = 2 · tlsb Lum[2] State[2]
.. .. ..
. . .
t[j] = i · tlsb Lum[j] State[j]
.. .. ..
. . .
t[51] = 57 · tlsb Lum[51] State[51]
t[52] = 60 · tlsb Lum[52] State[52]
t[53] = 63 · tlsb Lum[53] State[53]

Tabelle 4.1: Struktur der Messdaten. Jedem Messwert j ist ein kontinuierlicher
Zeitpunkt i · tlsb , eine kontinuierliche Helligkeit Lum[j] und eine
kontinuierliche Spaltenspannung State[j] zugeordnet.

Zur Messung der State-Kurven wurde ein Agilent InfiniiVision 5000 Digital-
speicheroszilloskop [36] benutzt. Dazu wurde zu jeder aktiven Zeit tactive [i]
Kapitel 4.2: Normierung und Diskretisierung der Messdaten 43

der Maximalwert der Spaltenspannung aufgenommen. Dabei musste beach-


tet werden, dass das Oszilloskop auf ein Zeilensignal getriggert wurde, damit
immer das gleiche Pixel vermessen wird.

Tabelle 4.1 veranschaulicht die Struktur der so erhaltenen Messdaten. Im Be-


reich großer Faktoren i verlaufen die Messkurven linear. Da die Messkurven
in weiteren Bearbeitungsschritten mit höherer Auflösung linear interpoliert
werden (vgl. Kapitel 4.3.2 und Kapitel 5.2), wird in diesem Bereich der i-
Schritt erhöht (vgl. die letzten drei Werte in Tabelle 4.1). So lassen sich die
Messkurven durch weniger Stützpunkte beschreiben, was im weiteren Digi-
taldesign vorteilhaft ist.

4.2 Normierung und Diskretisierung der Messdaten


Im vergangenen Kapitel wurde die Methode präsentiert, die zur Gewinnung
der Messdaten benutzt wurde. Die physikalischen Messdaten für die Pixelhel-
ligkeit wurden in der Einheit Mikroampere, die für die Spaltenspannung in
der Einheit Volt und für die Zeit in der Einheit Mikrosekunde aufgenommen.

Während die Angabe der Einheit im Allgemeinen sehr wichtig für das abso-
lute Maß einer Größe ist, lässt sie sich im geschlossenen System des Treiber-
schemas SQC ohne Weiteres auslassen (solange man Pixelhelligkeit, Spalten-
spannung und Zeit nicht verwechselt). Die Messdaten, die als reelle Zahlen
vorliegen, müssen für eine effiziente Implementierung in Hardware in natür-
liche Zahlen umgewandelt werden. Um dabei eine optimale Auflösung zu
erhalten, müssen sie zuerst geeignet normiert werden.

Im Rahmen dieser Arbeit wurde eine 8-Bit Auflösung sowie für die Pixelhel-
ligkeit als auch für die Spaltenspannung und die Ansteuerungszeit benutzt.
Analog zu Kapitel 2.2.1 ergibt sich somit bei einer Bildwiederholfrequenz von
ff rame = 100Hz für die Zeilenadressierzeit trow,100Hz ≈ 156µs (Gl. (2.3)) und
für tlsb,100Hz = 2tkrow
−1
≈ 612ns (Gl. (2.5) mit q = 2k − 1 mit k = 8 für 8-Bit
Auflösung). Die Zeit lässt sich folgendermaßen auf trow,100Hz normieren:

t0 = 0µs = tdiscrete,min = 0; (4.4)

trow,100Hz = 156µs = tdiscrete,max = 255. (4.5)

Gl. (4.4, 4.5) lassen sich verallgemeinern zu:


!
tcont
tdiscrete = round , (4.6)
tlsb,100Hz
Kapitel 4.2: Normierung und Diskretisierung der Messdaten 44

wo tdiscrete die diskretisierte und tcont die kontinuierliche Zeit ist. Dabei be-
zeichnet die Funktion round das Runden einer reellen Zahl zu einer natürli-
chen Zahl.

An dieser Stelle lässt sich noch anmerken, dass die Zeit tdiscrete = 255 der Zeit
trow,100Hz entspricht (vgl. graues Rechteck in Abb. 4.4). Die LUTs enthalten
jedoch auch Zeiten tdiscrete > 255, welche für die Berechnung notwendig sind.

Wegen der Erweiterung des SQC-Algorithmus (vgl. Kapitel 2.3.3) ist bei der
Normierung der Pixelhelligkeit eine Besonderheit zu beachten. Um die ma-
ximale Pixelhelligkeit zu berechnen, die innerhalb trow,100Hz erreicht werden
kann, muss man folgende Punkte berücksichtigen:
• Es muss möglich sein, ab der minimalen Spaltenspannung Vcol = Vdis
diese maximale Helligkeit zu erreichen.
• Die maximale Helligkeit wird erreicht, indem man während der An-
fangsphase Stromprecharge mit doppelter Stromamplitude und wäh-
rend der restlichen Zeit Strominjektion mit einfacher Stromamplitude
macht.
Die Helligkeit, die beim Precharge während der Anfangsphase erreicht wird,
errechnet sich zu:
Lumpre = Lum-P re(tpre ). (4.7)
Die Spaltenspannung am Ende der Anfangsphase beträgt:

Vcol,pre = State-P re(tpre ). (4.8)

Dies entspricht dem Zeitoffset in Lum-Inj:

tpre,inj = State-Inj-Inverse(Vcol,pre ). (4.9)

Die Helligkeit, die bei der Injektion während der restlichen Zeit erreicht wird,
errechnet sich zu:

Luminj = Lum-Inj(tpre,inj + (trow − tpre )) − Lum-Inj(tpre,inj ). (4.10)

Aus der Summe von Gl. (4.7) und Gl. (4.10) ergibt sich die maximale Hel-
ligkeit:
Lummax = Lumpre + Luminj . (4.11)
Somit gilt für die kleinste betrachtete Helligkeitsänderung:
Lummax
Lumlsb = . (4.12)
255
Kapitel 4.3: Algorithmen 45

Analog zu Gl. (4.6) verallgemeinert sich die Diskretisierung einer kontinuier-


lichen Pixelhelligkeit Lumcont zur diskreten Pixelhelligkeit Lumdiscrete :
Lumcont
 
Lumdiscrete = round . (4.13)
Lumlsb
Analog zu t sind auch bei Lum Werte Lumdiscrete > 255 zulässig. Diese sind
in den LUTs enthalten und notwendig für die Berechnung.

Die Normierung und Diskretisierung der Spaltenspannung erfolgt sehr ähn-


lich. Dabei muss man beachten, dass die niedrigste Spannung, die angenom-
men werden kann die Dischargespannung Vdis > 0V ist. Wenn man also alle
Spannungen von 0V bis zu der maximal auftretenden Spannung Vcol,max auf
8-Bit abbildet, würde man die Spannungen 0V ≤ V < Vdis unnötig abbil-
den. So wirkt sich die Dischargespannung als ein ungewünschter Offset aus.
Zugunsten einer effizienten Implementierung eliminiert man diesen Offset, in-
dem man von jedem Messwert die Dischargespannung abzieht und darauf die
Messdaten normiert und diskretisiert. Für die kleinste auflösbare Änderung
ergibt sich:
Vcol,max − Vdis
Vlsb = . (4.14)
255
Allgemein ergibt sich für die Diskretisierung der kontinuierlichen Spalten-
spannung Vcont :
Vcont − Vdis
 
Statediscrete = round . (4.15)
Vlsb
Aus algorithmischer Sicht stellt das Ergebnis dieser Umwandlung keine phy-
sikalische Spannung dar. Deswegen wird es auch als State (engl. für Zustand)
bezeichnet.

4.3 Algorithmen
In diesem Kapitel werden zwei Algorithmen beschrieben, die wegen ihrer ho-
hen Effizienz in dieser Arbeit Anwendung fanden. Das sind die binäre Suche
und der Bresenham-Linienalgorithmus. Die binäre Suche ist ein Algorith-
mus zur Suche der Adresse eines Elements in einem sortierten Feld. Der
Bresenham-Linienalgorithmus wurde im Rahmen dieser Arbeit für lineare
Interpolation und Berechnung der inversen Zustand-LUTs benutzt.

4.3.1 Binäre Suche


Die binäre Suche (engl. Binary Search) ist ein Algorithmus, der in einem
sortierten Feld sehr schnell ein Element mit einem gesuchten Wert findet.
Kapitel 4.3: Algorithmen 46

Bei Nichtvorhandensein des gesuchten Wertes im Feld, findet die binäre Su-
che das Element mit dem nächstliegenden Wert. Der Algorithmus baut auf
das Grundprinzip „teile und herrsche“ auf. In dieser Arbeit findet die binäre
Suche Anwendung als Grundlage des Algorithmus zur Umsetzung des Trei-
berschemas SQC (vgl. Kapitel 2.3.2). Der Pseudocode zur Standardform des
Algorithmus findet sich in Listing 4.1 und wird danach in Worten erläutert.

Sei array ein Feld, das aus n + 1 Elementen besteht, die monoton steigend
sortiert sind: array[0] ≤ array[1] ≤ · · · ≤ array[n]. Sei x der Wert, dessen
Adresse im Feld gesucht ist. Der Wert x muss nicht unbedingt im Feld ent-
halten sein.
Zunächst wird der Bereich, der durchsucht werden muss, initialisiert. Für den

1 minaddr = 0
2 maxaddr = n
3 ∆best = MAX_NUMBER // the largest number for this resolution
4 While minaddr ≤ maxaddr Do
5 midaddr = minaddr + ((maxaddr − minaddr ) >> 1);
6 I f x > array[midaddr ] Then
7 minaddr = midaddr + 1
8 Else I f x < array[midaddr ] Then
9 maxaddr = midaddr − 1
10 Else I f x == array[midaddr ] Then
11 addrout = midaddr
12 Break
13 End I f
14
15 I f |x − array[midaddr ]| < ∆best Then
16 ∆best = |x − array[midaddr ]|
17 addrout = midaddr
18 End I f
19 End While

Listing 4.1: Leicht modifizierte Standardform des Algorithmus binäre Suche


(nach [37]).

Adressenraum des untersuchten Bereichs gilt addr ∈ [minaddr ; maxaddr ]. Am


Anfang muss das ganze Feld durchsucht werden (Zeilen 1 bis 2 in Listing 4.1).
Anhand der Grenzen des Bereichs wird die Adresse des mittleren Elements
bestimmt (Zeile 5). Der Wert des mittleren Elements wird mit dem gesuchten
Wert x verglichen. Ist x gleich dem mittleren Wert, so ist die Suche erfolg-
reich und wird abgebrochen. Für die gesuchte Adresse gilt addrout = midaddr
(Zeilen 10 bis 12).
Kapitel 4.3: Algorithmen 47

Ist x größer als der mittlere Wert, so befindet sich die gesuchte Adresse
in der oberen Hälfte des Feldes (da die Elemente monoton steigend sind).
In diesem Fall wird die untere Grenze minaddr aktualisiert (Zeile 7). Analog
wird für x < array[midaddr ] die obere Grenze aktualisiert (Zeile 9). Somit
halbiert sich näherungsweise die Größe des zu durchsuchenden Bereichs bei
jeder Iteration.

Bei jeder nicht erfolgreicher Iteration wird auch der absolute Fehler zwischen
dem untersuchten Wert array[midaddr ] und dem gesuchten Wert x berechnet
und mit dem kleinsten Wert der bereits überprüften Werte ∆best verglichen.
Ist er kleiner, so werden ∆best und die Adresse des besten Wertes addrout
aktualisiert (Zeilen 15 bis 18). Die Suche wird abgebrochen, sobald minaddr
größer als maxaddr wird, d.h. der verbleibende Suchraum eine leere Menge
ist.
Ite A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 |∆|
1 061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908 109
2 061 087 154 170 275 426 503 230
3 275 426 503 26
4 275 125

Tabelle 4.2: Binäre Suche des Wertes x = 400 im Feld A bestehend aus 16 Ele-
menten A0 . . . A15 . Dabei gilt 400 6∈ A. Der fettgedruckte Wert ist
der bei der jeweiligen Iteration (abgekürzt „Ite“) untersuchte Wert
(nach [38]). In der rechten Spalte ist der jeweilige absolute Fehler
angegeben.

Dies wird anhand des Beispiels der Suche des Wertes x = 400 im Feld A
aus Tabelle 4.2 erläutert. In der ersten Iteration gilt für den mittleren Wert
509 > 400. Daher muss in der zweiten Iteration nur die erste Hälfte des In-
tervalls durchsucht werden. Nach zwei weiteren Intervallhalbierungen besteht
das Intervall aus lediglich einem Element. Danach wird die Suche abgebro-
chen.

Der Verlauf der binären Suche ist im Suchbaum in Abb. 4.6 veranschaulicht.
Die Suche ergibt somit A4 < 400 < A5 . Da im Algorithmus der absolute Feh-
ler |∆| jedes untersuchten Wertes berechnet wird, liefert die Suche die Adresse
des Elements, bei dem der Fehler minimal ist (in diesem Fall A5 = 426 mit
|∆| = 26).

Im Allgemeinen benötigt die binäre Suche im ungünstigsten Fall (wenn der


Kapitel 4.3: Algorithmen 48

7
3 11
1 5 9 13

0 2 4 6 8 10 12 14

<0 0<x<1 1<x<2 2<x<3 3<x<4 4<x<5 5<x<6 6<x<7 7<x<8 8<x<9 9<y<10 10<x<11 11<y<12 12<x<13 13<x<14 15

14<x<15 >15

Abb. 4.6: Graphische Darstellung des Suchbaums einer binären Suche. Die Num-
mern in Kreisen entsprechen der Adresse des untersuchten Elements.
Die Bedingungen in Rechtecken gelten für den Fall, dass der gesuch-
te Wert im Feld nicht enthalten ist. Das Beispiel aus Tabelle 4.2 ist
dargestellt in grün (nach [38]).

gesuchte Wert im Feld nicht vorhanden ist) für ein Feld, bestehend aus n
Elementen
blog2 (n)c + 1 (4.16)
Iterationen. Dabei stellt b·c die Abrundungsfunktion auf die nächstkleinere
ganze Zahl dar. Es existiert keine andere Suchmethode basierend auf Ver-
gleichen, die schneller ist [38].

Bisher wurde nur der Fall eines Feldes bestehend aus monoton steigenden
Elementen behandelt. Im Allgemeinen lässt sich der Algorithmus durch klei-
ne Modifikation auch auf den Fall monoton fallend sortierter Felder anpassen.
Dazu werden Zeilen 6 bis 9 in Listing 4.1 durch den Pseudocode in Listing 4.2
ersetzt.
1 I f x > array[midaddr ] Then
2 maxaddr = midaddr + 1
3 Else I f x < array[midaddr ] Then
4 minaddr = midaddr − 1
5 ...

Listing 4.2: Modifikation für den Fall fallend sortierter Felder.

Uniform Binary Search


Im Folgenden wird eine weitere Form der binären Suche vorgestellt – Uni-
form Binary Search. Diese Version hat den Vorteil, dass sie genau so schnell
Kapitel 4.3: Algorithmen 49

wie die Standardversion ist, aber ein Register weniger benötigt. Somit lässt
sie sich effizienter implementieren.

Die Grundidee besteht darin, dass man anstatt drei Adressen, nämlich minaddr ,
midaddr und maxaddr nur eine Adresse addr des untersuchten Elements und
ihre Änderung ∆addr speichert [38–40]. Der entsprechende Pseudocode findet
sich in Listing 4.3 (die Berechnung des absoluten Fehlers ∆best wurde zur
Vermeidung unnötiger Wiederholung ausgelassen).
1 addr = ( ( n + 1 ) >> 1 ) − 1
2 ∆addr = n >> 1
3 While ∆addr > 0
4 I f x > array [ addr ] Then
5 addr = addr + ((∆addr + 1) >> 1)
6 ∆addr = ∆addr >> 1
7 Else I f x < array [ addr ] Then
8 addr = addr − ((∆addr + 1) >> 1)
9 ∆addr = ∆addr >> 1
10 Else
11 Break
12 End I f
13 End While

Listing 4.3: Der Algorithmus Uniform Binary Search (nach [38, 39]).

Während diese Ausführung der binären Suche ein Register weniger als die
Standardform benötigt, hat sie den Nachteil, dass sie für gerade Zahl von
Elementen manchmal auf das nicht existierende Element array[−1] zugreift
und oft bei Nichtvorhandensein des Elements im Feld einen redundanten Ver-
gleich macht [38]. Da dies bei der Hardwareimplementierung problematisch
ist, wurde in dieser Arbeit die saubere allgemeingültige Standardform der
binären Suche bevorzugt.

4.3.2 Bresenham-Linienalgorithmus
Die nach der Methode in Kapitel 4 gewonnenen Messdaten werden auf dem
Chip im ROM gespeichert. Da viele Kurven für verschiedene Displayhellig-
keiten abgespeichert werden müssen, ist es vorteilhaft, wenn man nur wenige
wichtige Stützpunkte für jede Kurve im ROM speichern kann.

Die vollständigen LUTs lassen sich aus den Stützpunkten mithilfe linearer
Interpolation auf dem Chip erzeugen und stehen im SRAM für die Berech-
nung der aktuellen Displayhelligkeit zur Verfügung. Als Beispiel kann man
Kapitel 4.3: Algorithmen 50

den linearen Verlauf der LUT Lum-Inj, dargestellt in Abb. 2.13 auf Seite 22,
betrachten. Da der Verlauf der LUT in einem weiten Bereich linear ist, lässt
er sich durch nur zwei Punkte im ROM beschreiben.

Diese ROM-Speicherbedarfoptimierung lässt sich mithilfe der linearen In-


terpolation verwirklichen. Sie hat folgende allgemeine Form:
y1 − y0
y(x) = · (x − x0 ) + y0 . (4.17)
x1 − x0
Während die lineare Interpolation ein relativ einfacher Algorithmus ist, er-
gibt sich ihre Implementierung in Hardware wegen der notwendigen Division
und Multiplikation als problematisch. Einen Ausweg bietet der Bresenham-
Linienalgorithmus.

Der Bresenham-Linienalgorithmus3 wurde 1962 von Jack Bresenham (da-


mals Programmierer bei IBM) entwickelt [41]. Der Algorithmus diente zum
Zeichnen von Geraden auf Rasteranzeigen und wird immer noch dank seiner
Effizienz als grundlegender Baustein in vielen modernen grafischen Biblio-
theken und Grafikprozessoren benutzt.

Die Effizienz des Bresenham-Linienalgorithmus besteht darin, dass er die


lineare Interpolation aus Gl. (4.17) ohne die teuren Operationen Division
und Multiplikation mit Gleitkommazahlen durchführen kann. Anstatt dessen
benutzt er nur Integer Addition und Subtraktion und bitweise Operatoren.
Diese Operationen lassen sich sehr einfach und schnell in Hardware realisie-
ren.

Im Folgenden wird der Bresenham-Linienalgorithmus mathematisch hergelei-


tet. Danach wird der Algorithmus in Pseudocode dargestellt und erklärt. Auf
Basis dessen wird eine Erweiterung des Algorithmus vorgeschlagen, die den
Zwecken dieser Arbeit angepasst ist. Schließlich wird auf die Besonderheiten
der Hardware-Implementierung eingegangen.

Mathematische Herleitung
Ziel des Algorithmus ist, eine Gerade auf ein Raster abzubilden. Sei dies die
Gerade mit Startpunkt (x0 ; y0 ) und Endpunkt (x1 ; y1 ) aus Abb. 4.7. Diese
3
Bresenham-Linienalgorithmus – Neben dem Bresenham-Linienalgorithmus existiert
auch der Bresenham-Kreisalgorithmus, der zum Zeichnen von Kreisen auf Rasteranzeigen
entwickelt wurde.
Kapitel 4.3: Algorithmen 51

(x1;y1)

(x0;y0)

Abb. 4.7: Zeichnen einer Geraden mit Startpunkt (x0 ; y0 ) und Endpunkt (x1 ; y1 )
auf einem Raster. Die grau markierten Rasterpunkte sind die vom
Bresenham-Linienalgorithmus berechneten Punkte (nach [42]).

Gerade erfüllt die Geradengleichung


y1 − y0 dy
y = m · x, mit Steigung m = = . (4.18)
x1 − x0 dx
Zuerst wird der Algorithmus für den einfachen Sonderfall einer Geraden mit
Steigung 0 ≤ m ≤ 1 und mit x1 ≥ x0 , y1 ≥ y0 hergeleitet. Dies bedeutet, dass
wenn man sich um einen Rasterpunkt in positive x-Richtung verschiebt, sich
die y-Koordinate der Geraden um nicht mehr als einen Rasterpunkt in posi-
tive y-Richtung verschiebt. Die Aufgabe des Algorithmus ist, bei Erhöhung
der x-Koordinate um eins, den entsprechenden y-Punkt, der am nächsten zur
Geraden liegt, zu wählen.

Die kontinuierliche y-Koordinate, die zur x-Koordinate x0 + 1 gehört, be-


rechnet sich nach Gl. (4.18) zu

ycont (x0 + 1) = m · (x0 + 1). (4.19)

Wegen m ≤ 1 gilt:
y0 ≤ y(x0 + 1) ≤ y0 + 1. (4.20)
Der Algorithmus muss also berechnen, welche y-Koordinate der x-Koordinate
x0 + 1 gehört: y0 oder y0 + 1. Da der Rasterabstand 1 ist, ist der maximal
zulässige Fehler der y-Koordinate emax = 21 . Die x-Koordinate ist immer ex-
akt korrekt. Folglich genügt es, wenn man den Fehler betrachtet und die
y-Koordinate um 1 erhöht, wenn der akkumulierte Fehler e > emax wird.
Kapitel 4.3: Algorithmen 52

Der akkumulierte Fehler e lässt sich nach folgender Gleichung aus dem ak-
tuellen kontinuierlichen Wert ycont und dem y-Wert auf dem Raster ygrid
ausrechnen:

ygrid + e = ycont
e = ycont − ygrid . (4.21)

Wenn x um 1 erhöht wird, muss nach Gl. (4.18) ycont um m erhöht werden.
Der Rasterwert ygrid kann dagegen entweder unverändert bleiben, oder um 1
erhöht werden. Bleibt ygrid unverändert, so muss der akkumulierte Fehler e
um m erhöht werden:
enext = e + m. (4.22)
Wird ygrid um 1 erhöht, so muss man vom akkumulierten Fehler e eins ab-
ziehen:
enext = e − 1. (4.23)
Listing 4.4 beschreibt dies in Pseudocode.
1 e = 0// d e r e r s t e Punkt g e h o e r t z u r Geraden , d e s h a l b F e h l e r=0
2 xcurrent = x0
3 ycurrent = y0
4 dx = x1 − x0
5 dy = y1 − y0
6 m = dy/dx
7 While xcurrent ≤ x1
8 [xout , yout ] = [xcurrent , ycurrent ]
9 xcurrent = xcurrent + 1
10 e = e +m
11 I f e > 0 . 5 Then
12 ycurrent = ycurrent + 1
13 e = e − 1
14 End I f
15 End While

Listing 4.4: Grundsätzliche Funktionsweise des Bresenham-Linienalgorithmus


[43].

Effizienzoptimierung
Während der Algorithmus aus Listing 4.4 die Interpolationsaufgabe erfolg-
reich löst, lässt er sich nicht ohne Weiteres in Hardware umsetzen. Das liegt
daran, dass er die Division m = dy/dx enthält und mit den Gleitkommazah-
len m, e und 0,5 arbeitet.

Diese Operationen lassen sich durch folgende Umwandlungen eliminieren.


Kapitel 4.3: Algorithmen 53

Wenn man Gl. (4.22) und die If-Abfrage aus Zeile 11 und Zeile 13 in Lis-
ting 4.4 links und rechts mit −(dx) multipliziert ergibt sich:

−e · dx = −e · dx − m · dx = −e · dx − dy; (4.24)
If (−e · dx < (−dx >> 1)) Then . . . ; (4.25)
−e · dx = −e · dx + dx. (4.26)

Man substituiert edx := −e · dx und setzt den Startwert des akkumulierten


Fehlers zu edx = dx >> 1. Um die Logik des Algorithmus zu behalten, muss
man Gl. (4.25) folgendermaßen umformen [44]:

If (edx < 0) Then . . . . (4.27)

Somit lässt sich der Algorithmus, wie in Listing 4.5 angegeben, umschreiben.
1 xcurrent = x0
2 ycurrent = y0
3 dx = x1 − x0
4 dy = y1 − y0
5 edx = dx >> 1
6 While xcurrent ≤ x1
7 [xout , yout ] = [xcurrent , ycurrent ]
8 xcurrent = xcurrent + 1
9 edx = edx − dy
10 I f edx < 0 Then
11 ycurrent = ycurrent + 1
12 edx = edx + dx
13 End I f
14 End While

Listing 4.5: Verbesserte Version des Bresenham-Linienalgorithmus.

Erweiterung für alle Steigungen


Während diese Version sich sehr einfach und effizient in Hardware realisieren
lässt, ist sie, wie bereits erwähnt, nur auf den Sonderfall Geradensteigung
0 ≤ m ≤ 1 begrenzt. Im Code in Listing 4.6 wurde eine Erweiterung vorge-
nommen, durch die der Algorithmus auch für die Fälle m < 0 und |m| > 1
funktioniert [45].

Die grundsätzliche Idee hinter dieser Erweiterung besteht darin, durch Spie-
gelung und Vertauschen der x- und y-Koordinaten, die vorliegende Gerade
in den Fall 0 ≤ |m| ≤ 1 überzuführen. Dazu wird zunächst die Steigung m
der Geraden bestimmt (vgl. Zeilen 1 bis 5). Für den Fall |m| > 1 werden die
x- und y-Achse vertauscht (vgl. Zeilen 6 bis 10). Die sich ergebende Gerade
Kapitel 4.3: Algorithmen 54

1 steep = 0
2 I f |y1 − y0 | > |x1 − x0 | Then
3 // wenn S t e i g u n g m > 1
4 steep = 1
5 End I f
6 I f s t e e p == 1 Then
7 // wenn S t e i g u n g m > 1 , v e r t a u s c h e x und y
8 swap(x0 , y0 )
9 swap(x1 , y1 )
10 End I f
11 I f x0 > x1 Then
12 // e r s t e r F a l l S t e i g u n g m < 0
13 swap(x0 , x1 )
14 swap(y0 , y1 )
15 End I f
16 I f y0 > y1 Then
17 // z w e i t e r F a l l S t e i g u n g m < 0
18 ystep = 0
19 Else
20 ystep = 1
21 End I f
22

23 xcurrent = x0
24 ycurrent = y0
25 dx = x1 − x0
26 dy = y1 − y0
27 edx = dx >> 1
28 While xcurrent ≤ x1
29 I f s t e e p == 1 Then
30 // w i e d e r v e r t a u s c h e n
31 [xout , yout ] = [ycurrent , xcurrent ]
32 Else
33 [xout , yout ] = [xcurrent , ycurrent ]
34 End I f
35 xcurrent = xcurrent + 1
36 edx = edx − dy
37 I f edx < 0 Then
38 I f ystep == 1 Then
39 ycurrent = ycurrent + 1
40 Else
41 ycurrent = ycurrent − 1
42 End I f
43 edx = edx + dx
44 End I f
45 End While

Listing 4.6: Bresenham-Algorithmus für alle Steigungen.


Kapitel 4.3: Algorithmen 55

hat Steigung |m| < 1.

Es werden zwei weitere Fälle unterschieden:


• x0 > x1 – In diesem Fall werden die zu interpolierenden Punkte ver-
tauscht (vgl. Zeilen 11 bis 15). So verläuft die Gerade immer in positive
x-Richtung.
• y0 > y1 – In diesem Fall wird der Schritt für die spätere Interpolation
entsprechend gesetzt. Für Geraden, die in positive y-Richtung verlau-
fen, benutzt man Schritt +1. Für Geraden, die in negative Richtung
verlaufen, benutzt man Schritt −1 (vgl. Zeilen 16 bis 21).
Auf die sich ergebende Gerade lässt sich wieder der normale Bresenham-
Linienalgorithmus anwenden. Bei der Ausgabe der interpolierten Werte wer-
den diese bei Bedarf wieder vertauscht (vgl. Zeilen 29 bis 34). Je nach Verlauf
der Geraden in y-Richtung wird Schritt +1 oder −1 benutzt (vgl. Zeilen 38
bis 42).

y y
(x1;y1)
yx = x

a (x0;y0) x b xy = y c x

Abb. 4.8: Veranschaulichung der Erweiterung und Modifikation des Bresenham-


Linienalgorithmus. a: Zu interpolierende Punkte (x0 ; y0 ), (x1 ; y1 ) mit
Steigung m > 1; b: Umwandlung zu einer Geraden mit Steigung m < 1
durch Vertauschen der Achsen; c: Ergebnis des ursprünglichen (grau
markiert), des nicht modifizierten (rot markiert) und des modifizierten
(grün markiert) Bresenham-Linienalgorithmus.

Abb. 4.8a illustriert dies anhand des Beispiels einer Geraden mit Steigung
m > 1. Wegen m > 1 genügt der Schritt um 1 in y-Richtung nicht, um den
akkumulierten Fehler im Bereich −0, 5 ≤ e ≤ 0, 5 zu halten. Dies lässt sich
umgehen, indem die x- und die y-Achse vertauscht werden (vgl. Abb. 4.8b).
Kapitel 4.3: Algorithmen 56

Auf die sich ergebende Gerade lässt sich der Algorithmus normal anwenden.
Das Ergebnis ist durch die grau markierten Rasterpunkte gekennzeichnet. Die
Punkte, welche die ursprüngliche Gerade interpolieren, lassen sich gewinnen,
indem man die x- und y-Koordinaten der Punkte aus Abb. 4.8b wiederum
vertauscht. Diese sind in Abb. 4.8c grau markiert dargestellt.

Modifikation für 1D-Interpolation


Während dies ein optimales Ergebnis zur Darstellung einer Geraden in ei-
nem 2D-Rasternetz ist, kann es nicht direkt zur 1D-Interpolation übernom-
men werden. Das Problem liegt darin, dass bei der 1D-Interpolation jedem
x-Punkt genau ein y-Punkt zugeordnet ist. Wenn einem x-Wert mehr als ein
y-Wert gehört, wird dieser überschrieben. Die interpolierten Punkte, die sich
dadurch ergeben, sind in Abb. 4.8c rot markiert. Während sie eine gute Nä-
herung darstellen, unterscheiden sie sich von den optimalen grün markierten
Punkten.

Um einen optimalen, allgemeingültigen und sehr effizienten Algorithmus zur


linearen Interpolation zu entwickeln, wurde im Rahmen dieser Arbeit der
Bresenham-Linienalgorithmus modifiziert. Diese Modifikation ist in Listing 4.7
in Pseudocode dargestellt und wird vor Zeile 36 in den Algorithmus aus Lis-
ting 4.6 eingefügt.
1 abse = |edx − (dx >> 1)|
2 I f (xout != xlast ) OR
3 ((xout == xlast ) AND (abse ≤ abselast )) Then
4 xout,min e = xout
5 yout,min e = yout
6 End I f
7 xlast = xout
8 abselast = abse

Listing 4.7: Die im Rahmen dieser Arbeit vorgenommene Modifikation des


Bresenham-Algorithmus für 1D lineare Interpolation.

Dies eliminiert das Problem aus Abb. 4.8 c für den Fall, dass einem x-Punkt
mehr als ein y-Punkt gehört, indem nur der y-Punkt mit dem kleinsten ab-
soluten Fehler ausgegeben wird (grün markiert in Abb. 4.8 c).

Dazu wird bei jedem Durchlauf der absolute Fehler abse (vgl. Zeile 1 in Lis-
ting 4.7) des berechneten Koordinatenpaares ermittelt. Das Koordinatenpaar
wird in folgenden Fällen ausgegeben:
Kapitel 4.3: Algorithmen 57

• Der berechnete y-Wert ist der erste y-Wert, der zu einem x-Wert gehört
(vgl. Zeile 2).
• Der absolute Fehler des berechneten y-Wert abse ist kleiner als der des
letzten berechneten y-Wertes abselast für den Fall, dass mehrere y-Werte
einem x-Wert gehören (vgl. Zeile 3).

Ansonsten wird der neu berechnete Wert verworfen. Schließlich werden die
Werte des absoluten Fehlers abselast und des letzten x-Wertes xlast neu gesetzt
(vgl. Zeile 7 bzw. Zeile 8).

Diese Modifikation lässt sich sehr effizient in Hardware implementieren und


ist gültig für alle Steigungen. Deswegen kann sie auch außerhalb des Rahmens
dieser Arbeit zur Implementierung effizienter linearer Interpolation benutzt
werden.

Berechnung der inversen LUT


Ein weiterer Vorteil der Modifikation des Bresenham-Algorithmus besteht
darin, dass dabei gleichzeitig zur Interpolation auch die Inverse der zu in-
terpolierenden LUT berechnet wird (auf die Notwendigkeit, die vollständige
Inverse zu berechnen wird in Kapitel 5.1.2 eingegangen). Die Inverse ist eine
Funktion, die jedem y-Wert einen x-Wert zuweist.

So stellen im Fall einer Steigung |m| > 1 die grau markierten Punkte in
Abb. 4.8c die Inverse dar. Für Steigungen |m| ≤ 1 ist dies nicht direkt
gewährleistet, da einem y-Wert mehrere x-Werte zugeordnet werden (vgl.
Abb. 4.7). Durch die Modifikation aus Listing 4.7 lässt sich auch hier der
Punkt mit dem kleinsten absoluten Fehler berechnen und abspeichern.

Geschwindigkeit des modifizierten Bresenham-Linienalgorithmus


Der modifizierte Bresenham-Linienalgorithmus benötigt einen Takt pro Durch-
lauf. Da sich der Algorithmus rein kombinatorisch implementieren lässt, ist
es möglich, dass pro Takt mehr als ein Durchlauf durchgeführt wird. Da der
SRAM-Speicher jedoch nur einen Wert pro Takt speichern kann, können die
berechneten Werte nicht gespeichert werden.

Für Steigungen |m| ≤ 1 prozessiert der Algorithmus pro Durchlauf einen


x-Wert. Somit wird pro Durchlauf ein (xout ; yout )-Koordinatenpaar ausgege-
ben. Da für |m| ≤ 1 einem y-Wert ein oder mehr als ein x-Werte gehören,
ist die Ausgaberate der inversen Koordinatenpaare (xout,inv ; yout,inv ) abhängig
Kapitel 4.4: Pipelining 58

vom Betrag der Steigung.

Für Steigungen |m| > 1 prozessiert der Algorithmus dagegen pro Takt einen
y-Wert. Wie bereits besprochen, gehören für |m| > 1 einem x-Wert mehr als
ein y-Werte. In diesem Fall benötigt der Algorithmus pro (xout,inv ; yout,inv )-
Koordinatenpaar einen Takt. Die Ausgaberate für die (xout ; yout )-Koordinaten-
paare ist abhängig vom Betrag der Steigung.

Dies stellt ein sehr gutes Ergebnis für die Zwecke dieser Arbeit dar. Unter der
Annahme von 8-Bit Werten würde zum Vergleich die direkte Implementie-
rung von Gl. (4.17) ca. 16 Takte zur Berechnung eines einzelnen (xout ; yout )-
Koordinatenpaares in Anspruch nehmen. In diesem Fall muss zur Berechnung
der inversen LUT die binäre Suche eingesetzt werden, was weitere 8 Takte
pro (xout,inv ; yout,inv )-Koordinatenpaar benötigen würde.

4.4 Pipelining
Im Bereich des Digitaldesigns wird als Befehlspipeline (oder kurz Pipeline)
eine Art der parallelen Abarbeitung von Teilaufgaben eines Befehls in nach-
einander geschalteten Stufen bezeichnet.

Das Prinzip des Pipelinings wird anhand eines Beispiels verdeutlicht (vgl.
Abb. 4.9). Angenommen wird, dass zur Prozessierung eines Pixels 4 Ope-
rationen notwendig sind: A, B, C und D. Diese dauern jeweils einen Takt.
Dabei müssen die 4 Operationen in der angegebenen Reihenfolge ausgeführt
werden und jede Operation baut auf das Ergebnis der vorherigen auf.

Abb. 4.9b illustriert den zeitlichen Ablauf bei einer sequentiellen Bearbei-
tung. Zu jedem Zeitpunkt wird eine Operation ausgeführt. Sobald alle Ope-
rationen an einem Pixel durchgeführt wurden, kann die Bearbeitung des
nächsten Pixels anfangen. Für die Prozessierungszeit von n Pixeln ergibt
sich somit:
Tsequential = n · m, (4.28)
wo m die Berechnungszeit eines einzelnen Pixels darstellt. Für dieses Bei-
spiel ergibt sich mit n = 4 und m = 4: Tsequential = 16 (zur Erhöhung der
Übersichtlichkeit wurden in Abb. 4.9b nur 3 Pixel dargestellt). Der einzige
Parameter, der sich hier optimieren lässt ist m.

Abb. 4.9a stellt die Prozessierung der 4 Pixel P0 . . . P3 mit den 4 Operationen
A . . . D mit Hilfe einer Pipeline dar. Jede Operation wird bei Pipelining als
Kapitel 4.4: Pipelining 59

Pixel-Nr.
P3 A B C D
P2 A B C D
P1 A B C D
a P0 A B C D t

Pixel-Nr.
P2 A B C D
P1 A B C D
b P0 A B C D t
t=0 1 2 3 4 5 6 7 8 9 10 12 13

Abb. 4.9: Beispiel einer vierstufigen Befehlspipeline zur Prozessierung von 4


Pixeln (P0 . . . P3 ). a: Befehlspipeline; b: Sequentielle Verarbeitung
(nach [46]).

eine sog. Pipeline-Stufe realisiert. Typisch für die Pipeline-Prozessierung ist,


dass dabei jede Stufe immer die gleiche Operation, aber an verschiedenen
Daten ausführt, ähnlich einem Fließband.

Zum Zeitpunkt t = 0 beginnt das Laden der Pipeline mit der Ausführung
von Operation A auf Pixel P0 . Zum Zeitpunkt t = 1 wird die Operation
B auf Pixel P0 ausgeführt und gleichzeitig Operation A auf Pixel P1 . Zum
Zeitpunkt t = 3 ist die Pipeline voll, d.h. alle Operationen werden parallel an
verschiedenen Daten ausgeführt. Zum Zeitpunkt t = 4 ist die Prozessierung
von Pixel P0 abgeschlossen und die Pipeline schließt ab diesem Zeitpunkt in
jedem Takt eine Berechnung ab.

Die Prozessierungszeit eines einzelnen Pixels bleibt somit gleich der bei der
sequentiellen Verarbeitung. Wenn jedoch mehr Pixel prozessiert werden müs-
sen, wird nur 1 Takt für jedes weitere Pixel benötigt. Für die Prozessierungs-
zeit von n Pixeln ergibt sich somit:

Tpipeline = m + n − 1. (4.29)
Kapitel 4.4: Pipelining 60

Dabei wird m als Latenz bezeichnet, also die Zeit die ein Signal benötigt, um
durch die Pipeline durchzukommen. Für dieses Beispiel ergibt sich Tpipeline =
4 + 4 − 1 = 7 < Tsequential = 16. Der Geschwindigkeitsvorteil der Pipeline-
Prozessierung wächst mit ansteigenden m und n.
Kapitel 5.1: SQC – Effiziente Implementierung 61

5 Implementierung und Ergebnisse


Dieses Kapitel behandelt die Besonderheiten bei der Implementierung des in
Abb. 3.1, Seite 35 beschriebenen Demonstrators. Dazu wird zunächst die
einfachste Implementierungsmöglichkeit des Algorithmus SQC vorgestellt.
Während diese eine minimale Chipfläche benötigt, ist sie zu langsam, um
eine Echtzeitdatenberechnung zu ermöglichen. Auf Basis dieser Implemen-
tierung wird ein viel schnelleres Konzept hergeleitet. Im Anschluss wird
die Generierung der dazu notwendigen LUTs auf dem FPGA beschrieben.
Um die Geschwindigkeitsanforderungen an das System zu erfüllen, wird das
Design als Pipeline implementiert. Eine Chipflächenhalbierung auf Kosten
von Geschwindigkeitshalbierung bietet die darauf vorgestellte Semi-Pipeline.
Schließlich wird die Implementierung des Moduls zur Einstellung der Dis-
playhelligkeit erläutert.

5.1 SQC – Effiziente Implementierung


5.1.1 Grundlegende Implementierung

clock clock

address
address ROM data
data

a b addr = i data = ROM[i]

Abb. 5.1: Blockschaltbild eines ROM-Moduls (a) und zeitliche Darstellung eines
Lese-Datenzugriffs (b).

In Listing 2.1 auf Seite 24 wurde der Algorithmus zur Umsetzung des Treiber-
schemas SQC in Pseudocode präsentiert. Während die Übersetzung des Pseu-
docodes in eine höhere Skriptsprache (z.B. MATLAB, Perl) bzw. Program-
miersprache (z.B. die C-Familie, Java) direkt und relativ unproblematisch
ist, muss man bei der Implementierung in einer Hardwarebeschreibungsspra-
che (z.B. Verilog, VHDL) auf spezifische Besonderheiten und Begrenzungen
Rücksicht nehmen, da die Logik auf sehr niedriger Abstraktionsebene be-
schrieben werden muss.
Kapitel 5.1: SQC – Effiziente Implementierung 62

Eine solche Besonderheit ist, dass die datenspeichernden Komponenten (ROM1 ,


SRAM2 , Register) sequentiell arbeiten. Das bedeutet, dass die Daten, die sich
z.B. in einem ROM an der Adresse addr befinden, erst einen Takt nach der
Adressierung an der Datenleitung zur Verfügung stehen (vgl. Abb. 5.1). Das
Ausführen von
L = Lum-P ost[addr] (5.1)
nimmt folglich einen Takt in Anspruch.

addr t[addr] Lum-P ost[addr] State-P ost[addr]


0 0 255 0
1 1 253 2
2 2 252 3
3 3 250 5
4 4 248 6
.. .. .. ..
. . . .
1021 1617 2 227
1022 1670 1 227
1023 1697 0 227

Tabelle 5.1: Auszug aus dem Messdatensatz der Messung des Nachleuchtens.

Zur Implementierung des Algorithmus verwendet man die normierten und


diskretisierten Messdaten (vgl. Kapitel 4.2). Ein Auszug aus dem interpo-
lierten Messdatensatz des Nachleuchtens ist in Tabelle 5.1 dargestellt (vgl.
auch Tabelle 4.1 auf Seite 42). Die Messdatensätze für die normale Injektion
und die Injektion mit doppelter Stromamplitude sind analog aufgebaut und
bestehen aus je 3 LUTs – eine für die Zeit (t), eine für die Helligkeit (Lum)
und eine für den Zustand (State). Auf jeden Wert in der jeweiligen LUT
kann man über die Adresse addr zugreifen.

Um die LUT-Größe zu verringern, werden die Messdaten abhängig von der


Messkurvensteigung unterschiedlich dicht interpoliert (zur Erinnerung: die
Messdaten stehen nur zu den Zeitpunkten i · tlsb,25Hz als Stützpunkte zur
Verfügung). Während die Messdaten in den steileren Kurvenabschnitten zu
jedem diskreten Zeitpunkt j · tlsb,100Hz interpoliert werden, werden in den
1
ROM – Read-only memory (engl. für Nur-Lese-Speicher).
2
SRAM – Static random-access memory (engl. für statischen Speicher mit wahlfreiem
Zugriff).
Kapitel 5.1: SQC – Effiziente Implementierung 63

flacheren Bereichen weniger Punkte in den LUTs gespeichert. Aus diesem


Grund können nicht jedem t-Wert ein Lum- bzw. State-Wert zugeordnet
werden (z.B. lässt sich der Wert State-P ost(t = 1671) nicht direkt aus der
LUT auslesen). Der Pseudocode enthält jedoch Konstrukte wie z.B.:

V = State-Inj(tsearch + t1 ) (5.2)

Gesucht ist also der Zustand, der zur Zeit t = tsearch + t1 gehört. Der Zustand
lässt sich jedoch lediglich über die Adresse auslesen: State-Inj[addr]. Dazu
muss man die Adresse finden, welche die Bedingung t[addr] = tsearch + t1 er-
füllt. Man muss also die Position addr des Elements tsearch + t1 im sortierten
Feld t[addr] finden.

Der Algorithmus, der dieses Problem sehr effizient löst ist die binäre Su-
che (vgl. Kapitel 4.3.1). Für den Fall, dass die Summe zweier Zeiten nicht
gleich einer Zeit aus der LUT t[addr] ist, liefert der Algorithmus die Adresse
der nächstliegenden Zahl (wenn z.B. die Adresse von t = 33 in der LUT aus
Tabelle 5.1 gesucht wird, liefert die binäre Suche addr = 2).

Angenommen, dass die LUT t[addr] aus 1024 Elementen besteht, braucht
die binäre Suche nach Gl. (4.16) im ungünstigsten Fall blog2 1024c + 1 = 11
Iterationen, um die gewünschte Adresse zu finden. Bei jeder Iteration ist ein
Speicherzugriff notwendig. Die Suche dauert folglich 11·1 = 11 Takte. Da die
gesuchte Zeit meistens im Feld nicht enthalten ist, kann zur Vereinfachung
angenommen werden, dass die Suche immer 11 Takte braucht.

Die Operation aus Gl. (5.2) nimmt folglich 11+1 = 12 Takte in Anspruch (11
Takte zur Berechnung der Adresse und 1 Takt zum Auslesen des gesuchten
Wertes):

addrtsearch +t1 = Binary-Search(tsearch + t1 ) (5.3)


V = State-Inj[addrtsearch +t1 ] (5.4)

Ähnlich lässt sich auch die inverse Suche implementieren:

t2 = State-P ost-Inverse(V1 ) (5.5)

In diesem Fall such man den Zustand V1 im sortierten Feld State[addr], so


dass State[addrV1 ] = V1 . Ausgehend von einem 8-Bit Zustand, dauert diese
Suche 9 Takte. Noch einen Takt dauert das Auslesen der Zeit t2 = t[addrV1 ].
Kapitel 5.1: SQC – Effiziente Implementierung 64

Eine Analyse von Listing 2.1 zeigt, dass der Algorithmus für eine Prozes-
sierung die in Tabelle 5.2 aufgeführten Operationen ausführen muss. Für die
Prozessierungszeit ergibt sich somit:

tclocks = 53 · 1 + 36 · 12 + 10 · 10 = 585 Takte. (5.6)

Zahl Operation Beispiel


53 einfache SRAM Zugriffe Lum-P ost[addr] (Gl. (5.1))
36 Adresssuche (t) addrt = Binary-Search(t) (Gl. (5.2))
10 Adresssuche (V) addrV = Binary-Search(V ) (Gl. (5.5))

Tabelle 5.2: Liste der für eine SQC-Prozessierung benötigten Operationen.

Ausgehend von einer Taktfrequenz von fclock = 50M Hz ergibt sich für die
Dauer eines Taktes
1
tclock = = 20ns. (5.7)
fclock
Wie bereits in Kapitel 3 erwähnt, müssen innerhalb der Zeilenadressierzeit
trow,soll = 41, 7µs (vgl. Gl. (3.2) auf Seite 34) 960 Werte prozessiert wer-
den. Die Zeit, die für die Prozessierung bei der gegebenen Implementierung
notwendig ist, errechnet sich zu:

tSQC,initial = 960 · 585 · 20ns ≈ 11, 2ms  trow,soll = 41, 7µs. (5.8)

Dieses Ergebnis ist offensichtlich nicht akzeptabel.

Eine Möglichkeit zur Erfüllung des Geschwindigkeitskriteriums besteht in


der Parallelisierung des Designs. Die Parallelisierung besteht darin, dass das
Gesamtdesign mehrfach implementiert wird. Dabei arbeiten die einzelnen In-
stanzen zeitlich parallel und unabhängig voneinander und prozessieren ver-
schiedene Daten.

Für den maximale Durchsatz einer Instanz innerhalb der zur Verfügung ste-
henden Zeit trow,soll ergibt sich:
trow,soll
 
n= = 3. (5.9)
585 · 20ns
Zur Prozessierung von 960 Pixeln innerhalb trow,soll sind folglich
960
= 320 (5.10)
n
Kapitel 5.1: SQC – Effiziente Implementierung 65

addr = t Lum-Inj[addr] State-Inj[addr]


0 0 0
16 0 40
32 2 68
48 6 96
64 12 121
80 21 142
96 31 159
112 44 174
128 58 186
144 74 196
.. .. ..
. . .

Tabelle 5.3: Eliminierung der t-LUT durch Abbildung der Zeit auf die Adresse.
Interpolation aller Zwischenwerte ist erforderlich.

Instanzen des Designs notwendig. Während sich dadurch das Geschwindig-


keitskriterium erfüllen lässt, stellt dies erhebliche Anforderungen an die Chip-
fläche. In den nächsten Kapiteln wird eine bessere Alternative vorgestellt.

5.1.2 Verbesserte Implementierung


Die Grundidee dieser Verbesserung besteht darin, den langsamsten Teil der
Berechnung, nämlich die binäre Suche, zu beschleunigen. Eine Möglichkeit
wäre, während der binären Suche mehrere Werte gleichzeitig aus dem Spei-
cher auszulesen. Diese lassen sich dann innerhalb eines Taktes von der kom-
binatorischen Logik verarbeiten. Ein Speicherblock mit mehr als zwei Daten-
ausgängen ist jedoch nur mit relativ großem Aufwand realisierbar [47, 48].
Mehrere Werte können zur gleichen Zeit ausgelesen werden, wenn die Daten
mehrfach zur Verfügung stehen. Da dies den Speicheraufwand vervielfachen
würde, ist diese Lösung nicht akzeptabel.

Eine bessere Alternative bietet die vollständige Eliminierung der binären Su-
che aus dem Berechnungsprozess. Die binäre Suche kommt zur Lösung von
zwei Aufgaben zum Einsatz. Zum einen wird sie benutzt, um die Adresse
einer Zeit in der t-LUT zu bestimmen und zum anderen, um die Zeit, die zu
einem Zustand gehört, aus einer inversen State-LUT zu bestimmen.

Die Suche der Adresse einer Zeit kann umgangen werden, indem die Zeit
auf die LUT-Adresse abgebildet wird (vgl. Tabelle 5.3). Dies hat auch den
Kapitel 5.1: SQC – Effiziente Implementierung 66

Vorteil, dass sich somit die t-LUT komplett eliminieren lässt. Während dieser
Schritt einerseits die Anwendung der binären Suche erübrigt, besteht immer
noch das Problem, dass nicht jeder Zeit ein Lum- bzw. State-Wert zugeord-
net ist.

Einen Ausweg bietet die Interpolation aller Zwischenwerte. Angenommen,


dass genug Messwerte vorhanden sind und da alle Messwerte aufgrund der
Natur der gemessenen Größen monoton steigend bzw. monoton fallend sind,
genügt in diesem Fall die lineare Interpolation. Die lineare Interpolation mit-
hilfe des modifizierten Bresenham-Linienalgorithmus wurde ausführlich in
Kapitel 4.3.2) behandelt.

Somit lässt sich folgender Schritt anstatt in 12 Takten (11 Takte binäre
Suche und 1 Takt Wert vom SRAM auslesen) in nur einem Takt ausführen
(wegen addrtsearch +t1 = tsearch + t1 ):

V = State-Inj[addrtsearch +t1 ] = State-Inj[tsearch + t1 ] (5.11)

Wie bereits erwähnt, lässt sich der Berechnungsprozess zusätzlich beschleuni-


gen, indem auch die inverse Suche eliminiert wird. Die inverse Suche ist eine
normale binäre Suche, bei welcher die Adresse eines Wertes in der State-LUT
gesucht wird. Eine Möglichkeit wäre, die Inverse LUT als einen Assozia-
tivspeicher (engl. Content Addressable Memory, CAM) zu implementieren.
Dieser hat die Eigenschaft, dass er innerhalb eines Taktes die Adresse eines
darin gespeicherten Wertes liefern kann. Dabei kann der Inhalt des CAM
beliebig sortiert sein. Nachteilig ist jedoch, dass er einen sehr hohen Flächen-
bedarf hat [49–53].

Da im hier betrachteten Fall die Daten monoton steigend bzw. fallend sor-
tiert sind, lässt sich die inverse Funktion viel einfacher implementieren. Dazu
wird jeder diskrete Zustand auf die Adresse der inversen LUT abgebildet (die
inverse LUT ist ein normaler Speicherblock), so dass addrinv = V gilt. Die
in der inversen LUT gespeicherten Werte sind die Zeiten t der Zustände aus
der normalen LUT, welche die Bedingung LU T [t] = V erfüllen.

Ein Auszug aus der inversen LUT State-Inj-Inverse ist in Tabelle 5.4 dar-
gestellt (vgl. auch Tabelle 5.3). Wie bereits erwähnt, ist die Adresse in der
normalen LUT addrnormal gleich der Zeit t. So ist der Wert, welcher an einer
Adresse in der inversen LUT steht, gleich der Zeit des Zustandes:

t = State-Inj-Inverse[V ]. (5.12)
Kapitel 5.1: SQC – Effiziente Implementierung 67

addrInv = State-Inj State-Inj-Inverse[V] = addrnormal = t


0 0
.. ..
. .
40 16
.. ..
. .
68 32
.. ..
. .
96 48
.. ..
. .

Tabelle 5.4: Darstellung der inversen Tabelle State-Inj-Inverse. Interpolation


aller Zwischenwerte erforderlich.

Analog zur Abbildung der Zeit auf die Adresse der normalen LUTs verrin-
gert sich die Zugriffszeit auf eine inverse LUT von 10 Takten auf einen Takt.
Damit die inverse LUT während der Berechnung zur Verfügung steht, muss
sie bei der Chipinitialisierung erzeugt werden. Dazu wird mithilfe des modifi-
zierten Bresenham-Linienalgorithmus zu jedem Zustand die zugehörige Zeit
berechnet und in die inverse LUT gespeichert (vgl. Kapitel 4.3.2).

Durch die Benutzung von Speichern mit zwei Datenausgängen (engl. Dual
Port) lassen sich Operationen wie
L = Lum-Inj(tsearch + t1 ) − Lum-Inj(t1 ) (5.13)
in nur einem Takt ausführen, da beide Werte aus dem Speicher Lum-Inj
gleichzeitig ausgelesen werden können.

Durch die in diesem Kapitel vorgeschlagenen Verbesserungen lässt sich die


Zeit für eine SQC-Berechnung von 585 auf 27 Takte reduzieren. Die sequen-
tielle Prozessierung von 960 Werten dauert somit (analog zu Gl. (5.8)):
tSQC,optimized = 960 · 27 · 20ns ≈ 518, 4µs  trow,soll = 41, 7µs. (5.14)
Die Zeit, die für die sequentielle Prozessierung eines Pixels bei einer Taktfre-
quenz von fclock = 50M Hz zur Verfügung steht, beträgt
trow,soll
tsequential,pixel = ≈ 2, 17 Takte. (5.15)
960 · tclock
Diese Zeit lässt sich mit der vorgestellten sequentiellen Implementierungsme-
thode nicht erreichen.
Kapitel 5.2: Bereitstellung der LUTs 68

Die in am Ende von Kapitel 5.1.1 vorgeschlagene Parallelisierung würde ana-


log zu Gl. (5.9) bzw. Gl. (5.10) 12 Instanzen zur Erfüllung des Geschwindig-
keitskriteriums benötigen. Eine bessere Alternative bezüglich der Chipflä-
cheneffizienz bietet das in Kapitel 5.3 beschriebene Pipelining. Die in diesem
Kapitel vorgestellten Optimierungen dienen als wichtige Grundlage dafür.

5.2 Bereitstellung der LUTs

y
6

0
0 1 2
x

Abb. 5.2: Interpolation und inverse LUT. Die vollständige LUT besteht aus den
grün markierten Punkten. Die inverse LUT besteht aus den grün und
blau markierten Punkten.

Wie im vorherigen Kapitel beschrieben, lässt sich der Algorithmus sehr stark
bezüglich der Ausführungsgeschwindigkeit optimieren. Dazu müssen jedoch
die Messdaten in geeignete Form umgewandelt werden. Dies wird anhand
von Abb. 5.2 erläutert.

Gegeben seien die Punkte P1 = (0; 0) und P2 = (2; 6), die aus dem ROM
ausgelesen werden und z.B. der LUT State-Inj gehören (vgl. Abb. 2.13 auf
Seite 22). Voraussetzung für die Anwendung der Optimierungen aus Kapi-
tel 5.1.2 ist, dass jedem x-Wert ein y-Wert zugeordnet wird und dass die
Inverse State-Inj-Inverse berechnet wird. In diesem Fall muss für x = 1 ein
Kapitel 5.3: Pipeline 69

y-Wert gefunden werden. Dies geschieht mithilfe des erweiterten modifizier-


ten Bresenham-Linienalgorithmus: y[x = 1] = 3. Somit ist die Interpolation
in diesem Fall abgeschlossen (die vollständige LUT besteht aus den grün
markierten Punkten in Abb. 5.2).

Um die inverse LUT zu berechnen, muss jedem y-Wert ein x-Wert zuge-
ordnet werden. Wie in Kapitel 4.3.2 beschrieben, erfolgt dies auch mithilfe
des Bresenham-Linienalgorithmus. Das Ergebnis dieser Operation sind alle
grün und blau markierten Punkte in Abb. 5.2.

5.3 Pipeline
Wie bereits in Kapitel 5.1.2 erklärt, lässt sich der Algorithmus zur Umset-
zung von SQC unter Zuhilfenahme von zusätzlichen LUTs sehr effizient im-
plementieren. Die Berechnungszeit für ein Pixel beträgt lediglich 27 Takte.
Da jedoch viele solche Berechnungen innerhalb sehr kurzer Zeit stattfinden
müssen, ergibt sich die sequentielle Bearbeitung als unzureichend schnell.
Einen Ausweg bietet das Pipelining (vgl. Kapitel 5.3).

SQC
Lum tinj

pre0 ite00 ite07 out pre

Vcol, i Vcol, i+1


∙∙∙

pre1 ite10 ite17

ite20 ite27

Abb. 5.3: Blockschaltbild der Pipelineimplementierung von SQC. pre0 , pre1 : Die
Stufen zur Berechnung der Anfangsphase. ite00 . . . ite73 : Die Stufen zur
iterativen Berechnung von tinj , die tiefgestellte Nummer stellt den Teil
der jeweiligen Iteration, die hochgestellte Nummer die Laufnummer
der Iteration dar (die Iterationen ite2i . . . ite6i wurden zur Erhöhung
der Übersichtlichkeit nicht dargestellt). out: Die letzte Stufe zur Be-
stimmung von Vcol,i+1 .

Im Folgenden wird auf die Anwendung des Prinzips des Pipelinings auf den
Kapitel 5.3: Pipeline 70

Algorithmus zur Umsetzung von SQC eingegangen. Dazu wird die Implemen-
tierung aus Kapitel 5.1.2 hinsichtlich der Einteilung in verschiedene Pipeline-
Stufen untersucht. Schließlich wird das sich ergebende Design bezüglich des
Flächenbedarfs und der Prozessierungsgeschwindigkeit beurteilt.

Der Algorithmus lässt sich grundsätzlich in 3 Teile aufteilen:


• Bestimmung der Anfangsphase (vgl. Listing 2.2 auf Seite 31). Dazu
werden 2 Takte benötigt.
• Iterative Berechnung von tinj (vgl. die For-Schleife in Listing 2.1 auf
Seite 24). Für 8-Bit trow sind 8 Iterationen je 3 Takte notwendig, ins-
gesamt 8 · 3 = 24 Takte3 .
• Bestimmung von V1,i+1 (vgl. Zeile 41 in Listing 2.1). Dies nimmt 1 Takt
in Anspruch.
Gemäß der Definition von Pipelining ist zur Implementierung dieses Algorith-
mus eine Pipeline bestehend aus 2 + 24 + 1 = 27 Pipeline-Stufen notwendig.
Dabei ist zu beachten, dass jeder Iterationsteil durch eine Pipeline-Stufe zu
implementieren ist.

Für die Iteration müssen folglich nur 3 Stufen entworfen werden, die jedoch
achtfach auf dem Chip existieren und parallel verschiedene Daten prozessie-
ren. Im Fachjargon wird dies als „unrolling the loop“ bezeichnet [54]. Abb. 5.3
veranschaulicht dies. Während die einzelnen Stufen untereinander und seit-
lich dargestellt sind, werden sie analog zu Abb. 4.9a nacheinander abgearbei-
tet.

Im Folgenden werden die einzelnen Stufen vereinfacht vorgestellt:


• pre0 – Bestimmt LumZ (V1 ), LumI (V1 ), LumCIZ (V1 ), P reV (V1 ), P reL (V1 ),
ZV (V1 ), ZL (V1 ), CIV (V1 ) und CIL (V1 ), welche zur Berechnung der An-
fangsphase notwendig sind.
• pre1 – Bestimmt t1 anhand der Daten aus pre0 . Setzt die Anfangswerte
für die Iteration.
• itei0 – Bestimmt V2 = State-Inj(tsearch + t1 ).
• itei1 – Bestimmt t2 = State-P ost-Inverse(V2 ).
• itei2 – Bestimmt Lum-Inj(tsearch +t1 ), Lum-Inj(t1 ), Lum-P ost(tz +t2 )
und Lum-P ost(t2 ). Setzt tsearch , tbest , t2,best und ∆Lum,best anhand der
sich ergebenden Werte gemäß der binären Suche.
3
Die binäre Suche wird für tinj,max = trow − tpre durchgeführt (vgl. Gl. 2.28 auf Sei-
te 29). Nach Gl. 4.16 auf Seite 48 ergibt sich für die notwendige Iterationszahl für die
binäre Suche für ein 8-Bit trow wegen tpre > 0: blog2 (trow − tpre )c + 1 = 8 Iterationen.
Kapitel 5.3: Pipeline 71

• out – Bestimmt V1,i+1 = State-P ost((tinj,max − tbest ) + t2,best )


Dabei ist zu beachten, dass die Prozessierungsgeschwindigkeit von Speicher-
zugriffen, die auf das Ergebnis anderer Speicherzugriffe aufbauen, beschränkt
ist. Zum Beispiel gilt t2 ∼ f (V2 (t1 (V1 ))). Zur Berechnung von t2 müssen folg-
lich sequentiell zuerst t1 und V2 bestimmt werden.

Prozessierungsgeschwindigkeit Für die Prozessierung von n = 960 Pi-


xeln mit dieser Architektur ergibt sich mit m = 27 nach Gl. (4.29):
TSQC,pipeline = 960 + 27 − 1 = 986. (5.16)
Der erste Wert erscheint am Ausgang nach der Pipeline-Latenz von 27 Takten
und die restlichen 960 − 1 Werte brauchen je einen weiteren Takt. Mit Takt-
frequenz fclock = 50M Hz ergibt sich (analog zu Gl. (5.8) bzw. Gl. (5.14)):

tSQC,pipeline = 986 · 20ns = 19, 72µs < trow,soll = 41, 7µs. (5.17)
Somit ist die Anforderung an die Geschwindigkeit des Prozessors erfüllt. We-
gen 19, 72µs < 41,7
2
µs lässt sich sogar die Taktfrequenz auf fclock = 25M Hz
halbieren. Durch die Halbierung der Taktfrequenz wird der Energieverbrauch
des Chips reduziert.

Flächenbedarf Während sich durch Pipelining die Geschwindigkeit des


Prozessors erheblich steigern lässt, geschieht dies, wie bereits in Kapitel 3
erwähnt, auf Kosten des Flächenbedarfs (allgemeiner Tradeoff Geschwindig-
keit ↔ Hardwareaufwand in der Mikroelektronik).

Um den Flächenbedarf des Pipeline-Designs einzuschätzen, wurde das Design


mit dem HDL4 Compiler Synopsys [55–57] synthetisiert und das Ergebnis
analysiert. Es wurde die Standardzellenbibliothek XC018 der Firma X-FAB
[58], die einen 0, 18µm-Prozess beschreibt, benutzt. Nach weiteren kleineren,
programmiertechnischen Optimierungen lieferte die Synthese einen Flächen-
bedarf von
ASQC,pipeline ≈ 290 000µm2 . (5.18)
Diese Fläche ist nur für diesen Prozess charakteristisch. Um eine technologie-
unabhängige Abschätzung über den Flächenbedarf zu bekommen, wird diese
Fläche in GE5 ausgedrückt. Für die Fläche einer GE wird meistens die Flä-
che eines NAND6 -Gatters mit zwei Eingängen (NAND2) benutzt. Die Fläche
4
HDL – Hardware Description Language (engl. für Hardwarebeschreibungssprache).
5
GE – Engl. Gate Equivalent (deutsch Gatter).
6
NAND – Engl. Not And.
Kapitel 5.3: Pipeline 72

eines NAND2-Gatters in diesem Prozess beträgt

AN AN D2,XC018 = 9, 2232µm2 . (5.19)

Für den normierten Flächenbedarf ergibt sich somit:


ASQC,pipeline
BSQC,pipeline = ≈ 31 000 GE. (5.20)
AN AN D2,XC018

Dieser Wert stellt ein befriedigendes Ergebnis dar.

Eine genauere Analyse der Synthese führte zur Schlussfolgerung, dass die
reine Logik lediglich ca. 40% der Fläche einnimmt. Die restliche Fläche ist
mit Registern besetzt. Diese haben vorwiegend die Aufgabe, die ganze Infor-
mation, die für die Prozessierung notwendig ist, zwischen den Pipeline-Stufen
zu speichern, und verbrauchen ca. 60% der Gesamtfläche.

Zum Beispiel muss folgende Information an der Pipeline-Stufe itei0 in den


Pipeline-Registern gespeichert werden: Ltarget (8 Bits), tsearch (8 Bits), mint
(8 Bits), maxt (8 Bits), t1 (9 Bits), tbest (8 Bits), ∆Lum,best (8 Bits), t2,best
(11 Bits), pretodo (2 Bits) insgesamt 70 Bits7 . Während nicht alle Werte in
der jeweiligen Stufe benötigt werden, müssen sie gespeichert werden, um die
weitere Prozessierung zu ermöglichen. Der erhöhte Flächenbedarf bei Pipe-
lining hat folglich zwei Gründe – Einerseits die mehrfach vorhandene Logik
und andererseits die Pipeline-Register8 .

Während Gl. (5.20) ein Maß für die Größe des Designs liefert, muss be-
achtet werden, dass dabei nur die Gesamtlogik (reine Logik und Register)
synthetisiert wurde. Dabei wurden die SRAM-LUTs ausgelassen, da keine
Information über die Größe einer SRAM-Zelle in der benutzten Standardzel-
lenbibliothek vorhanden war.

Der LUT-Bedarf der einzelnen Pipeline-Stufen ist in Tabelle 5.5 dargestellt.


Ausgehend davon und von der Größe der einzelnen LUTs lässt sich der
SRAM-Bedarf für eine Farbe gemäß Tabelle 5.6 zu 556 kBit berechnen. Da
die vollständigen LUTs für alle 3 Farben (Rot, Grün, Blau) benötigt werden,
verdreifacht sich der SRAM-Bedarf unter der Annahme gleicher Größe der
R-, G- und B-LUT zu 3 · 556kBit = 1668kBit.
7
Die Größe von einem Register-Bit beträgt in der verwendeten Technologie ca. 10 GE.
8
Pipeline-Register – Die Idee der Pipeline-Register ist ähnlich dem Konzept des Pro-
zesskontextes aus der Welt der Systemarchitektur: „ . . . die gesamte Information, die für
den Ablauf und die Verwaltung von Prozessen von Bedeutung ist“ [59].
Kapitel 5.3: Pipeline 73

Exemplare Stufe LUTs


1 pre0 Lum_Z, Lum_I, Lum_CIZ,
P re_V , P re_L, Z_V ,
Z_L, CI_V und CI_L
1 pre1 State-Inj-Inverse
8 itei0 State-Inj
i
8 ite1 State-P ost-Inverse
i
8 ite2 2 × Lum-Inj
2 × Lum-P ost
1 out State-P ost

Tabelle 5.5: LUT-Bedarf der einzelnen Pipeline-Stufen für eine Farbe.

LUT Exemplare Elemente Auflösung ≈ kBit


Anfangsphase 1 23
Lum-Inj 16 210 10 164
Lum-P ost 16 211 8 262
10
State-Inj 8 2 8 66
State-P ost 1 211 8 16
8
State-Inj-Inverse 1 2 10 2
State-P ost-Inverse 8 28 11 23
P
556

Tabelle 5.6: SRAM-Bedarf der Pipeline Implementierung für eine Farbe. Da-
bei werden mit „Anfangsphase“ alle LUTs bezeichnet, welche die
Pipeline-Stufe pre0 benötigt (vgl. Tabelle 5.5).

Abschätzungsweise lässt sich für die Größe eine 6-Transistor-SRAM Zelle


(1 SRAM Bit) annehmen [60]:
BSRAM,cell ≈ 0, 8 GE. (5.21)
Für die Fläche, die für den Speicher benötigt wird, ergibt sich:
GE
BSQC,pipeline,SRAM ≈ 1668 kBit · 0, 8≈ 1 334 000 GE. (5.22)
Bit
Aus der Summe von Gl. (5.20) und Gl. (5.22) ergibt sich für den Gesamtflä-
chenbedarf:
BSQC,pipeline,gesamt = BSQC,pipeline + BSQC,pipeline,SRAM = 1 365 000 GE.
(5.23)
Kapitel 5.4: Flächenoptimierung – Semi-Pipeline 74

5.4 Flächenoptimierung – Semi-Pipeline


Wie im vorherigen Kapitel beschrieben, ist der Flächenbedarf des Pipeline-
designs relativ groß. Da die Prozessierungsgeschwindigkeit mehr als doppelt
höher als erforderlich ist, kann das Design weiterhin bezüglich der Fläche
optimiert werden.

Eine Möglichkeit, die Fläche auf Kosten der Geschwindigkeit zu optimie-


ren, besteht darin, dass man die Iterationsstufen mehrfach benutzt („rolling
up the pipeline“ [54]). Anstatt 8 Iterationsstufeninstanzen können nur 4 im-
plementiert werden, die zweifach benutzt werden (vgl. Abb. 5.4). Da die
Iterationsstufen den größten Teil des Flächen- und SRAM-Bedarfs ausma-
chen, würde dieser Schritt den Flächen- und SRAM-Bedarf fast halbieren.
Dies würde jedoch auch die Prozessierungsgeschwindigkeit halbieren und die
Designkomplexität erhöhen. Da dieses Design keine echte Pipeline mehr dar-
stellt, wird es im Folgenden als Semi-Pipeline bezeichnet.

S1 SQC
Lum tinj

pre ite0 ite2 out pre

Vcol, i Vcol, i+1

ite1 ite3

S2

Abb. 5.4: Darstellung des Semi-Pipeline-Designs. Anstatt 8 Iterationsstufen


(ite0 . . . ite7 ) werden nur 4 (ite0 . . . ite3 ) eingesetzt und zweifach be-
nutzt. Die Datenflussschalter S1 und S2 sorgen für die korrekte Daten-
flusssteuerung und sind im Zustand S1 = 0 un S2 = 1 dargestellt.

Damit die korrekte Datenflusssteuerung gewährleistet ist, ist der Einsatz


von Datenflussschaltern erforderlich. Diese sind als S1 und S2 in Abb. 5.4
dargestellt. Im Folgenden wird ihre Funktionsweise anhand des Beispiels der
Prozessierung von 12 Pixeln P0 . . . P11 mithilfe Abb. 5.5 erläutert.

Zum Zeitpunkt t = 0 wird Pixel P0 und danach je ein weiteres Pixel pro
Kapitel 5.4: Flächenoptimierung – Semi-Pipeline 75

in ∙∙∙
out ∙∙∙
S1 ∙∙∙
S2 ∙∙∙
0 2 12 14 24 26 t
27

Abb. 5.5: Zeitlicher Auszug des Datenflusses. in – Eingabe; out – Ausgabe; S1 –


Datenflussschalter 1; S2 – Datenflussschalter 2.

Takt zur Prozessierung am Eingang des Prozessors eingegeben. Zum Zeit-


punkt t = 2 befindet sich Pixel P0 am Ausgang der pre-Stufe und ist bereit
für die Bearbeitung in den ite-Stufen (zur Erinnerung: Die Stufe pre benötigt
2 Takte, die Stufen ite benötigen je 3 Takte, die Stufe out benötigt 1 Takt).
Zu diesem Zeitpunkt wird Datenflussschalter S1 = 1 geschaltet, so dass die
Daten von der pre-Stufe in die ite-Stufen fließen.

Zum Zeitpunkt t = 12 befinden sich bereits alle 12 Pixel P0 . . . P11 im Prozes-


sor und werden bearbeitet. Zum Zeitpunkt t = 14 befinden sich alle 12 Pixel
in den Iterationsstufen und beide Datenflussschalter schalten um: S1 = 0,
S2 = 1 (dieser Zustand der Datenflussschalter ist in Abb. 5.4 dargestellt).
Dies schließt den Kreis und alle Daten durchlaufen die Iterationsstufen ein
zweites Mal (zur Erinnerung: Es sind insgesamt 8 Iterationen für eine Pro-
zessierung notwendig).

Zum Zeitpunkt t = 26 befindet sich Pixel P0 am Ausgang der Iteration und


ist bis auf die out-Stufe vollständig bearbeitet. Zu diesem Zeitpunkt schal-
ten die Datenflussschalter wieder um, so dass die bearbeiteten Daten in die
Stufe out fließen und neue Daten in die Iterationsstufen eingegeben werden.
Einen Takt später (t = 27) wird das Ergebnis der Prozessierung von Pixel
P0 ausgegeben.

Zu beachten ist, dass die erneute Eingabe von Daten zum Zeitpunkt t = 24
beginnt, während die Daten in den Iterationsstufen noch prozessiert werden,
da sie zuerst in der Stufe pre vorbearbeitet werden müssen.

Prozessierungsgeschwindigkeit Wie Abb. 5.5 zu entnehmen ist, bleibt


die Latenz in der Semi-Pipeline-Version des Designs unverändert: Die Pro-
zessierung des ersten Pixels dauert 27 Takte. Für die Prozessierung von n
Pixel mit n ≤ 12 bleibt die Prozessierungsgeschwindigkeit im Vergleich zu
Kapitel 5.4: Flächenoptimierung – Semi-Pipeline 76

der echten Pipeline unverändert (vgl. Gl. (4.29)). Für n > 12 braucht die
Semi-Pipeline 24 Takte je 12 Werte:

27 − 1 + n für n ≤ 12
Tsemi-pipe =  (5.24)
27 − 1 + 12 + (n − 12) · 2 = 14 + 2 · n für n > 12
Für die Prozessierungszeit von 960 Pixeln ergibt sich mit tclock = 20ns (analog
zu Gl. (5.17)):
tSQC,-pipe = (14 + 2 · 960) · tclock = 38, 68µs < trow,soll = 41, 7µs. (5.25)
Die Anforderung an die Prozessierungsgeschwindigkeit bleibt somit erfüllt.

Flächenbedarf Eine erneute Synthese liefert:


ASQC,semi-pipe ≈ 150 000µm2 , (5.26)
ASQC,semi-pipe BSQC,pipeline
BSQC,semi-pipe ≈ ≈ 16 000 GE ≈ . (5.27)
AN AN D2,XC018 2
Folglich halbiert sich der Flächenbedarf für die Logik näherungsweise. Da
die Pipeline-Stufen pre0 , pre1 und out nicht verändert wurden und da durch
die Datenflussschalter zusätzliche Fläche benötigt wird, ist die Flächenhal-
bierung nur näherungsweise gewährleistet.
LUT Exemplare Elemente Auflösung ≈ kBit
Anfangsphase 1 23
10
Lum-Inj 8 2 10 82
Lum-P ost 8 211 8 131
State-Inj 4 210 8 33
State-P ost 1 211 8 16
8
State-Inj-Inverse 1 2 10 2
8
State-P ost-Inverse 4 2 11 11
P
298

Tabelle 5.7: SRAM-Bedarf der Semi-Pipeline Implementierung für eine Farbe.

Der SRAM-Bedarf für eine Farbe ist in Tabelle 5.7 angegeben. Ein Vergleich
zu Tabelle 5.6 zeigt, dass auch er sich näherungsweise halbiert. Für alle drei
Farben ergibt sich 3·298kBit = 894kBit. Analog zu Gl. (5.22) bzw. Gl. (5.23)
lässt sich der Gesamtflächenbedarf berechnen:
GE
BSQC,semi-pipe,SRAM = 894kBit · 0, 8 ≈ 715 000 GE, (5.28)
Bit
BSQC,pipeline,gesamt
BSQC,semi-pipe,gesamt = 731 000 GE ≈ (5.29)
2
Kapitel 5.5: Implementierung verschiedener Displayhelligkeiten 77

5.5 Implementierung verschiedener Displayhelligkeiten


Um die kommerzielle Tauglichkeit des Designs zu belegen, muss ein weiterer
Aspekt des Prozessors betrachtet werden – Der Prozessor muss verschiedene
Displayhelligkeiten unterstützen. Die Änderung der Displayhelligkeit ist üb-
lich in vielen Anwendungen. So lässt sich zum Beispiel die Displayhelligkeit
mithilfe eines Lichtsensors der Umgebungsbelichtung anpassen (das Display
muss z.B. in heller Umgebung sehr hell sein, um den gewünschten Kontrast
zu gewährleisten). Des Weiteren muss der Benutzer in der Lage sein, eine
gewünschte Displayhelligkeit einzustellen.

ROM0 ROM1 ∙∙∙ ROMk-1 ROMk

UART Set Bright

Generate LUTs

S1

LUT0 LUT1

_
S2=S1

SQC

Abb. 5.6: Blockschaltbild des Gesamtdesigns mit Schwerpunkt auf das Modul
„Set Bright“ zur Änderung der Displayhelligkeit.

Die Displayhelligkeit lässt sich über die Stromamplitude des Spaltenstroms


einstellen. Da die SQC-Ansteuerung von der Stromamplitude abhängig ist, ist
die erneute Durchführung der Messung für jede Displayhelligkeit erforderlich.
Das Design muss folglich in der Lage sein, mit verschiedenen Messdatensät-
zen zu arbeiten. Da das Design sehr modular und allgemeingültig entwickelt
ist, ist diese Erweiterung relativ unproblematisch.

Abb. 5.6 dient der Veranschaulichung. Die ROMs ROM0 . . . ROMk enthalten
Kapitel 5.5: Implementierung verschiedener Displayhelligkeiten 78

die Stützpunkte der Messdatensätze, die aus Messungen mit verschiedenen


Stromamplituden gewonnen wurden (bei der Messung lässt sich die Strom-
amplitude über die Spannung Vgate einstellen, vgl. Kapitel 4.1 und Abb. 4.2).
So lassen sich mit relativ wenig ROM-Speicherbedarf die verschiedenen Dis-
playhelligkeiten sehr kostengünstig realisieren.

Wenn die Displayhelligkeit geändert wird (im Fall des Demonstrators wird
das vom PC über die UART-Schnittstelle gesteuert), werden die Daten aus
dem entsprechenden ROM vom Modul „Set Bright“ ausgelesen und an das
Modul „Generate LUTs“ zur Bearbeitung weitergeleitet (vgl. Kapitel 5.2).
Dort werden die als Stützpunkte vorliegenden Daten interpoliert. Es wer-
den die inversen LUTs berechnet sowie die LUTs, die zur Bestimmung der
Anfangsphase notwendig sind (eine Liste der LUTs findet sich in Tabelle 5.7).

Damit während der LUT-Generierung das Display nicht wegen fehlender


Daten flackert, werden insgesamt 2 SRAM-Speicher für LUTs implementiert
(LU T0 und LU T1 ). Wie in Abb. 5.6 dargestellt, werden beide LUT-Speicher
so gesteuert, dass während LU T0 von SQC zur Pixelprozessierung benutzt
wird, LU T1 zur Abspeicherung der generierten LUT-Daten zur Verfügung
steht. Dies geschieht über die Datenflussschalter S1 und S2 mit S2 = S¯1 .

Die vollständige Generierung der LUTs aus den Stützpunkten im ROM mit
den bereits beschriebenen Methoden dauert ca. tgenLU T s = 450µs mit fclock =
50M Hz. Da dies parallel zur Displayansteuerung erfolgt und keinerlei Ein-
fluss auf die Bilddarstellung hat, ist diese Zeit unkritisch. Deswegen ist keine
weitere Optimierung notwendig.

Für den Fall von sich schnell ändernder Solldisplayhelligkeit wurde eine wei-
tere Erweiterung vorgenommen. Dazu wird am Ende des LUT-Generierungs-
prozesses überprüft, ob sich die Solldisplayhelligkeit während der Zeit tgenLU T s
geändert hat. Wenn nein, so werden die gerade generierten LUTs für die Be-
rechnung übernommen. Wenn sich die Solldisplayhelligkeit in der Zwischen-
zeit geändert hat, so werden die generierten LUTs verworfen und sofort mit
den neuen LUTs überschrieben, ohne dass sie für die SQC-Ansteuerung be-
nutzt werden. Dies hat den Zweck Oszillationen der Displayhelligkeit bei sich
schnell ändernden Bedingungen zu vermeiden [61].

Flächenbedarf Entsprechend Tabelle 5.8 errechnet sich der ROM-Bedarf


für einen Farbanteil und eine Displayhelligkeit zu ca. 4 kBit. Während bei
der Auflistung der vollständigen LUTs in Tabelle 5.7 manche LUTs mehrfach
Kapitel 5.6: PC-Steuerungssoftware 79

ROM Elemente Auflösung Bit


t-Inj 26 10 640
Lum-Inj 26 10 640
6
State-Inj 2 8 512
6
t-P ost 2 11 704
Lum-P ost 26 8 512
6
State-P ost 2 8 512
3
t-P re 2 7 56
Lum-P re 23 7 56
3
State-P re 2 8 64
P
3696

Tabelle 5.8: ROM-Bedarf für einen Farbanteil und eine Displayhelligkeit.

gezählt wurden, ergibt eine Rechnung, bei welcher jede LUT nur einmal
berücksichtigt wird, einen Speicherbedarf von ca. 56 kBit. Indem im ROM
nur Stützpunkte gespeichert werden, aus welchen sich durch Interpolation
die vollständigen LUTs erstellen lassen, werden folglich
56 kBit − 4 kBit
≈ 93% (5.30)
56 kBit
ROM-Speicher pro Farbanteil pro Displayhelligkeit gespart.

Da der ROM-Speicher viel einfacher als der SRAM-Speicher aufgebaut ist


(näherungsweise 1 Transistor gegenüber 6 Transistoren pro Speicherzelle),
lässt er sich entsprechend kostengünstiger und flächensparender realisieren.
Für die Fläche einer ROM-Zelle lässt sich abschätzungsweise annehmen [29]:

Gl.(5.21)
BROM,cell ≈ 20% · BSRAM,cell = 20% · 0, 8 GE = 0, 16 GE. (5.31)

Für den ROM-Flächenbedarf für einen Farbanteil und eine Displayhelligkeit


ergibt sich:
GE
BROM,block ≈ 4 kBit · 0, 16 = 640 GE. (5.32)
Bit
Für den Logik-Flächenbedarf liefert die Synthese:

BGenerate LU T s ≈ 2000 GE, (5.33)


BSet Bright ≈ 150 GE. (5.34)
Kapitel 5.6: PC-Steuerungssoftware 80

Abb. 5.7: Dual-Display Demonstrator.

5.6 PC-Steuerungssoftware
Der Demonstrator, an dem das Design getestet wurde, ist in Abb. 5.7 dar-
gestellt. Er ist sehr ähnlich wie der Messaufbau aus Abb. 4.2 auf Seite 37
aufgebaut. Der Hauptunterschied ist, dass es zwei Displays parallel ansteu-
ern kann. Des Weiteren verfügt es über ein sehr leistungsfähiges Xilinx Virtex
5 FPGA, das über weitaus mehr Anschlüsse zur Displayansteuerung sowie
Logikgatter und RAM-Blöcke als das im Messaufbau benutzte Spartan IIE
FPGA verfügt [62].

Zur Steuerung des Demonstrators wurde im Rahmen dieser Arbeit eine gra-
phische Benutzeroberfläche in C# .NET entwickelt (vgl. Abb. 5.8). Die Funk-
tionalität der GUI besteht vor allem darin, über den COM-Port (RS-232
Schnittstelle und RS-232 ↔ UART Wandler) Bilddaten an das FPGA zu
übertragen und seine Funktionen zu steuern. Da das Kommunikationsproto-
koll sehr einfach und sehr ähnlich zum bereits in Kapitel 4.1.2 beschriebenen
Protokoll ist, wird darauf nicht eingegangen. Im Folgenden wird die Funk-
tionalität der GUI beschrieben.
Beim Starten durchsucht das Programm das Verzeichnis, in dem es sich befin-
det und listet alle Bilddateien mit Endung .png, .bmp und .jpg auf. Mit dem
Kapitel 5.6: PC-Steuerungssoftware 81

Abb. 5.8: Die graphische Benutzeroberfläche SQC GUI, die im Rahmen dieser
Arbeit zur Steuerung des Demonstrators in C# .NET entwickelt wurde.

Button „Browse“ kann ein anderes Verzeichnis gewählt werden. Die GUI
unterstützt zwei Betriebsmodi, die für zwei verschiedene Hardwaredesigns
vorgesehen sind:
• Passivmodus – Der Passivmodus ist ein Testmodus, bei welchem auf
den Demonstrator ein vereinfachtes Hardwaredesign aufgespielt wer-
den muss. Es besteht lediglich aus einem UART- und einem Displa-
yansteuerungsmodul. Da es kein Berechnungsmodul enthält, müssen
auf dem PC die vollständigen Daten für die Injektionszeit und die An-
fangsphase berechnet werden. Zur Berechnung auf der PC-Seite werden
MATLAB-Skripte eingesetzt. Dies hat den Vorteil, dass die Testzeiten
und der Testaufwand verschiedener Algorithmen und Messergebnisse
sehr stark verringert werden. Des Weiteren kann über den Button „Set
t_pre“ und das Textfeld „t_pre“ die Dauer der Anfangsphase tpre für
Testzwecke variiert werden.
• Aktivmodus – Im Aktivmodus werden nur reine Bilddaten (also die
Grauwerte der einzelnen Pixel) vom PC auf das FPGA übertragen. Die-
se werden in Betriebszeit auf dem FPGA mithilfe des SQC-Prozessors
bearbeitet und auf dem Display dargestellt. Mit dem Button „Set Bright-
ness“ und dem Textfeld „Brightness“ lässt sich die gewünschte Display-
helligkeit gemäß Kapitel 5.5 einstellen.

Über den Button „Send picture“ lässt sich das aus der Liste selektierte Bild in
beiden Betriebsmodi an das FPGA übertragen. Im Passivmodus werden die
Ansteuerungsdaten und im Aktivmodus nur die Pixelgrauwerte übertragen.
Kapitel 6.1: Echtzeitprozessierung im Vergleich zu 2D-LUT 82

6 Diskussion
6.1 Echtzeitprozessierung im Vergleich zu 2D-LUT
In diesem Kapitel wird auf die Idee eingegangen, SQC als 2D-LUT zu im-
plementieren. Dies bedeutet, dass die vollständige SQC-Prozessierung für
alle möglichen Kombinationen aus Sollhelligkeit GV (engl. für „Grey Value“
(Grauwert)) und Zustand (Spaltenspannung Vin ) im Voraus berechnet wer-
den und im ROM festprogrammiert werden. Es werden insgesamt drei solche
2D-LUTs benötigt – eine für die Injektionszeit tinj , eine für den nächsten
Zustand Vout und eine für die Anfangsphase pretodo . Diese 2D-LUTs sind in
Abb. 6.1, Abb. 6.2 und Abb. 6.3 dargestellt.

Abb. 6.1: Die Injektionszeit tinj als Funktion der Spaltenspannung Vin und der
Sollhelligkeit GV bei SQC-Ansteuerung.

Für die Größe der LUTs ergibt sich für eine 8-Bit Auflösung der Grauwerte
und der Spaltenspannung:

LU T s = LU Ttinj + LU TVout + LU Tpretodo


= 256 · 256 · 8Bit + 256 · 256 · 8Bit + 256 · 256 · 2Bit
≈ 1200kBit. (6.1)

Analog zu Gl. (5.32) ergibt sich für den Chipflächenbedarf für eine Farbe und
eine Displayhelligkeit bzw. für alle 3 Farben und eine Displayhelligkeit bei
Kapitel 6.1: Echtzeitprozessierung im Vergleich zu 2D-LUT 83

Abb. 6.2: Die Spaltenspannung des nächsten Pixels Vout als Funktion der Spal-
tenspannung Vin und der Sollhelligkeit GV .

Abb. 6.3: Die Anfangsphase pretodo als Funktion der Spaltenspannung Vin und
der Sollhelligkeit GV . Für den Wert von pretodo gilt Folgendes:
pretodo = 0 – Discharge; pretodo = 1 – Strominjektion; pretodo = 2
– Hochohmig; pretodo = 3 – Strominjektion mit doppelter Stromampli-
tude.
Kapitel 6.2: Energieverbrauch 84

der 2D-LUT-Implementierung:
GE
B2D-LU T s = 1200kBit · 0, 16 = 192 000 GE, (6.2)
Bit
B2D-LU T s,RGB = 3 · 192 000 GE = 576 000 GE. (6.3)

Für die Implementierung verschiedener Displayhelligkeiten (vgl. Kapitel 5.5)


sind alle 2D-LUTs neu zu berechnen. Dies vervielfacht den Speicheraufwand.

Wie in Kapitel 5.5 beschrieben, ist bei der Semi-Pipeline-Implementierung


eine zweite Instanz aller LUTs als Zwischenspeicher beim Wechsel der Dis-
playhelligkeit notwendig (vgl. Abb. 5.6). Somit erhöht sich der Gesamtflä-
chenbedarf nach Gl. (5.27) bzw. Gl. (5.28) zu:

Bcomplete,semi−pipe = BSQC,semi-pipe + 2 · BSQC,semi-pipe,SRAM = 1 461 000 GE.


(6.4)
Wegen BROM,block  Bcomplete,semi−pipe (vgl. Gl. (5.32)) bleibt der Flächenbe-
darf beim Hinzufügen zusätzlicher Displayhelligkeiten näherungsweise kon-
stant.

Ein Vergleich von Gl. (6.3) und Gl. (6.4) zeigt, dass der Flächenbedarf der
2D-LUT Implementierung bereits für drei verschiedene Displayhelligkeiten
größer als der des Semi-Pipeline-Prozessors ist. Wegen der effizienteren Im-
plementierungsmöglichkeit für mehr Displayhelligkeiten (für viele Anwendun-
gen sind mindestens 10 Displayhelligkeitsstufen erforderlich) ist der Semi-
Pipeline-Prozessor zu bevorzugen.

6.2 Energieverbrauch
Da das Hauptziel des in dieser Arbeit implementierten Treiberschemas SQC,
den Energieverbrauch zu reduzieren, ist, wurde dies theoretisch veranschau-
licht und mithilfe des Demonstrators verifiziert.

Abb. 6.4 zeigt die Injektionszeit tinj,conv , die bei dem konventionellen Treiber-
schema zum Erreichen der Helligkeit GV notwendig ist. Da tinj,conv von der
Spaltenspannung Vin die am Ende der Injektion erreicht wird nicht abhängt
(beim konventionellen Treiberschema wird immer Discharge gemacht, vgl.
Kapitel 2.2.2), hat sie die Gestalt der Gammakorrektur-Kurve aus Abb. 2.10
auf Seite 18.

Wenn vom Graph in Abb. 6.4 der Graph von Abb. 6.1 abgezogen wird,
ergibt sich die Strominjektion, die für jede Kombination [GV ; Vin ] bei der
Kapitel 6.2: Energieverbrauch 85

Abb. 6.4: Die benötigte Injektionszeit tinj,conv als Funktion der gewünschten Pi-
xelhelligkeit GV bei dem konventionellen Treiberschema.

Abb. 6.5: Die für jede Kombination [GV ; Vin ] eingesparte Strominjektion bei
SQC im Vergleich zum konventionellen Treiberschema.
Kapitel 6.2: Energieverbrauch 86

00_sean_connery 01_sarkosy 02_putin 03_schumi 04_fisch

05_einstein 06_escher 07_vwkaefer 08_schmetterling 09_katze

10_blume 11_face1 12_face3 13_mosi 14_porsche

15_lena 16_eiffel_tower 17_patrick_stewa 46_contrast 47_cross


rt

48_checkerboard 51_all_on_31 55_SQC 66_muri2 69_pm


8

70_1234

Abb. 6.6: Standardtestbilder.

SQC-Ansteuerung im Vergleich zu der konventionellen Ansteuerung einge-


spart wird. Dies ist in Abb. 6.5 illustriert1 .

Die Kurve lässt sich so interpretieren, dass je höher die Spaltenspannung


Vin ist, desto größer das Sparpotential von SQC ist. Dies ist logisch, da Vin
ein Maß für die in den Parasitärkapazitäten gespeicherte Ladung ist, die bei
SQC für Nachleuchten benutzt wird und beim konventionellen Treibersche-
1
Dabei ist zu beachten, dass zu der Kurve für die Injektionszeit bei SQC die Injekti-
on während der Anfangsphase addiert werden muss. Zur Erhöhung der Übersichtlichkeit
wurde dieser Schritt nicht extra dargestellt.
Kapitel 6.2: Energieverbrauch 87

Testbild Iconv [mA] ISQC [mA] Energieeinsparung


00_sean_connery 15,59 7,21 53,75%
01_sarkosy 16,06 6,58 59,03%
02_putin 17,73 8,88 49,92%
03_schumi 20,07 10,07 49,83%
04_fisch 17,49 8,87 49,29%
05_einstein 19,27 9,72 49,56%
06_escher 23,82 13,43 43,62%
07_vwkaefer 17,38 8,43 51,50%
08_schmetterling 16,30 6,77 58,47%
09_katze 18,51 9,29 49,81%
10_blume 18,33 8,95 51,17%
11_face1 14,14 5,15 63,58%
12_face3 19,23 8,89 53,77%
13_mosi 16,79 7,60 54,73%
14_porsche 18,26 9,17 49,78%
15_lena 19,89 9,92 50,13%
16_eiffel_tower 18,34 7,82 57,36%
17_patrick_stewart 12,67 5,02 60,38%
46_contrast 19,05 12,44 34,70%
47_cross 27,06 16,88 37,62%
48_checkerboard8 15,72 11,17 28,94%
51_all_on_31 30,79 20,72 32,71%
55_SQC 21,12 10,86 48,58%
66_muri2 19,03 11,29 40,67%
69_pm 20,48 15,58 23,93%
70_1234 27,08 18,72 30,87%

Tabelle 6.1: Vergleich des Energieverbrauchs eines OSRAM PMOLED-Displays


zwischen dem konventionellen Treiberschema mit Dischargespan-
nung Vdis . Vth und dem energieoptimierten Treiberschema SQC
bei verschiedenen Testbildern.

ma durch Discharge dissipiert wird. Dies gilt nicht für den Bereich, wo die
Spaltenspannung hoch ist und die gewünschte Pixelhelligkeit niedrig ist, da
in diesem Fall auch im SQC-Betrieb Discharge notwendig ist.

Um diesen Zusammenhang zu verifizieren, wurde am Demonstrator mithilfe


von Standardtestbildern eine Messung des Stromverbrauchs im konventionel-
len und im SQC-Betrieb durchgeführt. Die Testbilder sind in Abb. 6.6 und
Kapitel 6.3: Bildqualität 88

die Messergebnisse in Tabelle 6.1 dargestellt.

Wie erwartet, ist die Energieeinsparung variabel und abhängig vom Bild. Für
die Bildreihe, die hier vermessen wurde, ergibt sich eine mittlere Energieein-
sparung von ca. 50%, was das Ergebnis von [19] weitgehend bestätigt. Das
kleinste Einsparpotential besteht bei Grafiken, wo wegen der scharfen Farb-
übergänge oft Discharge notwendig ist (z.B. „69_pm“, „48_checkerboard8“).
Das beste Ergebnis erzielt der Algorithmus bei Fotos, wo das Nachleuchten
maximal ausgenutzt werden kann (z.B. „11_face1“, „17_patrick_stewart“).

6.3 Bildqualität
Während sich durch die Tests am Demonstrator die erwartete Energieein-
sparung nachweisen ließ, wurde durch die Erweiterung aus Kapitel 2.3.3 ein
geringer Bildqualitätsverlust verursacht, welcher in Linearitätsproblemen bei
sehr dunklen Pixeln bestand2 . Dieser Effekt verschlechtert den Kontrast in
dunklen Bildbereichen.

Die dunklen Bildbereiche sind nach dem Weber-Fechner-Gesetz3 besonders


empfindlich [63]. Das Gesetz besagt, dass die subjektive menschliche Wahr-
nehmung von Reizen proportional zum Logarithmus der physikalischen Reiz-
stärke ist. Das heißt, dass ein kleiner absoluter Fehler der Pixelhelligkeit bei
dunklen Pixeln viel stärker als bei hellen Pixeln auffällt.

Dies lässt sich auch so begründen, dass ein absoluter Fehler von 1 bei ei-
ner Pixelsollhelligkeit von 3 gleich einem relativen Fehler von ca. 33% ist.
Bei einer Pixelsollhelligkeit von 50 beträgt der relative Fehler jedoch nur 2%.
Der absolute Fehler ∆Lum,best = |Lum−Lumsearch | für alle möglichen Kombi-
nationen aus Sollhelligkeit GV und Zustände Vin ist in Abb. 6.7 dargestellt.

Daraus lässt sich der relative Fehler erel = Lum,max
GV
berechnen. Wie Abb. 6.8
zu entnehmen, ist er maximal für kleine Grauwerte. Da er jedoch maximal
nur ca. 10% beträgt, ist eine sichtbare Störung nicht darauf zurückzuführen.

Während der Qualitätsverlust beim direkten Vergleich zwischen SQC und


dem konventionellen Treiberschema sichtbar ist, ist er ohne Vergleichsbasis
2
Linearität – In diesem Zusammenhang bedeutet Linearität, dass der Abstand zwischen
der tatsächlich empfundenen Pixelhelligkeiten zweier Pixel proportional zum Abstand der
Sollhelligkeiten dieser Pixel sein muss.
3
Weber-Fechner-Gesetz – Das Gesetzt wurde nach dem Physiologen Ernst Weber, der
das Gesetzt formulierte, und nach dem Physiker Gustav Fechner, der das Gesetz erweiterte,
benannt.
Kapitel 6.3: Bildqualität 89

Abb. 6.7: Der minimale absolute Fehler ∆Lum,best = |Lum − Lumsearch | für alle
möglichen Kombinationen aus Sollhelligkeit GV und Zustände Vin nach
Listing 2.1.


Abb. 6.8: Relativer Fehler erel = Lum,max
GV für alle möglichen Kombinationen aus
Sollhelligkeit GV und Zustände Vin .
Kapitel 6.3: Bildqualität 90

schwer erkennbar und nicht störend. Die Monotonie4 konnte mithilfe spezi-
eller Testbilder erfolgreich demonstriert werden.

Als mögliche Ursachen für den Linearitätsfehler wurden mehrere Effekte un-
tersucht, die bei der Displaycharakterisierung und bei der Ansteuerung auf-
grund Nichtidealitäten des Versuchsaufbaus und der Displays zu beachten
sind. Diese sind:
• Unvollständiger Discharge – Vermutlich aufgrund nicht vollständig ent-
ladener Parasitärkapazitäten ließ sich ein geringer Spannungsanstieg
nach dem Discharge beobachten. Dies führte zu sichtbarer Lichterzeu-
gung wegen Nachleuchten bei Pixeln mit Sollhelligkeit 0. Dieser Effekt
wurde durch Verlängerung der Dischargezeit und Durchführung eines
Discharges bei jedem Pixel mit Sollhelligkeit 0 behoben.
• Spannungsabfall aufgrund des Spaltenwiderstandes – Bei der Spalten-
spannungsmessung liegt der Spaltenwiderstand Rcol = RIT O zwischen
der OLED-Anode und dem Messpunkt (vgl. Abb. 2.4 auf Seite 9 bzw.
Abb. 2.5 auf Seite 11). Die bei Strominjektion gemessene Spaltenspan-
nung ergibt sich mit dem Spaltenstrom Icol = I0 zu

Vcol,inj = VOLED + RIT O · Icol . (6.5)

Da beim Nachleuchten für den Injektionsstrom Icol = 0 gilt, beträgt


die beim Nachleuchten gemessene Spannung Vcol,post = VOLED . Um die
Messergebnisse für die Spaltenspannung zu vereinheitlichen, muss die-
ser Offset bei der Bearbeitung der Messdaten beachtet werden.
• Logarithmische Entladung beim Nachleuchten – Der Entladevorgang
der Parasitärkapazitäten beim Nachleuchten erfolgt logarithmisch. Die
Zeit, die zur Entladung auf die Spannung Vcol = Vdis notwendig ist, ist
folglich sehr lang. Deswegen lässt sich der vollständige Entladevorgang
sogar bei der in der Messung benutzten Bildwiederholfrequenz ff rame =
25Hz nicht innerhalb der Zeilenadressierungszeit trow,25Hz messen (vgl.
State-P ost(t) in Abb. 2.13 auf Seite 22). Da sich für t > trow,25Hz
die Spaltenspannung kaum ändert und fast keine Helligkeit produziert
wird, wurde bei früheren Implementierungen der Bereich t > trow,25Hz
ohne Qualitätsverlust vernachlässigt. Um die vollständige Entladung zu
erfassen, wurde in dieser Arbeit für t ≈ 2 · trow,25Hz gemessen. Dadurch
verdoppelte sich der SRAM-Aufwand. Des Weiteren führte dies zu einer
Erhöhung der Logik-Chipfläche aufgrund gestiegener Register-Breite.
4
Monotonie – In diesem Zusammenhang bedeutet Monotonie, dass die empfundene
Pixelhelligkeit eines Pixels mit ansteigender Sollhelligkeit monoton steigend ist.
Kapitel 6.4: Taktfrequenz 91

Da diese Effekte nur phänomenologisch untersucht wurden und ihre Berück-


sichtigung nicht zur Behebung der Linearitätsfehler geführt hat, werden sie
hier nicht näher vorgestellt.

Als weitere Fehlerquelle wurde die Diskretisierung der Messdaten und die
Überlagerung der Diskretisierungsfehler aus den verschiedenen LUTs be-
trachtet. Eine Erhöhung der Auflösung der LUTs führte jedoch auch nicht
zur Verbesserung der Linearität. Da der Fehler nach Fotografieren und Aus-
drucken nicht mehr ersichtlich ist, lässt er sich hier nicht darstellen.

6.4 Taktfrequenz
Bei der Entwicklung des Hardwaredesigns wurden zwei Hauptkriterien be-
rücksichtigt – Einerseits die Prozessierungsgeschwindigkeit und andererseits
die benötigte Chipfläche. Während bei der angenommenen Taktfrequenz von
fclock = 50M Hz kein Bedarf zur weiteren Geschwindigkeitsoptimierung be-
steht, lässt sich die Taktfrequenz durch Parallelisierung der Pipeline (bzw.
Semi-Pipeline) senken.

R-LUT
fclock = 17MHz

Semi-Pipeline

R-LUT G-LUT B-LUT G-LUT


fclock = 50MHz fclock = 17MHz

Semi-Pipeline Semi-Pipeline

tsemi-pipe, 960(fclock = 50MHz) ≈ trow, soll B-LUT


fclock = 17MHz

Semi-Pipeline
a b
tsemi-pipe, 320(fclock = 17MHz) ≈ trow, soll

Abb. 6.9: a – Semi-Pipeline. b – Parallelisierung der Semi-Pipeline.

Nach Gl. (5.25) auf Seite 76 beträgt die Zeit, die für die Prozessierung von 960
Pixeln durch die Semi-Pipeline bei einer Taktfrequenz von fclock = 50M Hz
notwendig ist:
tsemi-pipe,960 (fclock = 50M Hz) ≈ trow,soll . (6.6)
Kapitel 6.5: Ausblick 92

Dabei werden die LUTs für die drei Farben (R-LUT, G-LUT, B-LUT) sequen-
tiell für die Berechnung der entsprechenden Farbanteile jedes Pixels benutzt
(vgl. Abb. 6.9a).

Eine alternative Implementierungsmöglichkeit besteht darin, dass die Semi-


Pipeline dreifach in Hardware realisiert wird. Dabei ist jede dieser Semi-
Pipelines für die Prozessierung jeweils eines Farbanteils zuständig und arbei-
tet parallel und unabhängig von den anderen.

Somit sinkt die Anzahl der Pixel, die innerhalb der Zeilenadressierungszeit
trow,soll von einer Semi-Pipeline bearbeitet werden müssen, zu 960
3
= 320.
Nach Gl. (6.6) ergibt sich für die Zeit, die zur Berechnung von 320 Werten
notwendig ist:
trow,soll
tsemi-pipe,320 (fclock = 50M Hz) ≈ . (6.7)
3
50M Hz
Bei einer Verringerung der Taktfrequenz auf 3
≈ 17M Hz ergibt sich für
die Prozessierungszeit:

tsemi-pipe,320 (fclock = 17M Hz) ≈ trow,soll . (6.8)

So lässt sich bei einer Taktfrequenz von 17MHz das Geschwindigkeitskriteri-


um erfüllen.

Da bei diesem Design die gleichen LUTs, jedoch nicht sequentiell sondern
parallel verwendet werden, bleibt der SRAM-Bedarf unverändert. Eine Stei-
gerung des Chipflächenbedarfs kommt folglich nur dadurch zustande, dass
drei anstatt nur einer Instanz der Semi-Pipeline benötigt werden.

Ein Vergleich von Gl. (5.27) und Gl. (5.28) zeigt, dass der Flächenbedarf
der Semi-Pipeline-Logik nur ca. 2% des Flächenbedarfs des SRAMs beträgt.
Folglich führt diese Parallelisierung zu einer Reduzierung der Taktfrequenz
von ca. 66% auf Kosten einer Erhöhung der benötigten Chipfläche um ledig-
lich ca. 4%.

6.5 Ausblick
Zur Verminderung der Designfläche können theoretisch weitere Schritte vor-
genommen werden. Für diesen Zweck können die näherungsweisen konstanten
und die näherungsweise linearen Bereiche der Messkurven aus Abb. 2.13 auf
Seite 22 eliminiert werden. Wie bereits in Kapitel 6.3 erwähnt, wurden sie
Kapitel 6.5: Ausblick 93

bei früheren Implementierungen ohne Qualitätsverlust vernachlässigt. Dies


würde den SRAM-Bedarf näherungsweise halbieren. Wegen der verringerten
Größe der Register würde es auch den Logik-Flächenbedarf verringern. Der
Gesamtflächenbedarf für diesen Fall errechnet sich zu ca. 800 000 GE (vgl.
auch Gl. 6.4).

Wie in Kapitel 6.3 beschrieben, lässt sich ein Linearitätsfehler in der erweiter-
ten SQC-Variante beobachten. Dieser muss systematisch untersucht werden.
Ein Ansatz wäre ein Übergang auf eine 32-Bit Prozessierung auf dem PC
mithilfe von MATLAB. So lässt sich der Diskretisierungsfehler minimieren
und als Fehlerquelle weitgehend ausschließen. Eine Analyse des Verlaufs der
am Display gemessenen Spaltenspannung und Vergleich zur erwarteten Spal-
tenspannung kann weitere Ursachen für Nichtübereinstimmungen klären.

Wie bereits erwähnt, muss das System in der Zukunft auf RGB-Displays er-
weitert werden. Da dies bei der Entwicklung berücksichtigt wurde, sollte der
Übergang unproblematisch erfolgen. Wegen des unterschiedlichen physikali-
schen Aufbaus der roten, grünen und blauen OLEDs, müssen diese separat
vermessen und prozessiert werden.

Eine weitere Optimierung lässt sich durch die Kombination von SQC mit
dem Algorithmus CMLA5 [64] erzielen. Dadurch lassen sich die Lebensdauer,
Auflösung und Energieeffizienz von PMOLED-Displays noch weiter steigern.

Da während des ganzen Entwicklungsprozesses stets großer Wert auf Mo-


dularität, Synthetisierbarkeit, Allgemeingültigkeit, übersichtlichen Program-
mierstil und gute Dokumentation [65–75] gelegt wurde, sollten weitere Mo-
difikationen und Erweiterungen am Design unproblematisch vollziehbar sein.
Dies sollte den kommerziellen Erfolg dieser Technologie erleichtern und be-
schleunigen.

5
CMLA – Engl. Consecutive Multiline Addressing.
7 ZUSAMMENFASSUNG 94

7 Zusammenfassung
Das Ziel dieser Diplomarbeit war, einen effizienten Prozessor für die Um-
setzung im Echtzeit-Betrieb des energieoptimierten Treiberschemas SQC für
PMOLED-Displays in einem FPGA zu implementieren.

Das Treiberschema SQC lässt sich als eine zweidimensionale Lookup-Tabelle


(LUT) realisieren. Aufgrund der Zweidimensionalität ist diese LUT sehr groß.
Der Speicheraufwand vervielfacht sich durch die Notwendigkeit eine solche
LUT pro unterstützter Displayhelligkeit zu speichern. Einen Ausweg bietet
ein Prozessor, der aus wenigen 1D-LUTs im Betrieb die für SQC benötigten
Daten generiert.

Die Herausforderung besteht einerseits darin, dass die Prozessierungsgeschwin-


digkeit sehr hoch sein muss, damit ein störungsfreier Bildaufbau gewährleis-
tet wird. Andererseits sollte das Hardwaredesign bezüglich der benötigten
Chipfläche optimiert werden, um eine effiziente und kostengünstige Imple-
mentierung zu gewährleisten.

In dieser Arbeit wurde von einem RGB PMOLED-Display mit der Auflösung
240 × 320 und einer Bildwiederholfrequenz von 100Hz ausgegangen. Um die
Anforderungen an die Prozessierungsgeschwindigkeit zu erfüllen, wurde der
Prozessor als eine Pipeline realisiert. Dies ermöglichte eine sehr hohe Pro-
zessierungsgeschwindigkeit. Die dazu benötigte Chipfläche ist viel geringer
als bei der Implementierung als eine 2D-LUT. Für geringere Anforderun-
gen an die Prozessierungsgeschwindigkeit, wie etwa bei kleinerer Framerate
und/oder geringerer Displayauflösung, lässt sich die Fläche weiter reduzieren.
Dies stellte ein sehr gutes Ergebnis dar.

Die Messdatensätze für verschiedene Displayhelligkeiten, die das Display cha-


rakterisieren, müssen im ROM gespeichert werden. Um den ROM-Bedarf zu
minimieren, wurden die Messdatensätze nur stützpunktartig gespeichert. Da-
von werden auf dem Chip die vollständigen 1D-LUTs, die zum SQC-Betrieb
benötigt werden, generiert. Hierzu wurden die Algorithmen binäre Suche und
Bresenham-Linienalgorithmus benutzt, die für diese Anwendung modifiziert
wurden.

Mithilfe eines Demonstrators konnte die Funktionsfähigkeit des Designs und


die erwartete Energieeinsparung von ca. 50% im Vergleich zum konventionel-
len Ansteuerungsverfahren verifiziert werden. Es wurde jedoch ein geringer
Qualitätsverlust infolge einer Erweiterung des Treiberschemas beobachtet,
7 ZUSAMMENFASSUNG 95

der auf Linearitätsfehler zurückzuführen ist und in Zukunft näher untersucht


werden muss.

Das in dieser Diplomarbeit implementierte Hardwaredesign bestätigt pra-


xisnah, dass sich ein Prozessor für das energieoptimierte Treiberschema SQC
effizient und kostengünstig realisieren lässt. Da während der Entwicklung
stets Rücksicht auf Allgemeingültigkeit und Modularität des Hardwaredesi-
gns genommen wurde, lässt es sich leicht modifizieren und erweitern. Dies
sollte die Entwicklung eines Standard-Treiberchips erleichtern, der die weite-
re kommerzielle Verbreitung der kostengünstigen PMOLED-Displays ermög-
licht.
ABBILDUNGSVERZEICHNIS 96

Abbildungsverzeichnis
1.1 Aktuelle OLED Anwendungen. Von links nach rechts: Videoarm-
banduhr mit 128x128 OLED Display und 8GB Speicher [1],
31-Zoll OLED Fernseher der Firma LG, vorgestellt bei der
IFA-2010 in Berlin [2], Konzept eines faltbaren Smartphone
der Firma Kyocera, vorgestellt bei der CTIA 2009 [3]. . . . . . 1
2.1 Vereinfachter Aufbau einer OLED [5]. . . . . . . . . . . . . . . 4
2.2 Vereinfachte schematische Darstellung einer OLED [8]. . . . . 5
2.3 Vereinfachte schematische Darstellung eines Abschnitts eines
Displays. Links: PMOLED. Rechts: AMOLED (nach [5]). . . . 6
2.4 Vereinfachung des elektrischen Modells einer OLED (nach [13]). 9
2.5 Ersatzschaltbild eines PMOLED-Displays (nach [17]). . . . . . 11
2.6 a – Einfaches Beispiel einer Helligkeitsmatrix eines 2-Bit 2 × 2
PMOLED-Displays. b – Das Ergebnis der Ansteuerung. c, d
– Vereinfachte schematische zeitliche Darstellung der Zeilen-
bzw. Spaltenansteuerung. . . . . . . . . . . . . . . . . . . . . . 14
2.7 Vereinfachtes Ersatzschaltbild eines angesteuerten OLED-Pixels
mit Berücksichtigung der resultierenden Parasitärkapazitäten
der restlichen Zeilen (nach [19]). . . . . . . . . . . . . . . . . . 15
2.8 PSPICE-Simulation des zeitlichen Verlaufs der Diodenspan-
nung VOLED (analog der Spaltenspannung Vcol ), des Dioden-
stroms IOLED und des Parasitärstroms Icap an einem OLED-
Pixels infolge eines PWM-Pulses (qualitativ). . . . . . . . . . 16
2.9 Optische Messung zur Veranschaulichung des nichtlinearen Zu-
sammenhangs zwischen Injektionszeit und erzeugter Lichtmen-
ge. Äquidistante Zerlegung der Injektionszeitachse. . . . . . . 18
2.10 Optische Messung zur Veranschaulichung des nichtlinearen Zu-
sammenhangs zwischen Injektionszeit und erzeugter Lichtmen-
ge. Äquidistante Zerlegung der erzeugten Lichtmenge-Achse. . 18
2.11 Qualitativer zeitlicher Vergleich der Treiberschemata SLA mit
Vdis = 0 (a) und SQC (b). Die Fläche unter der IOLED Kurve
entspricht der in Licht umgewandelten elektrischen Leistung
[19]. INJ – Strominjektion; DIS – Discharge; Z – Hochohmige
Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.12 Grundlegende systematische Darstellung des Algorithmus SQC. 21
2.13 Graphische Darstellung der Ergebnisse der elektrischen und
optischen Messungen mit Kennzeichnung der für SQC wichti-
gen Größen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.14 Vergleich des konventionellen (a) und erweiterten (b) SQC-
Treiberschemas (qualitativ). . . . . . . . . . . . . . . . . . . . 27
ABBILDUNGSVERZEICHNIS 97

2.15 Der Verlauf der Spaltenspannung und der Helligkeit bei Prech-
arge mit doppelter Stromamplitude (links) ist steiler im Ver-
gleich zur normalen Strominjektion (rechts). . . . . . . . . . . 29
3.1 Blockschaltbild des SQC-Demonstrators. . . . . . . . . . . . . 35
4.1 Messaufbau zur Charakterisierung von PMOLED-Displays (nach
[26]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Vereinfachtes Schaltbild der Treiberschaltung (nach [28]). . . . 37
4.3 Die graphische Benutzeroberfläche getluts die im Rahmen die-
ser Arbeit zur Steuerung der Messhardware in C# .NET ent-
wickelt wurde. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4 Veranschaulichung der Ansteuerung in den Messmodi bei ei-
ner Bildwiederholfrequenz ff rame = 25Hz (qualitativ, verein-
facht): Strominjektion (a) und Nachleuchten (b). Das graue
Rechteck oben links illustriert den Zeitbereich, der innerhalb
einer Zeilenadressierzeit bei ff rame = 100Hz durchlaufen wird. 41
4.5 Picoammeter Keithley 6485 (links) und Photodiode Newport
818-SL-L (rechts) [34, 35]. . . . . . . . . . . . . . . . . . . . . 42
4.6 Graphische Darstellung des Suchbaums einer binären Suche.
Die Nummern in Kreisen entsprechen der Adresse des unter-
suchten Elements. Die Bedingungen in Rechtecken gelten für
den Fall, dass der gesuchte Wert im Feld nicht enthalten ist.
Das Beispiel aus Tabelle 4.2 ist dargestellt in grün (nach [38]). 48
4.7 Zeichnen einer Geraden mit Startpunkt (x0 ; y0 ) und Endpunkt
(x1 ; y1 ) auf einem Raster. Die grau markierten Rasterpunkte
sind die vom Bresenham-Linienalgorithmus berechneten Punk-
te (nach [42]). . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.8 Veranschaulichung der Erweiterung und Modifikation des Bresenham-
Linienalgorithmus. a: Zu interpolierende Punkte (x0 ; y0 ), (x1 ; y1 )
mit Steigung m > 1; b: Umwandlung zu einer Geraden mit
Steigung m < 1 durch Vertauschen der Achsen; c: Ergebnis des
ursprünglichen (grau markiert), des nicht modifizierten (rot
markiert) und des modifizierten (grün markiert) Bresenham-
Linienalgorithmus. . . . . . . . . . . . . . . . . . . . . . . . . 55
4.9 Beispiel einer vierstufigen Befehlspipeline zur Prozessierung
von 4 Pixeln (P0 . . . P3 ). a: Befehlspipeline; b: Sequentielle Ver-
arbeitung (nach [46]). . . . . . . . . . . . . . . . . . . . . . . . 59
5.1 Blockschaltbild eines ROM-Moduls (a) und zeitliche Darstel-
lung eines Lese-Datenzugriffs (b). . . . . . . . . . . . . . . . . 61
5.2 Interpolation und inverse LUT. Die vollständige LUT besteht
aus den grün markierten Punkten. Die inverse LUT besteht
aus den grün und blau markierten Punkten. . . . . . . . . . . 68
ABBILDUNGSVERZEICHNIS 98

5.3 Blockschaltbild der Pipelineimplementierung von SQC. pre0 , pre1 :


Die Stufen zur Berechnung der Anfangsphase. ite00 . . . ite73 : Die
Stufen zur iterativen Berechnung von tinj , die tiefgestellte Num-
mer stellt den Teil der jeweiligen Iteration, die hochgestellte
Nummer die Laufnummer der Iteration dar (die Iterationen
ite2i . . . ite6i wurden zur Erhöhung der Übersichtlichkeit nicht
dargestellt). out: Die letzte Stufe zur Bestimmung von Vcol,i+1 . 69
5.4 Darstellung des Semi-Pipeline-Designs. Anstatt 8 Iterations-
stufen (ite0 . . . ite7 ) werden nur 4 (ite0 . . . ite3 ) eingesetzt und
zweifach benutzt. Die Datenflussschalter S1 und S2 sorgen für
die korrekte Datenflusssteuerung und sind im Zustand S1 = 0
un S2 = 1 dargestellt. . . . . . . . . . . . . . . . . . . . . . . . 74
5.5 Zeitlicher Auszug des Datenflusses. in – Eingabe; out – Aus-
gabe; S1 – Datenflussschalter 1; S2 – Datenflussschalter 2. . . 75
5.6 Blockschaltbild des Gesamtdesigns mit Schwerpunkt auf das
Modul „Set Bright“ zur Änderung der Displayhelligkeit. . . . . 77
5.7 Dual-Display Demonstrator. . . . . . . . . . . . . . . . . . . . 80
5.8 Die graphische Benutzeroberfläche SQC GUI, die im Rahmen
dieser Arbeit zur Steuerung des Demonstrators in C# .NET
entwickelt wurde. . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1 Die Injektionszeit tinj als Funktion der Spaltenspannung Vin
und der Sollhelligkeit GV bei SQC-Ansteuerung. . . . . . . . . 82
6.2 Die Spaltenspannung des nächsten Pixels Vout als Funktion der
Spaltenspannung Vin und der Sollhelligkeit GV . . . . . . . . . 83
6.3 Die Anfangsphase pretodo als Funktion der Spaltenspannung
Vin und der Sollhelligkeit GV . Für den Wert von pretodo gilt
Folgendes: pretodo = 0 – Discharge; pretodo = 1 – Strominjek-
tion; pretodo = 2 – Hochohmig; pretodo = 3 – Strominjektion
mit doppelter Stromamplitude. . . . . . . . . . . . . . . . . . 83
6.4 Die benötigte Injektionszeit tinj,conv als Funktion der gewünsch-
ten Pixelhelligkeit GV bei dem konventionellen Treiberschema. 85
6.5 Die für jede Kombination [GV ; Vin ] eingesparte Strominjektion
bei SQC im Vergleich zum konventionellen Treiberschema. . . 85
6.6 Standardtestbilder. . . . . . . . . . . . . . . . . . . . . . . . . 86
6.7 Der minimale absolute Fehler ∆Lum,best = |Lum − Lumsearch |
für alle möglichen Kombinationen aus Sollhelligkeit GV und
Zustände Vin nach Listing 2.1. . . . . . . . . . . . . . . . . . . 89

6.8 Relativer Fehler erel = Lum,max GV
für alle möglichen Kombina-
tionen aus Sollhelligkeit GV und Zustände Vin . . . . . . . . . . 89
6.9 a – Semi-Pipeline. b – Parallelisierung der Semi-Pipeline. . . . 91
LITERATURVERZEICHNIS 99

Literaturverzeichnis
[1] Video Watch with OLED Screen. Stand 15.12.2010. url: http://www.
thinkgeek.com/gadgets/watches/8e18/?i=front.
[2] LG Electronics show new 31 inch 3D Panel at IFA-2010. Stand 15.12.2010.
url: http://www.oled-display.net/oled-television.
[3] Kyocera shows off preposterous, beautiful EOS folding OLED phone
concept. Stand 15.12.2010. url: http : / / mobile . engadget . com / 2
009/04/16/kyocera- shows- off- preposterous- beautiful- eos-
folding-oled-phone/.
[4] Organic light-emitting diode. Stand 15.12.2010. url: http://en.wikipedia.
org/wiki/Oled.
[5] How OLEDs Work. Stand 13.12.2010. url: http://electronics.
howstuffworks.com/oled.htm.
[6] Gunar Kaune. “Röntgenografische Charakterisierung von Indium-Zinn-
Oxid-Dünnschichten”. Diplomarbeit. Technische Universität Chemnitz,
2005.
[7] Joseph Shinar. Organic Light-Emitting Devices: A Survey. Springer,
2004.
[8] Homer Antoniadis, Opto Semiconductors und OSRAM. Overview of
OLED Display Technology. 2004.
[9] Organische Leuchtdiode. Stannd 16.12.2010. url: http://de.wikipedia.
org/wiki/Organische_Leuchtdiode.
[10] Introduction to OLED displays and TVs. Stand 13.12.2010. url: http:
//www.oled-info.com.
[11] Chih-Lung Lin und Yung-Chih Chen. “A Novel LTPS-TFT Pixel Cir-
cuit Compensating for TFT Threshold-Voltage Shift and OLED De-
gradation for AMOLED”. In: IEEE ELECTRON DEVICE LETTERS
28, NO. 2 (2007), S. 129–131.
[12] Jan Johannsen. 0,3 Millimeter: Hauchdünner Bildschirm von Sony.
Stand 01.01.2011. url: http://www.netzwelt.de/news/77553- 0-
3-millimeter-hauchduenner-bildschirm-sony.html.
[13] J. P. Bender, B. J. Norris und J. F. Wager. “OLED modeling via
SPICE”. In: (2000).
[14] Sang-Gun Leea und Reiji Hattorib. “Physics-based OLED Analog Be-
havior Modeling”. In: Journal of Information Display 10 (2009), S. 101–
106.
LITERATURVERZEICHNIS 100

[15] Richard Sartison. “Eine universelle Methode zur messtechnischen Cha-


rakterisierung von LCDs mit Local-Dimming RGB-Backlight”. Diplom-
arbeit. Universität des Saarlandes, 2011.
[16] Dieter Meschede. Gerthsen Physik. 23., überarbeite Auflage. Springer-
Verlag Berlin Heidelberg, 2006.
[17] Michael Buczek. “Verlustleistungsoptimiertes Treiberschema für ein PMOLED-
Display”. Diplomarbeit. Universität des Saarlandes, 2007.
[18] Martin Becker. “Effiziente Implementierung der zustandsgesteuerten
Helligkeitsfunktion für ein PMOLED-Treiberschema”. Diplomarbeit.
Universität des Saarlandes, 2010.
[19] Cosmin Codrea, Michael Buczek und Chihao Xu. “A Very Power Ef-
ficient State-dependent Charge-controlled Driving Scheme for PMO-
LEDs”. In: (2009).
[20] Ricky Ng. “SOLOMON Systech’s OLED Driver IC Optimizes Display
Performance”. In: (2002).
[21] Edward H. Hellen. “Verifying the diode–capacitor circuit voltage de-
cay”. In: American Journal of Physics 71 (2003), S. 797–800.
[22] Tobias Jung. Implementierung eines OLED-Controllers. Praktikums-
anleitung. 2008.
[23] What is PMOLED? Stand 21.01.2011. url: http://www.oled-display.
net/what-is-pmoled.
[24] Chihao Xu. “Gamma-Korrektur-Algorithmen mit Lookup-Tabellen zur
Steuerung von PMOLED Displays”. Erfindungsmeldung. 2010.
[25] Chihao Xu. SQC Concept. 2010.
[26] Cosmin Codrea. Messaufbau zur Charakterisierung von OLED-Displays.
2009.
[27] Inc. Digilent. Digilent D2-FT System Board Reference Manual. Daten-
blatt. 2004.
[28] Cosmin Codrea. Vereinfachtes Schaltbild der Treiberschaltung zur Cha-
rakterisierung vom PMOLED-Displays. 2009.
[29] Infineon. BSS 84 P SIPMOS Small-Signal-Transistor. Datenblatt. 2006.
[30] Christoph Hitzelberger Chihao Xu. Mikroelektronik III Entwurf analo-
ger und mixed-signal CMOS-Schaltungen. Vorlesungsmanuskript. 2006.
[31] Maxim. MAXIM 10 Ohm, Quad, SPST, +3V Logic-Compatible Analog
Switches. Datenblatt. 2001.
LITERATURVERZEICHNIS 101

[32] NXPSemiconductors. HEF4069UB Hex inverter. Datenblatt. 2009.


[33] Serial interface (RS-232) Verilog Code. Stand 22.04.2010. 2009. url:
http://www.fpga4fun.com/SerialInterface.html.
[34] Inc. Keithley Instruments. KEITHLEY Model 6485 Picoammeter In-
struction Manual. Datenblatt. 2001.
[35] Newport. 818 Series Photodetector Guide. Datenblatt. 2005.
[36] Inc. Agilent Technologies. Agilent InfiniiVision 5000/6000/7000 Series
Oscilloscopes. Datenblatt. 2010.
[37] Wikipedia. Binary search. Stand 14.02.2011. 2011. url: http://en.
wikipedia.org/wiki/Binary_search.
[38] Donald E. Knuth. The Art Of Computer Programming, Volume 3: (2nd
ed.) Sorting and Searching. Addison Wesley Longman Publishing Co.,
Inc., 1998.
[39] The Free Software Foundation. GNU libavl 2.0.1. Stand 15.02.2011.
2011. url: http://www.delorie.com/gnu/docs/avl/libavl_279.
html.
[40] Hannah Bayer und Markus E. Nebel. “Evaluating Algorithms accor-
ding to their Energy Consumption”. In: CiE (Computability in Europe)
(2009).
[41] J. E. Bresenham. “Algorithm for computer control of a digital plotter”.
In: IBM SYSTEMS JOURNAL 4 (1965), S. 25–30.
[42] Guilherme Polo. Computer Graphics - Line Rasterization. Stand 11.02.2011.
2011. url: http://gpolo.awardspace.info/.
[43] John Kennedy. “Bresenham’s Integer Only Line Drawing Algorithm”.
In: (2009).
[44] Wikipedia. Bresenham’s line algorithm. Stand 08.07.2010. 2010. url:
http://en.wikipedia.org/wiki/Bresenham’s_line_algorithm.
[45] Michael Abrash. Graphics Programming Black Book. Coriolis Group
Books, 1997.
[46] Wikipedia. Pipeline (Prozessor). Stand 16.02.2011. 2011. url: http:
//de.wikipedia.org/wiki/Pipeline-Architektur.
[47] Zuo Wang. “An Intelligent Multi-Port Memory”. In: JOURNAL OF
COMPUTERS 5 (2010), S. 471–478.
[48] Nick Sawyer und Marc Defossez. Quad-Port Memories in Virtex Devi-
ces. Datenblatt. Xilinx. 2002.
LITERATURVERZEICHNIS 102

[49] M. Hiregoudar Arati u. a. “Reconfiguration of Memory for High Speed


Data Search”. In: BVB-IEEE (2006).
[50] Jean-Louis Brelet. An Overview of Multiple CAM Designs in Virtex
Family Devices. Datenblatt. 1999.
[51] Steven A. Guccione, Delon Levi und Daniel Downs. “A Reconfigurable
Content Addressable Memory”. In: Proceedings of the 15 IPDPS 2000
Workshops on Parallel and Distributed Processing. 2000.
[52] Xilinx. Content-Addressable Memory v5.1. Datenblatt. Xilinx. 2004.
[53] Jean-Louis Brelet und Lakshmi Gopalakrishnan. Using Virtex-II Block
RAM for High Performance Read/Write CAMs. Datenblatt. Xilinx.
2002.
[54] Steve Kilts. Advanced FPGA Design Architecture, Implementation and
Optimization. Wiley-IEEE Press, 2007.
[55] Doug Burger. Design Compiler Tutorial. 2007.
[56] Synopsys. HDL Compiler for Verilog User Guide. Anleitung. 2010.
[57] Xilinx. Synopsys Synthesis and Simulation Design Guide. Anleitung.
Xilinx. 1999.
[58] X-FAB. 0.18 µm CMOS Technology XC018. Datenblatt. 2008.
[59] Wikipedia. Prozesskontext. Stand 22.02.2011. 2011. url: http://de.
wikipedia.org/wiki/Prozesskontext.
[60] Wikipedia. 1T-SRAM. Stand 20.02.2011. 2011. url: http://en.wikipedia.
org/wiki/1T-SRAM.
[61] Chihao Xu. Setup-Process/Driving-Process. 2010.
[62] Xilinx. Virtex-5 Family Overview. Datenblatt. 2009.
[63] Selig Hecht. “The Visual Discrimination Of Intensity And The Weber-
Fechner Law”. In: The Journal of General Physiology (1924), S. 235–
267.
[64] Chihao Xu u. a. “Consecutive multiline addressing: A scheme for ad-
dressing PMOLEDs”. In: SID 16/2 (2008), S. 211–219.
[65] Ming-Bo Lin. Digital System Designs and Practices Using Verilog HDL
and FPGAs. Wiley, 2008.
[66] Deepak Kumar Tala. Verilog Tutorial. Online Tutorial. Stand 01.04.2010.
2010. url: http://www.asic-world.com/verilog/veritut.html.
LITERATURVERZEICHNIS 103

[67] Clifford E. Cummings. “The Fundamentals of Efficient Synthesizable


Finite State Machine Design using NC-Verilog and BuildGates”. In:
International CADENCE Usergroup Conference (2002).
[68] Clifford E. Cummings. “Coding And Scripting Techniques For FSM
Designs With Synthesis-Optimized, Glitch-Free Outputs”. In: SNUG-
2000 Boston (2000).
[69] Clifford E. Cummings. “State Machine Coding Styles for Synthesis”.
In: SNUG 1998 (1998).
[70] Randy Nuss. “A New Paradigm for Synchronous State Machine Design
in Verilog”. In: (1999).
[71] Clifford E. Cummings. “full_case parallel_case, the Evil Twins of Ve-
rilog Synthesis”. In: SNUG-1999 Boston (1999).
[72] Clifford E. Cummings und Don Mills. “Synchronous Resets? Asynchro-
nous Resets? I am so confused! How will I ever know which to use?”
In: SNUG 2002 (2002).
[73] Don Mills und Clifford E. Cummings. “RTL Coding Styles That Yield
Simulation and Synthesis Mismatches”. In: SNUG-1999 (1999).
[74] Mike Parkin. “Writing Successful RTL Descriptions in Verilog”. In:
Synopsys Methodology Program (2009).
[75] Stuart Sutherland und Don Mills. Verilog and SystemVerilog Gotchas:
101 Common Coding Errors and How to Avoid Them. Springer, 2007.