Beruflich Dokumente
Kultur Dokumente
UN
A
S
Lehrstuhl für Mikroelektronik
Prof. Dr.-Ing. Chihao Xu
SA
IS
R
S
A VIE N
Diplomarbeit
zur Erlangung des akademischen Grades
eines Diplom-Ingenieurs
der Naturwissenschaftlich-Technischen Fakultät II
- Physik und Mechatronik -
der Universität des Saarlandes
– vertraulich –
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.
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.
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
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.
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].
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.
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
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].
LUMO e- e-
Licht HOMO
h +
h+
h+
ca. 100 nm 10 - >100nm <100nm >100nm
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].
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].
Organische Organische
Schichten Schichten
Anode TFT
Matrix
Anode
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]).
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
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 .
Tabelle 2.1: Übersicht über die photometrischen und die entsprechenden radio-
metrischen Größen.
C1 C2 C3 Cn
Cp Cp Cp Cp
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.
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.
C0 C1 C0 C1
a b
R0 0 1 R0
R1 2 3 R1
c
R0
R1
tframe
C1
I1=I0
Vcol
IOLED Icap
R1
Vcomh
Ceq
R2...Rm
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
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
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.
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]
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]
Qcap_i+1
Qcap_i Qcap_i
t t
IOLED IOLED
t t
a b
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:
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
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
Vcol, i
SQC Vcol, i+1
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.
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.
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).
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:
Die Zeit tz , die für das Nachleuchten übrig bleibt, berechnet man aus der
Zeilenadressierzeit trow und aus der Suchinjektionszeit tsearch zu
Damit kann man die Helligkeit, die beim Nachleuchten erreicht wird, berech-
nen (analog zu Gl. (2.19)):
Die Helligkeit Lumsearch (V1,i , tsearch ) ergibt sich aus der Summe von Gl. (2.19)
und Gl. (2.23):
Bei jeder Iteration wird der absolute Fehler zwischen der berechneten Hel-
ligkeit und der Sollhelligkeit berechnet (Zeilen 23 bis 28 in Listing 2.1):
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):
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.
a t
Vcol
b t
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
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
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).
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%.
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
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.
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:
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
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.
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
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
Vcc
Vcc ≈ 14V
Vcomh = 8V
Spaltentreiber Vgate = 9V … 11,5V
Vdis = 2,5V
MAX313L MAX313L
Spannungsprecharge - Schalter
MAX313L
Discharge - Schalter
MAX313L
Zeilentreiber
3,3V Vcomh
Vcomh
OLED-
Pixel
Vdis
FPGA
row_ctrl Level Shifter
HEF4069UB
MC14504
Für den Fall normaler Strominjektion mit einfacher Amplitude ist nur der
Kapitel 4.1: Displaycharakterisierung 38
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.
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.
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.
Abb. 4.3: Die graphische Benutzeroberfläche getluts die im Rahmen dieser Arbeit
zur Steuerung der Messhardware in C# .NET entwickelt wurde.
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.
trow
(100Hz)
Lum-Inj(t) t
State-Inj(t)
Lum-Post(t) Lumoffset t
Vcol, max
State-Post(t)
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).
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.
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
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)
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:
Die Helligkeit, die bei der Injektion während der restlichen Zeit erreicht wird,
errechnet sich zu:
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
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.
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
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).
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 ...
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.
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]).
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
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.
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)
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
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
y y
(x1;y1)
yx = x
a (x0;y0) x b xy = y c x
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.
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).
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.
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
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
clock clock
address
address ROM data
data
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
Tabelle 5.1: Auszug aus dem Messdatensatz der Messung des Nachleuchtens.
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):
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:
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)
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
Tabelle 5.3: Eliminierung der t-LUT durch Abbildung der Zeit auf die Adresse.
Interpolation aller Zwischenwerte ist erforderlich.
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.
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 ):
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
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.
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
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
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.
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.
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.
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.
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.
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).
S1 SQC
Lum tinj
ite1 ite3
S2
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
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.
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.
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
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.
Abb. 5.6 dient der Veranschaulichung. Die ROMs ROM0 . . . ROMk enthalten
Kapitel 5.5: Implementierung verschiedener Displayhelligkeiten 78
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).
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].
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.
Gl.(5.21)
BROM,cell ≈ 20% · BSRAM,cell = 20% · 0, 8 GE = 0, 16 GE. (5.31)
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:
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)
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
70_1234
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.
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.
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.
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
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
Semi-Pipeline Semi-Pipeline
Semi-Pipeline
a b
tsemi-pipe, 320(fclock = 17MHz) ≈ trow, soll
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).
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:
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
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.
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.
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.
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
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