Sie sind auf Seite 1von 116

Universitt des Saarlandes

Lehrstuhl fr Mikroelektronik
Prof. Dr.-Ing. Chihao Xu
Lehrstuhl Mikroelektronik
Praktikum Mikroelektronik SS 2013
Implementierung eines OLED-Controllers
in einem FPGA
Praktikumsbetreuung: Nico Angeli (s9niange@stud.uni-saarland.de)
Christopher Uhl (s9chuhll@stud.uni-saarland.de)
c 2013 Lehrstuhl fr Mikroelektronik der Universitt des Saarlandes
Inhaltsverzeichnis
1 Einfhrung Motivation 7
2 Grundlagen der Bildverarbeitung 9
2.1 Mathematische Beschreibung von Bildern . . . . . . . . . . . . . . . . . 9
2.2 Farbvergrauung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Histogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Histogrammspreizung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Histogrammegalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Versuch I: Bildbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6.1 Aufgabe 1 Farbvergrauung . . . . . . . . . . . . . . . . . . . . 16
2.6.2 Aufgabe 2 Histogrammspreizung . . . . . . . . . . . . . . . . 17
2.6.3 Aufgabe 3 Histogrammegalisierung . . . . . . . . . . . . . . . 17
3 Nachahmung eines OLED Pixels 19
3.1 Wie funktioniert ein OLED-Display? . . . . . . . . . . . . . . . . . . . . 19
3.2 Ersatzschaltbild OLED-Modell . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Helligkeitsmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 Passiv-Matrix (PM) / Aktiv-Matrix (AM) . . . . . . . . . . . . . . . . . 25
3.4.1 Passiv-Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4.2 Aktiv-Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5 Amplituden-/Pulsweitenmodulation . . . . . . . . . . . . . . . . . . . . 26
3.5.1 Kapazitives Verhalten von Passiv-Matrix . . . . . . . . . . . . . 28
3.6 Die Leuchtdiode (LED) . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6.1 Parasitre Effekte . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.7 Gammakorrektur zur Linearisierung . . . . . . . . . . . . . . . . . . . . 32
3.8 Versuch II: Zusammenhang von Licht und Strom . . . . . . . . . . . . . 37
3.8.1 Aufgabe 1 Amplitudenmodulation . . . . . . . . . . . . . . . . 44
3.8.2 Aufgabe 2 Pulsweitenmodulation . . . . . . . . . . . . . . . . 46
3.8.3 Aufgabe 3 Gammakorrektur . . . . . . . . . . . . . . . . . . . 48
4 Von der Theorie zur Praxis 49
4.1 Einfhrung in VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.1 Eigenschaften von VHDL . . . . . . . . . . . . . . . . . . . . . 50
4.1.2 Modellierungsmethodiken . . . . . . . . . . . . . . . . . . . . . 51
4.1.3 Aufbau eines VHDL-Programms . . . . . . . . . . . . . . . . . 52
4.1.4 Signalauswertung . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.1.5 Sprachelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.1.6 Beschreibung sequentieller Schaltungen in VHDL . . . . . . . . 61
4.1.7 Testmuster und Testbench . . . . . . . . . . . . . . . . . . . . . 64
4.1.8 Verwendung von Komponenten . . . . . . . . . . . . . . . . . . 68
4.2 Verwendete Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.1 FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3 Versuch III: VHDL Komponenten . . . . . . . . . . . . . . . . . . . . . 73
4.3.1 Aufgabe 1 Verwendete Software . . . . . . . . . . . . . . . . . 73
4.3.2 Aufgabe 2 Multiplexer . . . . . . . . . . . . . . . . . . . . . . 74
4.3.3 Aufgabe 3 Register . . . . . . . . . . . . . . . . . . . . . . . . 74
4.3.4 Aufgabe 4 Zhlwerk . . . . . . . . . . . . . . . . . . . . . . . 75
5 PWM - Singleline Adressierung 77
5.1 Single Line Adressierung (SLA) . . . . . . . . . . . . . . . . . . . . . . 77
5.1.1 Beispiel zur Berechnung t_lsb . . . . . . . . . . . . . . . . . . . 78
5.1.2 Eine Beispielansteuerung . . . . . . . . . . . . . . . . . . . . . . 78
5.2 VHDL-Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.1 Zustandsautomat . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.2 Instanzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3 Versuch IV: Single Line Addressierung . . . . . . . . . . . . . . . . . . 92
5.3.1 Aufgabe 1 Vorbereitende Aufgaben . . . . . . . . . . . . . . . 92
5.3.2 Aufgabe 2 Speicher-Block . . . . . . . . . . . . . . . . . . . . 93
5.3.3 Aufgabe 3 PWM-Zeile . . . . . . . . . . . . . . . . . . . . . . 95
5.4 Programmieren des kleinen Boards mit den LEDs . . . . . . . . . . . . 96
6 Das Demo-Board 99
6.1 Aufbau der OLED-Treiberplatine . . . . . . . . . . . . . . . . . . . . . . 100
6.2 Spaltentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.2.1 Konstantstromquelle . . . . . . . . . . . . . . . . . . . . . . . . 101
6.2.2 Discharge-Schalter . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.3 Zeilentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.4 Pegelumsetzer (Level Shifter) . . . . . . . . . . . . . . . . . . . . . . . . 102
6.5 Physikalischer Aufbau des OLED-Demonstrators . . . . . . . . . . . . . 104
6.6 Versuch V: Demoboard . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.6.1 Aufgabe 1 Erweiterung auf 4 x 4 und Discharge . . . . . . . . . 106
6.6.2 Aufgabe 2 Demoboard . . . . . . . . . . . . . . . . . . . . . . 107
6.6.3 Aufgabe 3 Erweiterung der Displaygre . . . . . . . . . . . . 108
6.7 Programmieren des groen Boards frs OLED-Display . . . . . . . . . 109
1 Einfhrung Motivation
OLED-Displays (Kurzform fr engl.: Organic Light Emitting Diode) sind aufgrund ih-
rer einfachen Bauweise billiger als beispielsweise TFT-LCDs. Sie bentigen im Betrieb
zudem weniger Leistung, da die aktive Hintergrundbeleuchtung entfllt. Ihren Einsatz n-
den Sie hauptschlich in kleinen Gerten, z.B. Uhren, MP3-Playern oder Keyboards, also
berall dort, wo ein geringer Energieverbrauch und kleine Abmessungen gefordert sind.
Aber auch in Smartphones (z. B. von SAMSUNG, Stand 2012) werden Aktiv-Matrix-
OLED-Displays, die in diesem Praktikum nur am Rande angesprochen werden, zuneh-
mend verwendet.
Abbildung 1.1: OLED-Anwendungen [8]
Auch wenn die Tendenz hin zu Aktiv-Matrix-Displays geht, gibt es Anwendungsfel-
der fr kleine Displays, die ber eine passive Matrix angesteuert werden. Da die bei der
aktiven Matrix fr jedes Pixel bentigten Transistoren entfallen, ergibt sich eine Kosten-
ersparnis. Die einzelnen Zeilen werden dabei sequentiell aktiviert, whrend alle Spalten
gleichzeitig adressiert werden, um die Pixel aueuchten zu lassen. Die Leuchtintensitt L
ist in erster Nherung proportional zur Ladung, die whrend der aktiven Phase eingeprgt
wird, in welcher das OLED-Pixel strahlend rekombiniert.
Praktikum am Lehrstuhl fr Mikroelektronik 7
1 Einfhrung Motivation Universitt des Saarlandes
Um die Helligkeit eines Pixels einstellen zu knnen, wre die Verwendung von Ampli-
tudenmodulation denkbar. Es ist jedoch sehr schwierig, die dazu bentigten exakt abge-
stuft einstellbaren Stromquellen herzustellen. Da zudem die Beherrschung von Zeit in der
Mikroelektronik recht einfach ist, greift man auf Pulsweitenmodulation (PWM) zurck.
Dies bietet zudem die Mglichkeit, weitere Verbesserungen vorzunehmen. Im sogenann-
ten Flattened-Singleline-Modus wird die PWM-Zyklendauer zugunsten einer geringeren
Stromamplitude an die maximale Helligkeit einer Spalte angepasst. Eine geringe Strom-
amplitude trgt zu einer greren Lebensdauer des Displays bei. Sie kann mithilfe der
Multiline-Ansteuerung, bei der gleichzeitig mehrere Zeilen aktiv sind, noch weiter ge-
senkt werden. Der dafr ntige Algorithmus wurde am Lehrstuhl fr Mikroelektronik der
Universitt des Saarlandes entwickelt. In diesem Praktikum soll darauf jedoch nicht nher
eingegangen werden.
Um neu entwickelte Algorithmen zu testen, bietet es sich an, diese auf einem FPGA
(Field Programmable Gate Array) zu realisieren. Die Entwicklung auf einem FPGA ist
verhltnismig schnell mglich und bietet einen guten bergang fr die sptere Reali-
sierung als Chip.
Das Ziel dieses Praktikums ist es, neben einer allgemeinen Einfhrung in die Grundlagen
der Bildverarbeitung, das Programmieren von FPGAs zu erlernen. Dazu wird ein Eva-
luation-Board von Xilinx verwendet, mit dem ein kleines Monochrom-OLED-Display
angesteuert wird.
8 Praktikum am Lehrstuhl fr Mikroelektronik
2 Grundlagen der Bildverarbeitung
2.1 Mathematische Beschreibung von Bildern
Nach der Abtastung und Diskretisierung eines Bildes liegt die Bildinformation in Form
eines orts- und wertdiskreten Signals im Speicher vor. Das Grauwertbild lsst sich so
durch eine zweidimensionale Funktion darstellen. Die Werte der Funktion beschreiben
Graustufen im Bereich von 0 (schwarz) bis 255 (wei), was einer Ausung von 8 Bit
entspricht.
g
min
=0 g(i, j) 255 = g
max
(2.1)
i : Nummer der Spalte
j : Nummer der Zeile
Hier ein einfaches Beispielbild und die dazugehrige Bildmatrix:
Abbildung 2.1: Zweier-Schachbrett mit 16 10 Pixeln und 8 Bit Ausung
D
1
=

0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255


0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255
255 255 0 0 255 255 0 0 255 255 0 0 255 255 0 0
255 255 0 0 255 255 0 0 255 255 0 0 255 255 0 0
0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255
0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255
255 255 0 0 255 255 0 0 255 255 0 0 255 255 0 0
255 255 0 0 255 255 0 0 255 255 0 0 255 255 0 0
0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255
0 0 255 255 0 0 255 255 0 0 255 255 0 0 255 255

Abbildung 2.2: Helligkeitsmatrix D


1
zu Abb. 2.1
Praktikum am Lehrstuhl fr Mikroelektronik 9
2 Grundlagen der Bildverarbeitung Universitt des Saarlandes
2.2 Farbvergrauung
Die Farbvergrauung dient dazu, farbige Bilder in Grauwertbilder zu berfhren. Dies fhrt
zu einer Reduktion der Datenmenge pro Bild um ein Drittel (wenn keine Komprimierung
vorliegt), da die drei Kanle fr jeweils rot, grn und blau bei Farbbildern auf lediglich
einen bei Grauwertbildern reduziert wird. Diese Transformation wird deshalb durchge-
fhrt, weil die verwendeten OLED-Displays spter lediglich Grauwertbilder mit einer
Farbtiefe von 8 Bit (Wertebereich zwischen 0 und 255) darstellen knnen.
Die Farbvergrauung ist dabei immer verlustbehaftet, da 16 777 216 (256256256) Farben
auf lediglich 256 Grauwerte abgebildet werden.
Es werden hier vier Methoden vorgestellt, die sich darin unterscheiden, wie aus den
drei Farbwerten pro Pixel der entsprechende Grauwert berechnet wird.
Im Folgenden beschreibt g(i, j, f) ein Pixel eines Farbbildes, wobei f fr den entspre-
chenden Farbkanal rot (f = 1), grn (f = 2) oder blau (f = 3) steht.
1. Einkanalmethode
Bei diesem Verfahren wird lediglich ein Kanal (rot, grn oder blau) in Betracht
gezogen, indem einfach dessen Wert als neuer Grauwert interpretiert wird.
g(i, j) = g(i, j, f) i, j und f = const. {1, 2, 3} (2.2)
2. Maximalwertmethode
Hierbei wird der Maximalwert aller drei Farbkanle als neuer Grauwert gesetzt.
g(i, j) = max {g(i, j, f) : f {1, 2, 3}} i, j (2.3)
3. Mittelwertmethode
Bei der Mittelwertmethode setzt man den Grauwert des neuen Bildes auf das arith-
metische Mittel aus allen drei Farbwerten.
g(i, j) =
g(i, j, 1) + g(i, j, 2) + g(i, j, 3)
3
i, j (2.4)
10 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 2.2 Farbvergrauung
4. Mean Square
Hierbei nutzt man die aus der Fehleranalyse bekannte Formel zur Berechnung eines
Mittelwertes aus der Summe der Quadrate der Einzelelemente, geteilt durch die
Anzahl der Elemente.
g(i, j) =
_
g(i, j, 1)
2
+ g(i, j, 2)
2
+ g(i, j, 3)
2
3
i, j (2.5)
Wie die resultierenden Bilder bei den verschiedenen Farbvergrauungsmethoden ausse-
hen, ist beispielhaft in Abbildung 2.3 dargestellt.
Original nur roter Kanal nur grner Kanal nur blauer Kanal
Adobe Photoshop Maximum aller Kanle Mittelwert Mean Square
Abbildung 2.3: Farbvergrauung am Beispiel von Mel C. Als Referenz dient das Ergebnis
der kommerziellen Software Adobe Photo Shop.
Praktikum am Lehrstuhl fr Mikroelektronik 11
2 Grundlagen der Bildverarbeitung Universitt des Saarlandes
2.3 Histogramm
In der digitalen Bildverarbeitung versteht man unter einem Histogramm die statistische
Hugkeit der Grauwerte bzw. der Farbwerte in einemBild. Das Histogrammeines Bildes
erlaubt eine Aussage ber die vorkommenden Grau- bzw. Farbwerte und ber Kontrast-
umfang und Helligkeit des Bildes. In einem farbigen Bild kann entweder ein Histogramm
ber alle mglichen Farben oder drei Histogramme ber die einzelnen Farbkanle erstellt
werden. Letzteres ist meist sinnvoller, da die meisten Verfahren auf Grauwertbildern ba-
sieren und so die sofortige Weiterverarbeitung mglich ist. Ein Histogramm visualisiert
somit die Verteilung der Helligkeitswerte eines Bildes. ber einer Achse, die den Wer-
tebereich der Farb- bzw. Grauwerte darstellt, sind als Balken die einzelnen Hugkeiten
des Vorkommens der Farbwerte aufgetragen. Je hher der Balken ber einem Farbwert
ist, desto huger kommt dieser Farbwert im Bild vor (Abbildung 2.4).
Abbildung 2.4: Mel C in 514785 Pixeln, 8 Bit Ausung und zugehriges Histogramm
2.4 Histogrammspreizung
Die Histogrammspreizung (auch Tonwertspreizung genannt) ist ein hug eingesetztes
Verfahren zur Kontrastverstrkung in kontrastarmen Grauwertbildern. In solchen Bildern
kommen viele Grauwerte der Grauwertskala berhaupt nicht vor. Je grer die ungenutz-
ten Bereiche an den beiden Rndern der Skala sind, um so strker kann der Abstand
zwischen dem dunkelsten und dem hellsten Grauwert vergrert werden, desto weiter
knnen also die Grauwerte im Bild auseinandergezogen werden.
12 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 2.4 Histogrammspreizung
Durch eine lineare Skalierung wird die Grauwertverteilung eines Bildes D ber eine li-
neare Abbildung transformiert.
D D

(2.6)
g

(i, j) = (g(i, j) + c
1
) c
2
(2.7)
Fr c
1
> 0 wird das gesamte Bild heller, fr c
1
< 0 dunkler. Die Konstante c
2
bewirkt eine
nderung des Kontrastes. Ein Wert grer 1 erhht den Kontrast, fr einen Wert kleiner 1
wird das Bild kontrastrmer. Da der Grauwertbereich auf die Menge G = {0, . . . , 255}
begrenzt ist, muss die oben angegebene Transformation noch so modiziert werden, dass
die neuen Grauwerte von D

innerhalb G liegen.
g

(i, j) =
_

_
0 falls (g(i, j) + c
1
) c
2
0
255 falls (g(i, j) + c
1
) c
2
255
[(g(i, j) + c
1
) c
2
] sonst
(2.8)
Hier sind die eckigen Klammern sogenannte Gauklammern. Diese nehmen eine Run-
dung auf die nchste natrliche Zahl vor. Durch die lineare Skalierung gehen dem Bild
aber Information verloren. In vielen Fllen handelt es sich dabei jedoch um nicht bentig-
te Information, die somit ausgeblendet werden kann. Die optimalen Werte fr c
1,2
knnen
dem Histogramm entnommen werden. Dazu wird der minimale und maximale Grauwert
im Bild bestimmt. Die Skalierungsparameter ergeben sich dann zu:
c
1
= min{g(i, j)}
c
2
=
255
max{g(i, j)} min{g(i, j)}
Praktikum am Lehrstuhl fr Mikroelektronik 13
2 Grundlagen der Bildverarbeitung Universitt des Saarlandes
2.5 Histogrammegalisierung
Die Histogrammegalisierung (auch Histogrammausgleich, Histogrammeinebnung oder
Histogrammqualisation genannt) ist ein wichtiges Verfahren zur Kontrastverbesserung in
Grauwertbildern, das ber eine bloe Kontrastverstrkung hinausgeht. Dabei wird aus der
Grauwertverteilung im Histogramm eine Gleichverteilung berechnet, damit der gesamte
zur Verfgung stehende Wertebereich optimal ausgenutzt wird. Diese Methode kommt be-
sonders in solchen Fllen zur Anwendung, bei denen die interessanten Bildbereiche einen
relativ groen Teil des Bildes ausmachen (die entsprechenden Grauwerte also berdurch-
schnittlich hug vorkommen) und ihre Grauwerte auf einen kleinen Bereich der Grau-
wertskala begrenzt sind. Im Gegensatz zu einer Histogrammbegrenzung mit anschlieen-
der Histogrammspreizung, wo zwar der Kontrast im interessanten Grauwertbereich ver-
strkt wird, die Informationen auerhalb des Bereichs allerdings komplett verloren ge-
hen, werden bei der Histogrammqualisation huge Grauwerte auseinandergezogen
(die Grauwertskala wird in diesen Bereichen gestreckt) und weniger huge Grauwer-
te zusammengeschoben (die Grauwertskala wird in diesen Bereichen gestaucht). Das
Histogramm des Ergebnisbildes wird daher mehr oder weniger groe Lcken enthalten
(siehe Abbildung 2.5). Dies begrndet sich daraus, dass ein diskreter Grauwert auch nur
auf einen anderen diskreten Grauwert abgebildet und nicht auseinandergezogen wer-
den kann. Tritt ein Grauwert sehr hug auf, so werden seine direkten Nachbarn auf
der Grauwertskala nach der Gleichverteilung im Bild nicht mehr vorkommen.Als Basis
zur Ermittlung der Transformationskennlinie dient das sogenannte kumulative Grauwert-
histogramm H
k
des Bildes. Dieses wird berechnet, indem jedem Grauwert g die Summe
aller relativen Hugkeiten H der Grauwerte 0 bis g zugeordnet wird. Hierzu muss H(n)
als prozentuale Hugkeit angegeben werden.
H
k
(g) =
g

n=0
H(n) (2.9)
Dieses kumulative Grauwerthistogramm stellt eine Folge von Werten im Intervall [0, 1]
dar. Durch Multiplikation jedes Elementes dieser Folge mit dem maximal im Originalbild
vorkommenden Grauwert G und anschlieender Rundung (eckige Klammern) ergibt sich
die Transformationskennlinie mit Wertebereich {0, . . . , G}:
T
equal
(g) = [G H
k
(g)] (2.10)
14 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 2.5 Histogrammegalisierung
Diese Transformationskennlinie ordnet jedemPixelgrauwert des Originalbildes einen Wert
fr das neue Bild zu.
Die Histogrammegalisierung ist verlustbehaftet, da grere Bereiche der Skala mit
Grauwerten geringer Hugkeit auf wenige Grauwerte komprimiert werden. Daher ist
sie nicht umkehrbar [13].
Abbildung 2.5: Beispiel einer Histogrammegalisierung mit dazugehrigen Grauwertbil-
dern. Die kumulativen Histogrammwerte sind schwarz, die gewhnli-
chen Histogrammwerte rot dargestellt [13].
Praktikum am Lehrstuhl fr Mikroelektronik 15
2 Grundlagen der Bildverarbeitung Universitt des Saarlandes
2.6 Versuch I: Bildbearbeitung
In diesem Versuch sollen die in diesem Kapitel vorgestellten Verfahren der Bildbearbei-
tung in MatLab realisiert werden. Grundkenntnisse in Programmierung (bestenfalls Mat-
Lab) werden vorausgesetzt. Um die Grundlagen der Programmierung mit MatLab zu er-
lernen bzw. zu wiederholen, eignen sich entsprechende Tutorials wie z.B. MATLAB
Eine Einfhrung, das Sie im Praktikumsverzeichnis auf dem Praktikumsrechner nden
knnen. Fr jede der nun folgenden Aufgaben sollen Sie eine eigene Funktion in einer
MatLab-Skriptdatei (.m-Datei) erstellen, welche die geforderte Funktionalitt erfllt. Le-
gen Sie dazu zunchst ein neues Verzeichnis der Form
D:\Praktikum_Mikroelektronik\Studenten\Matr.Nr.
mit Ihrer Matrikelnummer an. Speichern Sie Ihren gesamten Quellcode bitte unter diesem
Verzeichnis mit aussagekrftigen Dateinamen ab und kommentieren Sie ihn so, dass er fr
Dritte verstndlich und nachvollziehbar ist.
2.6.1 Aufgabe 1 Farbvergrauung
Realisieren Sie alle vier Methoden zur Farbvergrauung in einer Funktion
farbvergrauung(i, m)
mit den Parametern
i : Dateipfad des zu bearbeitenden Bildes
m : zu verwendende Methode
m = 1 Einkanal-Methode fr grn
m = 2 Maximalwert-Methode
m = 3 Mittelwert-Methode
m = 4 Mean-Square-Methode.
Die Methode soll das vergraute Bild als .jpg-Datei in ein entsprechendes Verzeichnis aus-
geben. Testen Sie Ihre Funktion bitte auch mit einem der Bilder unter
D:\Praktikum_Mikroelektronik\Bilder MatLab.
16 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 2.6 Versuch I: Bildbearbeitung
Hinweis: .jpg-Dateien knnen in MatLab mit den Befehlen imread bzw. imwrite geffnet
und gespeichert werden.
2.6.2 Aufgabe 2 Histogrammspreizung
Imzweiten Schritt wird nun ein Grauwertbild gem der Funktion (2.8) so bearbeitet, dass
das Spektrum der Grauwerte auf den kompletten zur Verfgung stehenden Wertebereich
ausgedehnt wird, wodurch sich eine Kontrasterhhung einstellen soll.
Implementieren Sie eine Methode
spreizung(i, c
1
, c
2
)
mit den Parametern
i : Dateipfad des zu bearbeitenden Bildes
c
1
: Helligkeitseinstellung
c
2
: Kontrasteinstellung
Die Funktion soll das bearbeitete Bild sowie ein Diagramm des alten und des neuen Histo-
gramms ausgeben. Testen Sie Ihre Funktion bitte.
2.6.3 Aufgabe 3 Histogrammegalisierung
Imletzten Schritt soll nun eine Histogrammegalisierung fr Grauwertbilder implementiert
werden, die eine mglichst gleichmige Helligkeitsverteilung der Bildpixel erreicht.
Realisieren Sie diese Funktionalitt in einer Methode
histegal(i).
Der einzige bergabeparameter ist hier wiederum der Name des einzulesenden Bildes.
Achten Sie darauf, das Sie fr die Histogrammegalisierung ein kumulatives Histogramm
bentigen! Die Funktion soll das bearbeitete Bild, sowie ein Diagramm des alten und des
neuen Histogramms ausgeben. Auch hier sollten Sie Ihre Funktion kurz testen.
Praktikum am Lehrstuhl fr Mikroelektronik 17
3 Nachahmung eines OLED Pixels
Ziel dieses Kapitels ist es, mit Hilfe von LEDs das Ein- und Ausgabe-Verhalten von
OLEDs bezglich des Stroms und des emittierten Lichts nachzuahmen. Dazu werden zu-
nchst die Funktionsweise und das Verhalten einer OLED im Stromkreis betrachtet, um
anschlieend genauer auf Passiv- und Aktiv-Matrix-OLED-Displays einzugehen. Darauf-
hin wird kurz das Verhalten von LEDs in einem Stromkreis beschrieben und auf die Ursa-
che des unterschiedlichen Verhaltens von LED und OLED bezglich ihres Ein- und Aus-
gabeverhaltens eingegangen. Im Abschnitt Gammakorrektur zur Linearisierung wird eine
Mglichkeit zur Linearisierung des Ein- und Ausgabeverhaltens beschrieben. Im Punkt
Versuch II: Zusammenhang von Licht und Strom werden anhand mehrerer Versuche die-
ses Verhalten genauer betrachtet und zwei verschiedene Verfahren zur Ansteuerung von
OLED Displays vorgestellt.
3.1 Wie funktioniert ein OLED-Display?
Die OLED-Technologie benutzt organische Substanzen, welche rotes, grnes, blaues oder
weies Licht bei angelegter Spannung emittieren. OLED-Displays sind also selbstleuch-
tend, im Gegensatz zu den Pixeln eines TFT-Displays.
Anmerkung: Da sich allgemein der Begriff TFT fr die Bezeichnung von LC-Displays
etabliert hat, werden diese Begriffe hier quivalent verwendet. Eigentlich sind als TFT-
Displays bezeichnete Displays so genannte Liquid Crystal Displays (LCDs), die Dnn-
schichttransistoren (engl. Thin Film Transistor, TFT) zur Ansteuerung der Bildmatrix
verwenden. Aktiv-Matrix-OLED-Displays verwenden jedoch ebenfalls Dnnschichttran-
sistoren, werden allerdings dennoch nicht als TFT bezeichnet.
Praktikum am Lehrstuhl fr Mikroelektronik 19
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Der Weg des Lichtes ber Hintergrundbeleuchtung und Polarisationskristalle wie bei
einem TFT-LCD entfllt (Abbildung 3.1). Das heit, dass OLED-Displays dnner im
Aufbau und einfacher in der Herstellung sind. Sie knnen auf fast jedes Material auf-
gebracht werden. Zum Teil kann dies sogar mit Verfahren ([10], [4]) geschehen, die in
Tintenstrahldruckern angewendet werden.
Abbildung 3.1: Aufbau eines TFT-LC-Displays [11]
Im OLED-Display werden mehrere dnne organische Schichten zwischen zwei Halb-
leiterschichten angebracht. Bei einer angelegten Spannung wandern Elektronen aus der
Elektronenleitungschicht (Kathode) und Lcher aus der Lochleitungsschicht (Anode) je-
weils in Richtung des entgegengestzten Pols. Sie rekombinieren in der Emitterschicht und
erzeugen aufgrund der lagernden Farbstoffe farbiges Licht.
Abbildung 3.2: Aufbau eines OLEDs [6]
20 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.1 Wie funktioniert ein OLED-Display?
Da der Umweg des Lichtes von der Hintergrundbeleuchtung ber die Polarisations- und
Farblter bei der OLED-Technologie entfllt, wird ein viel hherer Kontrast und ein ge-
ringerer Energieverbrauch erreicht. Ein OLED-Display produziert nur die Menge Licht,
die gerade bentigt wird, whrend beim TFT-LCD die Hintergrundbeleuchtung immer
eingeschaltet ist. Es entsteht zudem weniger Abwrme. Die immer aktive Hintergrundbe-
leuchtung und die Polarisationskristalle fhren zu dem Umstand, dass ein TFT-LC-Dis-
play kein tiefes Schwarz darstellen kann. Ein bestimmter Restlichtanteil passiert immer
die Ebene der Polarisationskristalle, so dass ein dargestelltes Schwarz eher grau wirkt.
Die Pol- und Farblter absorbieren einen Groteil des produzierten Lichtes (zusammen
ca. zwei Drittel des Lichts).
Ein weiterer Vorteil von OLED Displays gegenber herkmmlicher Flssigkristallbild-
schirmen ist ein Blickwinkel von bis zu 170 Grad. Die Sandwichbauweise von LCDs
schrnkt deren Blickwinkel ein. Die Hintergrundbeleuchtung liegt relativ weit hinter der
Bildschirmoberche und das Licht muss erst mehrere Stationen durchlaufen bis es aus
dem Bildschirm austritt. Die Abstrahlrichtung ist dadurch schon vorgegeben. Das Licht
in OLEDs wird ziemlich nah der Oberche produziert und passiert unterwegs keine
Filter. Der Blickwinkel ist daher sehr gro. Des Weiteren ist die Reaktionszeit
1
eines
OLED-Displays um ein Vielfaches kleiner als die von LCDs. LCDs liegen bei ca. 2 Mil-
lisekunden, whrend OLEDs Reaktionszeiten unter einer Mikrosekunde aufweisen. Tiefe
Temperaturen lassen die Kristalle in den LCDs trge werden, wodurch sich die Schaltzeit
erhht. Ein OLED hat dieses Problem nicht und schaltet auch bei tiefen Temperaturen
schnell.
Wie der Name schon sagt bestehen OLEDs aus organischen Materialien. Unterschieden
wird dabei die Art und Strukturgre der organischen Emitter. Die ersten Displays wur-
den bei Kodak von Dr. Ching W. Tang aufgebaut [1]. Dabei wurden small molecules
verwendet, die mit einem Vakuum-Sputterprozess meist auf Glas aufgebracht wurden.
Der Sputterprozess macht diese Herstellungsweise verhltnismig teuer. Es gibt auch
aus groen Moleklketten aufgebaute Polymere, die bei Anlegen einer externen Span-
nung Licht emittieren. Diese Polymere lassen sich mit Tintenstrahlverfahren ([10], [4])
auf beliebige Oberchen aufbringen. Das ist wesentlich billiger als der Vakuum-Sput-
terprozess. Es knnen sogar exible Displays damit erzeugt werden. Nachteilig ist aber
die geringe Lebensdauer, welche aus den organischen Materialien resultiert. Die Displays
altern und verlieren an Leuchtkraft, was unter anderem den Durchbruch in der kommer-
ziellen Nutzung behindert.
1
engl.: response time
Praktikum am Lehrstuhl fr Mikroelektronik 21
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.2 Ersatzschaltbild OLED-Modell
Um das Verhalten einer OLED im Stromkreis besser charakterisieren zu knnen, verwen-
det man Modellbeschreibungen sowie Ersatzschaltbilder fr OLEDs. Hierfr wurden in
frheren Arbeiten die am Lehrstuhl fr Mikroelektronik verwendeten Displays charak-
terisiert. Mit den gewonnenen Parametern wird das Modell einer normalen Si-Diode fr
DC
2
-Verhalten gettet, bis sie dem Verhalten der OLED-Diode entspricht.
I
D,D
: Diffusionsstrom
I
D,R
: Rekombinationsstrom
I
D,BR
: Durchbruchstrom
R
B
: Bahnwiderstand
C
S
: Sperrschichtkapazitt
C
D,D
: Diffusionskapazitt
Abbildung 3.3: Vollstndiges Modell einer Diode [12]
Abbildung 3.3 zeigt das vollstndige Modell einer Diode; es wird in CAD-Program-
men zur Schaltungssimulation verwendet. Die Diodensymbole im Modell stehen fr den
Diffusionsstrom I
D,D
und den Rekombinationsstrom I
D,R
; der Durchbruchstrom I
D,BR
ist durch eine gesteuerte Spannungsquelle dargestellt. [12]
2
engl. fr Direct Current (Gleichstrom)
22 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.2 Ersatzschaltbild OLED-Modell
Abbildung 3.4: Ersatzschaltbild OLED
I
D
=I
S

_
e
U
nU
T
1
_
(3.1)
I
s
: Sttigungsstrom
U
T
: Temperaturspannung
n : Emissionskoefzient
In Abbildung 3.4 ist das Ersatzschaltbild der OLED-Diode zu sehen. Es ist sehr einfach
und besteht aus der getteten Diode D mit Diodenwiderstand R_d = 3,7 k und parallel
dazu einer Kapazitt C_d = 40 pF. Beim Verschalten der Modelle zu einem Display
mssen die Leitungswiderstnde aus Indium Zinn Oxid (engl. Indium Tin Oxide, ITO)
mit bercksichtigt werden. Sinnvoll ist es dann, diese Leitungswiderstnde mit in einen
Block aufzunehmen, da sie sich mit jedem Pixel wiederholen. Die Kapazitt rhrt von
dem physikalischen Aufbau eines OLED-Pixels her (Abbildung 3.2). Die Anordnung der
Elektroden hnelt einem Plattenkondensator und muss ebenfalls bercksichtigt werden.
Praktikum am Lehrstuhl fr Mikroelektronik 23
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.3 Helligkeitsmatrix
Ein darzustellendes Bild liegt in der Regel als Helligkeitsmatrix vor.
D
ij
=
_
_
_
_
_
_
_
_
_
D
11
D
12
D
13
. . . D
1m
D
21
D
22
.
.
.
D
31
.
.
.
.
.
.
D
n1
D
nm
_
_
_
_
_
_
_
_
_
(3.2)
i = {1, . . . , n}
j = {1, . . . , m}
Die zeitlich gemittelte Leuchtintensitt in jedem Pixel korrespondiert mit dem entspre-
chenden Element in der Matrix D. Die Leuchtintensitt L ist in erster Nherung propor-
tional zu der Ladung, die vom elektrischen Treiber eingeprgt und in dem OLED-Pixel
strahlend rekombiniert wird.
L
Licht

T
Frame
_
0
I
OLED
dt
T
Frame
(3.3)
T
Frame
: Gesamtadressierzeit fr ein Bild
24 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.4 Passiv-Matrix (PM) / Aktiv-Matrix (AM)
3.4 Passiv-Matrix (PM) / Aktiv-Matrix (AM)
3.4.1 Passiv-Matrix
Eine Passiv-Matrix (Abbildung 3.5) besteht aus drei bereinanderliegenden Ebenen. Eine
Ebene beinhaltet die Leiterbahnen fr die Anoden, eine Ebene die OLEDs und die dritte
Ebene die Leiterbahnen fr die Kathoden.
Abbildung 3.5: Passiv Matrix OLED-Display[3]
Ein einzelnes Pixel wird dadurch adressiert, dass an die entsprechenden Leiterbahnen
von Anode und Kathode eine Spannung angelegt wird. Mit zunehmender Gre der Ma-
trix sinkt aber die Steuerspannung wegen der Leitungswiderstnde an den einzelnen Bild-
punkten. Die Gre ist dadurch begrenzt. Fr grere Display ist daher die Verwendung
von Aktiv-Matrix-Ansteuerung notwendig.
In diesem Praktikum betrachten und verwenden wir ausschlielich Passiv-Matrix-OLED-
Displays.
Praktikum am Lehrstuhl fr Mikroelektronik 25
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.4.2 Aktiv-Matrix
Bei einer Aktiv-Matrix (Abbildung 3.6) liegen Anode und Kathode chig ber allen
Pixeln. Die leitende Verbindung zwischen Kathode, organischer Schicht und Anode wird
ber einen TFT hergestellt. Die Matrix aus TFTs bestimmt, welches Pixel eingeschaltet
wird und welches nicht.
Abbildung 3.6: Aktiv Matrix OLED-Display[3]
Der Nachteil der sinkenden Steuerspannung mit zunehmender Gre tritt hier nicht auf.
Da jedes Pixel seinen eigenen Transistor hat, kann dieser fr die ntige Spannung vor Ort
sorgen. Die Herstellungskosten steigen aber.
3.5 Amplituden-/Pulsweitenmodulation
Die Helligkeitssteuerung kann zum Einen ber Amplitudenmodulation (AM
3
) erfolgen.
Jede Spalte wird whrend der Zeilenadressierzeit dauerhaft adressiert, also mit Strom
beaufschlagt. Die Stromamplitude hngt nun von der in der Helligkeitsmatrix hinterlegten
Leuchtintensitt ab.
3
Nicht zu verwechseln mit active matrix!
26 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.5 Amplituden-/Pulsweitenmodulation
Dafr wren bei einer Passiv-Matrix (Abbildung 3.5) Stromquellen ntig, die sehr ex-
akt einstellbar sein mssten, um den bentigten Betriebsstrom fr jede Spalte liefern zu
knnen. Fr die Darstellung von 8-Bit Grauwerten (0, . . . , 255) mssten 255 verschiede-
ne Stromamplituden fr jede Spalte bereitgestellt werden. Diese groe Anzahl an Quellen
hat einen hohen Platzbedarf auf einem Chip und wrde dessen Kosten deutlich in die
Hhe treiben.
Einfacher und kostengnstiger ist die Pulsweitenmodulation (PWM). Im Gegensatz zur
Amplitudenmodulation wird nicht die Adressierzeit konstant gehalten, sondern der Spal-
tenstrom I
0
. Die Leuchtintensitt wird mittels des Tastverhltnisses d eingestellt (Duty-
Cycle). Mehr Zeit bedeutet hier gleichzeitig mehr Helligkeit. Es ist in der Elektronik we-
sentlich einfacher, mithilfe eines Schwingquarzes einen Takt zu generieren und so die Zeit
sehr genau einzustellen, als eine exakt einstellbare Spannung bereitzustellen.
Das menschliche Auge ist ein integrierender Sensor. Das heit, dass das Auge die glei-
che Helligkeit aufnimmt, wenn bei der Amplitudenmodulation und der PWM im Mittel
die gleiche Ladungsmenge leuchtend emittiert wird.
L
gesamt
= d

I T
frame
(3.4)
d : Pulsweitenmodulations-Tastverhltnis [0, 1]

I : Strom im eingeschalteten Zustand


T
frame
: Periodenlnge (Dauer eines Bildes)
Auf die Amplituden- und die Pulsweitenmodulation wird spter bei der Versuchsbe-
schreibung noch einmal genauer eingegangen.
Praktikum am Lehrstuhl fr Mikroelektronik 27
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.5.1 Kapazitives Verhalten von Passiv-Matrix
Es wird nun das Verhalten einer Passiv-Matrix betrachtet. Zur Untersuchung wurden meh-
rere Netzwerke in unterschiedlichen Gren mithilfe der vorab beschriebenen Ersatz-
schaltbilder fr OLED-Pixel angelegt und anschlieend simuliert. Abbildung 3.7 zeigt
ein solches Passiv-Matrix-Netzwerk mit einer Grsse von 4 4 Pixeln.
Abbildung 3.7: Passiv-Matrix 4x4: Kondensator-Widerstands-Netzwerk
In Abbildung 3.7 sind alle Zeilen und alle Spalten gleichzeitig eingeschaltet (all-on).
Von grerem Interesse ist aber das Verhalten, wenn eine reale Ansteuerung verwendet
wird. Bei einer standardmigen Singleline-Adressierung (SLA) wird immer nur eine
einzelne Zeile adressiert. Das Display wird sich hier anders verhalten als bei einem all-
on.
Ein beliebtes Testbild ist beispielsweise ein Schachbrettmuster, da es den hchstmgli-
chen Kontrast von Pixel zu Pixel bietet.
28 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.5 Amplituden-/Pulsweitenmodulation
Helligkeitsmatrix eines Schachbrettmusters
D
ij
=
_
_
_
_
255 0 255 0
0 255 0 255
255 0 255 0
0 255 0 255
_
_
_
_
(3.5)

Darstellung auf dem Display


Abbildung 3.8: Einser-Schachbrett in 8 Bit fr ein 4x4-Display
Um das kapazitive Verhalten der Netzwerke zu untersuchen reicht es aus, sich an der
Zeitkonstante ( = R C) zu orientieren, da die Kapazitt hier linear mit eingeht. In
Tabelle 3.1 stehen die Ergebnisse fr die Zeitkonstante. Dabei wurde die Zeitspanne er-
fasst, bis die Anode der ersten Zeile auf ungefhr 63,2 %
4
der Spaltenspannung im einge-
schwungenen Zustand angestiegen ist. Zudem wurden die Simulationen fr verschiedene
Kapazitten durchgefhrt.
Netzwerk 100 pF 200 pF 400 pF 800 pF
1x1 1,4 s 2,8 s 6,0 s 12,0 s
4x4 3,0 s 7,0 s 14,0 s 28,5 s
4x8 7,0 s 14,0 s 29,0 s 58,5 s
8x4 4,0 s 8,0 s 16,0 s 32,0 s
8x8 9,0 s 16,0 s 33,0 s 67,5 s
Tabelle 3.1: simulierte Anstiegszeiten
Bei einer Verdopplung der Kapazitt sieht man sofort auch die Verdopplung der An-
stiegszeit. Verdoppelt man die Anzahl der Spalten, spiegelt die Simulation auch das erwar-
tete Ergebnis einer verdoppelten Anstiegszeit wieder. Nur die Zeilenverdoppelung tanzt
hier ein wenig aus der Reihe. Eine Verdoppelung hat nur einen geringen Einuss auf die
Anstiegszeit.
4
bei exponentiell absinkendem Prozess auf
1
e
36,8 %, exponentiell steigend auf 100 %
1
e
63,2 %
Praktikum am Lehrstuhl fr Mikroelektronik 29
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Dieses Verhalten rhrt aus der Ansteuerung von nur einer Zeile her. Eine Zeile ist lei-
tend mit Masse verbunden und die Anderen sind hochohmig. Bei doppelter Zeilenzahl
verdoppelt sich zwar die Gesamtkapazitt, aber innerhalb der adressierten Zeile bleibt die
Anzahl der Kondensatoren gleich. Dennoch ist eine leichte Erhhung der Anstiegszeit zu
beobachten. Die zustzlichen Kapazitten tragen, obwohl sie nicht mit adressiert sind, zur
Anstiegszeit bei.
3.6 Die Leuchtdiode (LED)
Wie bereits erwhnt soll nun mithilfe von LEDs das Verhalten von OLED-Pixeln nach-
geahmt werden. Hierzu werden im Folgenden Leuchtdioden (LEDs) lediglich in ihren
Eigenschaften als elektronisches Bauteil betrachtet. Die physikalischen Grundlagen zu
Halbleitertechnologie, Bndermodell, Dotierung und p-n-bergang nden Sie in der ent-
sprechenden Literatur (z. B. in I. Ruge: Halbleiter-Technologie, Springer-Verlag).
Uns interessiert hier nur das Verhalten von LEDs als elektronisches Bauteil und Licht-
quelle. Im Gegensatz zum Widerstand beispielweise spielt bei Dioden im Allgemeinen
die Beschaltungsrichtung eine entscheidende Rolle. Man unterscheidet demnach zwi-
schen Sperrrichtung und Durchlassrichtung. Bei Durchlassrichtung wird der Plus-Pol der
Spannungsquelle mit dem p-dotierten Gebiet des p-n-bergangs (Anode) und der Mi-
nus-Pol mit dem n-dotierten Gebiet (Kathode) verbunden. Bei Sperrichtung genau umge-
kehrt. Wird die LED in Durchlassrichtung betrieben, so ist die Strke des abgestrahlten
Lichts proportional zum (Durchlass-)Strom (Rekombinationsstrom). Die Durchlassspan-
nung hngt direkt von der Bandlcke ab und damit von der Lichtfarbe. Die Betriebsspan-
nungen betragen bei herkmmlichen LEDs ca. 2 V bis 4 V. Der durch die Diode ieende
Strom ist von der angelegten Spannung abhngig. Gewhnlich werden LEDs mit etwa
20 mA betrieben. Bei den Hochleistungs-LEDs (1 W bis 5 W) ist der Betriebsstrom deut-
lich hher, er kann bis zu 1 A betragen. Der Durchlassstrom steigt mit wachsender Span-
nung erst langsam und dann immer schneller an. Ein strkerer Strom bewirkt eine erhhte
Wrmeentwicklung. Hhere Temperatur erzeugt aber mehr Ladungstrger. Dadurch steigt
der Strom weiter an, der Halbleiter wird noch mehr erwrmt. Oberhalb einer bestimmten
Temperaturgrenze wird das Kristallgitter eines Halbleiters zerstrt, d.h. Lebensdauer und
Efzienz werden verringert. Deshalb muss in jedem Stromkreis mit einer Diode auch ein
Widerstand liegen, der den Strom begrenzt, und entstehende Wrme muss abgeleitet wer-
den. Die Leitfhigkeit von Halbleitern steigt mit der Temperatur. Die Efzienz von LEDs
sinkt.
30 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.6 Die Leuchtdiode (LED)
Ebenso wird durch das Anlegen einer zu groen Spannung in Sperrrichtung die Di-
ode zerstrt. In Sperrichtung betriebene (Leucht-)Dioden verhalten sich unterhalb der
Durchbruchspannung wie ein Isolator, wobei lediglich ein sehr geringer, sogenannter
Sperrstrom iet. Wegen des hohen Dotierungsunterschieds an der Sperrschicht vertra-
gen Leuchtdioden nur geringe Sperrspannungen von ca. 5 V [5].
3.6.1 Parasitre Effekte
Wie bei fast allen elektronischen Bauteilen treten auch bei LEDs parasitre Effekte in
Form von Kapazitten auf. Diese sind im normalen Betrieb allerdings so gering, dass
sie nicht ins Gewicht fallen und keinen merklichen Einuss auf den proportionalen Zu-
sammenhang zwischen Durchlassstrom und emittiertem Licht besitzen.
Wie im Abschnitt 3.1 ber die OLED gesehen, fllt bei OLEDs eine parasitre, parallele
Kapazitt deutlich strker ins Gewicht und fhrt zu einem nicht-linearen Verhalten zwi-
schen Strom und Lichtstrke bei entsprechender Ansteuerung. Die Abbildung 3.4 zeigt
das Ersatzschaltbild einer OLED. Sie sehen, dass diese Kapazitt parallel zur Diode liegt.
Um dieses Verhalten einer OLED mit einer LED nachzuahmen, wurde deshalb im Ver-
suchsaufbau eine Kapazitt parallel zu den Dioden geschaltet, die der parasitren Ka-
pazitt einer OLED entspricht. Die so erhaltene Schaltung entspricht in ihrem Ein- und
Ausgangsverhalten von Strom und Licht in etwa dem einer realen OLED.
Als Anwender wnscht man sich nun aber ein lineares Ein- und Ausgangsverhalten eines
Displays, um alle mglichen Grauwerte eines Bildes darstellen zu knnen. Im Folgenden
Kapitel wird beschrieben, wie mithilfe von Gammakorrektur ein solches Verhalten fr
OLED Displays erreicht werden kann.
Praktikum am Lehrstuhl fr Mikroelektronik 31
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.7 Gammakorrektur zur Linearisierung
Bei einer Farbtiefe von n Bit knnen maximal 2
n
verschiedene Helligkeitswerte, d.h. 2
n
gleichverteilte Werte zwischen 0 und (2
n
1) dargestellt werden. Idealerweise stellt das
Display all diese unterschiedlichen Grauwerte dazwischen als linearen Verlauf dar.
Abbildung 3.9: Beispiel fr einen Helligkeitsverlauf
Leider sieht der Helligkeitsverlauf oft aus wie in Abbildung 3.9. Dort ist der Verlauf
fr ein gngiges Treiberschema mit einer Grauwertausung von 5 Bit (0, . . . , 31) zu se-
hen. Erst ab einem Wert von ca. 5 kann ein nennenswerter Anstieg berhaupt beobachtet
werden, der aber erst ab ca. 18 als linear angesehen werden kann. Das bedeutet, dass
ein Grauwert von unter 5 gar nicht vom Auge wahrgenommen werden kann. Mit einer
Ausung von 5 Bit knnen keine 32 gleichverteilten Helligkeitswerte dargestellt wer-
den. Mglich wird das nur ber eine Erhhung der Ausung und eine entsprechende
Linearisierung des Ein- und Ausgangsverhaltens. An der minimalen Helligkeit (0) und
der maximalen Helligkeit (31) braucht man nichts zu ndern, sie geben nur die Ober- und
Untergrenze an. Gewnscht sind insgesamt 31 linear verteilte Helligkeitswerte (eine Null
bleibt eine Null) um eine saubere Darstellung zu ermglichen. Hierfr nimmt man stell-
vertretend fr die Helligkeit die maximale Ladungsmenge und teilt diese durch die Anzahl
der Helligkeitswerte, hier 31. So erhlt man die Ladungsmenge (Lum), die umgesetzt
werden muss, damit das Auge ein Inkrement in der Helligkeit sieht.
32 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.7 Gammakorrektur zur Linearisierung
Diese neue Einteilung der Helligkeitswerte ist nicht mehr ohne einen groen Ause-
fehler mit 5 Bit zu erreichen. Die Ausung muss erhht werden wie in Abbildung 3.10.
Abbildung 3.10: Helligkeitsverlauf mit 5-Bit und 7-Bit Skala
Hier ist zu erkennen, wie sich die neue Aufteilung auswirkt. Die neuen Helligkeiten
liegen zwischen den mit 5 Bit erreichbaren Werten. Die Abbildung auf 7 Bit ist genauer
und kann iterativ gewonnen werden. Im Folgenden sehen wir an einem Beispiel, wie die
neuen Helligkeitswerte fr eine 7 Bit Ausung berechnet werden.
Zuerst legt man den Ladungswert fest, den man neu abbilden will:
x Lum, x (1, . . . , 30)
Danach arbeitet man nacheinander die Messwerte aufsteigend ab, bis man einen kleine-
ren und einen greren Helligkeitswert gefunden hat. Jetzt sind die beiden Messwerte
bekannt, die den neuen Wert beranden. Daraus lsst sich ein Zwischenwert bilden, aus
dem sich nachher auf die Werteverteilung in 7 Bit schlieen lsst.
Praktikum am Lehrstuhl fr Mikroelektronik 33
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Hier ein ktives Beispiel zur Veranschaulichung:
Abbildung 3.11: Fiktives Beispiel - Helligkeitsverlauf mit 5-Bit
Bit (Ausung 5) 10 11
Ladung [nC] 60 70
Tabelle 3.2: Fiktives Beispiel - Auszug aus dem Helligkeitsverlauf in Zahlen
Wir betrachten von dem ktiven Beispiel nur einen Auszug. Mit Hilfe von Lum be-
rechnen wir uns einen neuen Helligkeitswert. Dieser betrgt in unserem ktiven Beispiel
xLum = 64 nC. Wie schon beschrieben, werden die Simulationswerte gesucht, die den
Neuen beranden. In Abbildung 3.11 sieht man, dass er zwischen den Ladungswerten liegt,
die zu den Helligkeitsstufen 10 und 11 gehren. Gesucht ist die krumme Helligkeitsstu-
fe zwischen den Rndern. Unter der vorher getroffenen Annahme gilt der Strahlensatz und
aus dem Verhltnis der drei Ladungen kann auf das Verhltnis der drei Helligkeitsstufen
geschlossen werden.
l
1
l
2
=
s
1
s
2
(3.6)
34 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.7 Gammakorrektur zur Linearisierung
Fr unser Beispiel berechnet sich die Abweichung in der Helligkeitsstufe folgenderma-
en:
l
1
= 64nC 60nC = 4nC (3.7)
l
2
= 70nC 60nC = 10nC (3.8)
l
1
l
2
= 0, 4 (3.9)
Neue Stufe = 10 +
l
1
l
2
= 10,4 (3.10)
Die neue Stufe wird auf 7 Bit abgebildet, indem sie auf den Maximalwert der ursprng-
lichen Ausung (2
5
1 = 31) normiert und mit dem neuen Maximalwert (2
7
1 = 127)
multipliziert wird.
10, 4
31
127 = 42,61. (3.11)
Dieser Wert muss noch gerundet werden und man erhlt in diesem Beispiel fr die
Abbildung den Wert 43.
Auf diese Weise entsteht fr jedes Lum eine Abbildung auf 7 Bit, was der Look-Up-
Tabelle 3.3 entspricht, die das Ein- und Ausgangsverhalten linearisiert.
5 Bit 0 1 2 3 4 5 6 7 8 9 10
7 Bit 0 37 43 48 52 55 59 62 65 68 71
5 Bit 11 12 13 14 15 16 17 18 19 20
7 Bit 74 77 79 82 85 88 90 93 96 98
5 Bit 21 22 23 24 25 26 27 28 29 30 31
7 Bit 101 103 106 109 111 114 117 119 122 124 127
Tabelle 3.3: Beispiel fr eine Look-Up-Tabelle
In Abbildung 3.12 ist der Zusammenhang zwischen den Grauwerten in 5 Bit und in 7
Bit zu sehen. Um also einen Helligkeitswert von 1 in einer Ausung von 5 Bit anzu-
steuern, mssen 37 Takte in einer 7-Bit-Ausung angesteuert werden. Gewissermaen
ist das die Totzeit des Treiberschemas, da sie fr alle folgenden Grauwerte dieselbe ist.
Praktikum am Lehrstuhl fr Mikroelektronik 35
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Man kann hier auch schon von Verlustleistung reden. Whrend der Totzeit wird ja kein
Licht emittiert, obwohl schon Leistung verbraucht wird.
Abbildung 3.12: Beispiel fr eine Abbildungsvorschrift von 5 auf 7 Bit Ausung. (Zwi-
schenwerte wurden interpoliert)
36 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
3.8 Versuch II: Zusammenhang von Licht und Strom
In diesem Versuch soll der Zusammenhang zwischen LED-Strom, dem von der LED ab-
gestrahlten Licht und mglicher Strungen (im Speziellen durch parasitre Kapazitten)
untersucht werden.
Am Praktikumsplatz bendet sich der dazugehrige Versuchsaufbau. Dieser besteht
aus einer Leiterplatine mit der entsprechenden analogen Schaltung zur Ansteuerung der
LEDs (Abbildung 3.13), einem Luxmeter zur Lichtmessung (Beleuchtungsstrke), einem
Stativ zur Befestigung des Luxmetersensors, einem Netzgert zur Bereitstellung der not-
wendigen Spannungen, einem Signalgenerator zur Erzeugung des jeweiligen pulswei-
tenmodulierten Signals (PWM-Signals) und einem Oszilloskop zur Messung bzw. zur
berprfung des eingestellten PWM-Signals. Um die Einsse des Tageslichts auf die
Messergebnisse zu minimieren, wird ein handelsbliches, fr den relevanten Wellenln-
genbereich lichtundurchlssiges PVC-Rohr mit konstanter Lnge verwendet.
Abbildung 3.13: Grundschaltungen fr LED-Messungen: LED-Strang mit PWM-Signal
Um die Helligkeit
5
einer LED einzustellen, reicht es aufgrund des proportionalen Zu-
sammenhangs aus, ihren Strom zu steuern.
5
Durch das Auge subjektiv wahrgenommene Gre. Im physikalischen Sinne ist es die Lichtstrke und
unter Hinzunahme des Raumes ist es die Beleuchtungsstrke.
Praktikum am Lehrstuhl fr Mikroelektronik 37
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Da das menschliche Auge nur das Integral der Helligkeit ber die Periode T wahr-
nimmt, ist es mglich, durch ein PWM-Signal die wahrgenommene Helligkeit (= Mit-
telwert der Helligkeit) einzustellen (bei gengend hoher PWM-Frequenz). Des Weite-
ren kann die Helligkeit mit einem amplitudenmodulierten Signal (Modulation der Strom-
Amplitude) eingestellt werden. In diesem Versuch sollen beide Methoden zum Einsatz
kommen, um den Einuss der parasitren Kapazitten auf die beiden Methoden und den
resultierenden Helligkeitsverlauf (gemessen in LUX) zu untersuchen.
Hier verwendete LEDs:
Bevor wir den Versuchsaufbau beschreiben, stellen wir die hier verwendeten LEDs vor.
Die beiden Abbildungen 3.14 und 3.15 stammen aus dem Datenblatt der hier verwendeten
LEDs von OSRAM. Die Bezeichnung der LED lautet LS M676 - super red (im Daten-
blatt mit LS abgekrzt). Die LED besitzt ein weies SMT-Gehuse in besonders kleiner
Bauform (2,3 mm x 1,3 mm x 1,4 mm). Die Wellenlnge des abgestrahlten Lichts liegt
bei 633 nm.
Amplitudenmodulation (AM):
Bei der AM wird der Strom, der durch die LEDs ieen soll, eingestellt. Dies geschieht
durch Einstellen der Spannung U
0
in Abhngigkeit von dem Vorwiderstand R
v
der LEDs
(U
0
= R
v
I
D
). In der Praxis ist jedoch oft die Spannung U
0
(V
cc
) vorgegeben, so dass
man den Widerstand R
v
anpassen muss, damit der gewnschte Strom I
D
durch die LEDs
iet. Damit es zum Strommuss kommen kann, muss die Spannung U
0
mindestens so
gro sein wie die Flussspannung U
D
der Diode bzw. Dioden.
U
0
U
Dgesamt
= U
D
AnzahlLEDs. (3.12)
Somit berechnet sich der Vorwiderstand wie folgt:
R
v
=
U
0
U
Dgesamt
I
D
. (3.13)
Um nun die Amplitude des Stromes zu variieren, werden die maximale Spannung von U
0
und der maximal zulssige Strom I
D
zur Bestimmung von R
v
verwendet
R
v
=
U
0max
U
Dgesamt
I
Dmax
, U
Dgesamt
= const. (3.14)
Dadurch ist gewhrleistet, dass bei Anlegen der maximalen Spannung kein zu groer
LED-Strom ieen kann.
38 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
Durch Variation von U
0
stellt sich jetzt ein Strom I
D
in Abhngigkeit von R
v
und
U
Dgesamt
ein:
I
D
=
U
0
U
Dgesamt
R
v
. (3.15)
Abbildung 3.14: Erster Teil des Datenblattauszugs der OSRAM LED LS M676
Praktikum am Lehrstuhl fr Mikroelektronik 39
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Abbildung 3.15: Zweiter Teil des Datenblattauszugs der OSRAM LED LS M676
40 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
Pulsweitenmodulation (PWM):
PWM-Signale kommen in der Regel immer dort zum Einsatz, wo ein integraler Ver-
braucher (Tiefpass) bedient werden soll. Ein bekanntes Beispiel ist die Ansteuerung von
elektrischen Maschinen. Sie besitzen eine Induktivitt, in der sich der Strom nach
I =
1
L

_
t
U(t)dt
berechnet bzw. einstellt. Somit kann ber ein PWM-Signal die Spannung so gepulst wer-
den, dass sich die gewnschte Stromfunktion in der Induktivitt einstellt (Erklrung
nur rudimentr). In unserem Fall ist der integrale Verbraucher das menschliche Auge.
Mittels des PWM-Signals wird der Ladungsuss (Strom) der LEDs ber die Zeit ge-
steuert, d.h., dass die Amplituden von Spannung und Strom bei konstantem R
v
gleich
bleiben. Weiterhin ist das PWM-Signal periodisch mit Periodendauer T. Die Pulslnge
(Duty-Cycle) ist ein prozentualer Anteil der Periodendauer T (Abbildung 3.16).
50 %
20 %
T = 1/f
Abbildung 3.16: Zwei Beispiele fr PWM-Signale bei gleicher Frequenz f: mit 20%
Duty Cycle (oben) und 50% Duty Cycle (unten).
Somit ist der LED-Strom eine gepulste Stromfunktion. Aufgrund des integralen Ver-
brauchers wird jedoch nur der Mittelwert des Stromes und damit der Helligkeit wahrge-
nommen. Umdas PWM-Signal auf den LED-Stromabzubilden, wird ein Transitor (MOS-
FET) als Schalter in den LED-Stromkreis eingefgt. Dieser geht bei einem High-Pegel am
Gate in den leitenden Zustand ber und es kann ein Strom durch die LEDs ieen. Bei ei-
nem Low-Pegel am Gate des MOSFET geht dieser in den nichtleitenden Zustand ber und
der Stromuss wird unterbrochen (Betrachtung des Transistors als idealer Schalter). Um
nun die Amplitude des Stromes einzustellen, werden wieder die zur Verfgung stehende
Spannung U
0
und der gewnschte maximale Strom I
Dmaximal
betrachtet.
Praktikum am Lehrstuhl fr Mikroelektronik 41
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Der Vorwiderstand R
v
berechnet sich zu
R
v
=
U
0
U
Dgesamt
I
Dmaximal
. (3.16)
Durch das Verhltnis von Puls-zu-Periodendauer des PWM-Signals stellen sich die
Stromfunktion und der wahrgenommene Mittelwert der Helligkeit ein.
Mit der analogen Schaltung auf der Leiterplatine und dem jeweiligen PWM-Signal soll
die Adressierung eines OLED-Pixels nachgeahmt werden. Durch die parallel geschalte-
ten parasitren Kapazitten werden die nichtlinearen Effekte bzw. Zusammenhnge, die
durch solche Kapazitten in einem OLED-Display bestehen, verstrkt (Abbildung 3.17).
Diese Verstrkung dient ausschlielich dazu, um signikante Unterschiede (Einsse)
und damit Messergebnisse zu erhalten.
Abbildung 3.17: Grundschaltungen fr LED-Messungen: parasitre Kapazitten
42 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
Die Schaltung besteht aus mehreren Grundschaltungen:
a) demLED-Strang mit einemTransistor, der durch das PWM-Signal angesteuert wird
(Abbildung 3.13),
b) einer Discharge-Schaltung (Abbildung 3.18), um die parasitren Kapazitten in der
Low-Phase des PWM-Signals zu entladen. Wenn diese Entladung nicht stattn-
den wrde, wrde sich die Kapazitt in der Low-Phase des PWM-Signals auf U
0
auaden und ihren parasitren Einuss auf den LED-Strom fr die weiteren PWM-
Perioden verlieren. In der High-Phase des PWM-Signals wrde der Kondensator
durch die LEDs auf U
D
ber die LEDs entladen und somit wrde ein Strom mit
hoher Amplitude (Peak) durch die LEDs ieen (hnlich Precharge),
Abbildung 3.18: Grundschaltungen fr LED-Messungen: Discharge Schaltung
c) einem Inverter mit Widerstandslast, zur Erzeugung des negierten PWM-Signals fr
die Discharge-Schaltung (Abbildung 3.19).
Praktikum am Lehrstuhl fr Mikroelektronik 43
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Abbildung 3.19: Grundschaltungen fr LED-Messungen: Inverter mit Widerstandslast
Formulieren Sie zu den in diesem Kapitel nun folgenden Aufgaben und Messungen
bitte eine schriftliche Ausarbeitung, die Sie Ihrem Betreuer aushndigen oder per
e-Mail zusenden!
3.8.1 Aufgabe 1 Amplitudenmodulation
Befestigen Sie das PVC-Rohr und den Luxmetersensor amStativarmin der Form, dass die
Messung vom Tageslicht nicht beeinusst wird. Zu Messen ist die Strke des emittierten
Lichtes in Abhngigkeit des LED-Stromes. Der Strom soll dabei von 1 mA bis 20 mA
in 1 mA-Schritten erhht werden. Berechnen Sie zuvor R
v
so, dass ein maximaler Strom
von 20 mA (Abbildungen 3.14 und 3.15) bei einer Spannung von 25 V iet. Beschalten
Sie die Jumper auf der Platine wie in Abbildung 3.20. Bestimmen Sie dazu die ntigen
Spannungswerte U
0
in Abhngigkeit des zuvor berechneten Widerstands R
v
. Nehmen
Sie den Verlauf der Beleuchtungsstrke auf und stellen Sie die Messergebnisse in einem
Kurvendiagramm dar. Wiederholen Sie die Messung mit einer parasitren Kapazitt (C1).
Beschalten Sie die Jumper dazu wie in Abbildung 3.21. Nehmen Sie auch hier den Verlauf
der Beleuchtungsstrke auf und stellen Sie die Messergebnisse in einem Kurvendiagramm
dar. Diskutieren Sie die Messergebnisse.
44 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
Abbildung 3.20: Grundschaltung fr eine amplitudenmodulierte Ansteuerung von LEDs.
Abbildung 3.21: Grundschaltung fr eine amplitudenmodulierte Ansteuerung von LEDs
mit paralleler Kapazitt C1.
Praktikum am Lehrstuhl fr Mikroelektronik 45
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
3.8.2 Aufgabe 2 Pulsweitenmodulation
In diesem Versuch soll das Verhalten der Schaltung bzw. das des emittierten Lichts bei
Ansteuerung durch ein PWM-Signal untersucht werden. Fr die Erzeugung des PWM-
Signals wird der an dem Versuchsstand vorhandene Signalgenerator verwendet. Stellen
Sie dazu ein rechteckiges PWM-Signal mit einer Amplitude von 0 V in der Low-Phase
und 5 V in der High-Phase ein und berprfen Sie das eingestellte Signal mit dem Oszil-
loskop (Erklrung der Bedienung erfolgt durch den betreuenden Mitarbeiter vor Ort). Die
Messreihen werden mit zwei Frequenzen aufgenommen.
a) mit einer Periodendauer von T = 0,05 s (20 Hz) und
b) mit einer Periodendauer von T = 0,01 s (100 Hz).
Bei dem vorhandenen Signalgenerator kann die Pulslnge nur von 0,2 T bis 0,8 T ein-
gestellt werden. Fr die Messreihen der Reihe a) stellen Sie eine PWM-Signal-Frequenz
von 20 Hz und eine Pulslnge von 0,2 T am Signalgenerator ein und beschalten die
Jumper wie in Abbildung 3.22 gezeigt. Beachten Sie bitte auch, dass Sie nun zwei Span-
nungsversorgungen bentigen: 25 V zur Versorgung der LEDs und 5 V fr den Inverter.
Abbildung 3.22: Grundschaltung fr eine pulsweitenmodulierten (PWM) Ansteuerung
von LEDs.
46 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 3.8 Versuch II: Zusammenhang von Licht und Strom
Verndern Sie die Pulslnge mit einer entsprechenden Ausung
6
bis zu 0,8 T. Neh-
men Sie den Verlauf der Beleuchtungsstrke auf und stellen Sie die Messergebnisse in
einem Kurvendiagramm dar.
Wiederholen Sie die Messungen, indem Sie nacheinander die beiden parallelen Kapa-
zitten hinzuschalten (Abbildungen 3.23 und 3.24). Achten Sie dabei auf die Bereiche, in
denen ein nichtlinearer Verlauf auftritt bzw. auftreten knnte und passen Sie entsprechend
die Ausung Ihrer Messreihe an. Nehmen Sie wieder den Verlauf der Beleuchtungsstr-
ke auf und stellen Sie die Messergebnisse in einem Kurvendiagramm dar. Diskutieren Sie
die Messergebnisse. Wiederholen Sie die gesamten Messungen fr die Messreihe b) mit
einer PWM-Signal-Frequenz von 100 Hz. Fhren Sie dabei die Messung mit C2 (Abbil-
dung 3.24) bei 100 Hz bitte unbedingt mit einer feineren Ausung (z. B. 2 %-Schritte)
durch, da Sie die dort gewonnenen Messwerte fr Aufgabe 3 erneut bentigen. Stellen
Sie auch fr diese Messreihen die gewonnenen Messergebnisse in Diagrammen dar und
diskutieren Sie die Ergebnisse.
Abbildung 3.23: Grundschaltung fr eine pulsweitenmodulierten (PWM) Ansteuerung
von LEDs mit paralleler Kapazitt C1.
6
Sie sollten maximal in 5 %-Schritten vorgehen (0,20 T, 0,25 T, 0,30 T, . . . ), gerne aber auch feiner.
Praktikum am Lehrstuhl fr Mikroelektronik 47
3 Nachahmung eines OLED Pixels Universitt des Saarlandes
Abbildung 3.24: Grundschaltung fr eine pulsweitenmodulierten (PWM) Ansteuerung
von LEDs mit paralleler Kapazitt C2.
3.8.3 Aufgabe 3 Gammakorrektur
Erzeugen Sie in MatLab eine Look-Up-Tabelle, die zur Gammakorrektur verwendet wer-
den kann, wie sie im Abschnitt Gammakorrektur zur Linearisierung beschrieben wurde.
Verwenden Sie dazu die Kennlinie aus Aufgabe 2, mit C2 als paralleler parasitrer Kapa-
zitt und der PWM-Signal-Frequenz von 100 Hz. Die Helligkeitsstufen (Ordinate) sollen
dabei eine Ausung von 4 Bit (0, . . . , 15) haben, d.h., dass auch die Strom-Achse (Ab-
szisse) in 4 Bit aufgeteilt werden muss. Der Zusammenhang zwischen Strom, Pulslnge-
Perioden-Verhltnis und 4 Bit Ausung soll vorher diskutiert werden. Die Abzisse soll
anschlieend auf 6 Bit Ausung erhht werden. Beachten Sie, dass die Kurven fr ein
Pulslnge-Perioden-Verhltnis von 0,2 T bis 0,8 T aufgenommen wurden. Das bedeutet,
dass die Helligkeitsstufe 0 mit 0,2 T eingestellt werden soll und die Helligkeitsstufe 15
mit 0,8 T.
Anmerkung: Diskutieren bedeutet nicht nur verbale Diskussion, sondern auch eine
kurze schriftliche Erklrung, in der die wesentlichen Zusammenhnge festgehalten wer-
den sollen.
48 Praktikum am Lehrstuhl fr Mikroelektronik
4 Von der Theorie zur Praxis
Das Ziel dieses Praktikums ist die Realisierung des Single-Line-Addressierungsverfah-
rens (SLA) fr OLED-Displays mithilfe einer Hardware-Beschreibungssprache (VHDL,
Very High Speed Integrated Circuit Hardware Description Language) und eines FPGA
(Field Programmable Gate Array) sowie zugehriger Peripherie. Die Grundlagen dafr
sind unter anderem Grundkenntnisse in VHDL sowie im Umgang mit einem FPGA. Diese
Kenntnisse sollen in diesem Kapitel erlangt werden. Wir beginnen mit einer Einfhrung
in VHDL, bevor wir die entsprechende Software und das FPGA-Board vorstellen.
4.1 Einfhrung in VHDL
Die Sprache VHDL wurde Anfang der 1980-er Jahre in den USA als Dokumentations-
und Simulationssprache fr integrierte digitale Schaltungen im Rahmen des VHSIC
1
-Pro-
jektes des Verteidigungsministeriums entwickelt. Daher rhrt auch der Name der Sprache:
VHSIC Hardware Description Language. Die hauptschlich bei den Firmen IBM, Texas
Instruments und Intermetrics entwickelte Sprache wurde 1987 von der IEEE zum Stan-
dard 1076-1987 erhoben (und 1993 erneut berarbeitet im Standard 1076-1993).
Ziel der Entwicklung war es, eine Sprache zu denieren, mit der man Schaltungen auf
verschiedenen Abstraktionsebenen beschreiben kann. Diese Beschreibung sollte simu-
lierbar sein, damit der Entwickler die Mglichkeit hat, seine Schaltungen zu verizieren,
ohne sie real aufbauen zu mssen. Nachdem sich dieser Sprachstandard in den 1980-er
Jahren etabliert hatte, wurden von einigen Firmen sogenannte Synthesewerkzeuge vorge-
stellt, die in der Lage sind, die Beschreibung in eine Netzliste aus logischen Gattern zu
transformieren. Dies funktioniert allerdings nur, wenn man sich bei der Erstellung des
VHDL-Codes an gewisse Regeln hlt, die eine eindeutige Abbildung mglich machen.
1
Very High Speed Integrated Circuits
Praktikum am Lehrstuhl fr Mikroelektronik 49
4 Von der Theorie zur Praxis Universitt des Saarlandes
Eine VHDL-Beschreibung kann somit gleichzeitig als Dokumentation, zur Simulation
und zur Herstellung der Schaltung verwendet werden. Da die Beschreibung von Hierar-
chie ebenfalls mglich ist, erlaubt VHDL eine Schaltungsbeschreibung in Top-Down-Ma-
nier, die sich besonders fr Schaltungen mit sehr komplexen Aufgaben anbietet. VHDL
kann aber auch zur Beschreibung einer Netzliste eingesetzt werden, was wiederum eine
Beschreibung in Bottom-Up-Manier ermglicht. Ein groer Vorteil dabei ist, dass die un-
terschiedlichen Abstraktionen nahezu beliebig gemischt werden knnen.
Die Syntax von VHDL ist der von ADA
2
nachempfunden. Seltsamerweise hat man da-
bei festgelegt, da Gro- und Kleinschreibung egal sein mssen. Mit anderen Worten:
die Namen ADDIERER, addierer, AdDiErEr, aDdIeReR usw. bedeuten in VHDL alle
dieselbe Sache!
Wie jede Programmiersprache bietet auch VHDL die Mglichkeit von Kommentaren.
Kommentare in VHDL beginnen mit zwei Minuszeichen -- und erstrecken sich immer
bis zum Zeilenende.
Ziele bei der Entwicklung von VHDL:
Industriestandard
Technologieunabhngig
Anwendbar in allen Phasen der Hardwareentwicklung
4.1.1 Eigenschaften von VHDL
Im Gegensatz zu normalen Programmiersprachen kann Gleichzeitigkeit modelliert
werden.
Hochsprachenkonstrukte (and, or, if-then-else, . . . )
Modellierung auf Verhaltens- und/oder Strukturebene mglich
Kann individuelle Verzgerungen enthalten
2
Eine nach Ada Lovelace benannte Programmiersprache.
50 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
4.1.2 Modellierungsmethodiken
Abstraktion
Die Abstraktion erlaubt es, verschiedene Teile eines Modells unterschiedlich detailliert zu
beschreiben. Module, die nur fr die Simulation gebraucht werden, mssen z. B. nicht so
genau beschrieben werden wie Module, die fr die Synthese gedacht sind.
Die unterschiedlichen Abstraktionsebenen knnen folgendermaen grob eingeteilt wer-
den:
Verhaltensbeschreibung: Beschreibt lediglich funktionale Zusammenhnge. Dabei
handelt es sich um algorithmische Beschreibungen mit den Mitteln einer hheren
Programmiersprache, in der kein/kaum Bezug zur spteren Schaltungsstruktur ge-
nommen wird.
Datenussbeschreibung: Einfache logische Funktionen (AND, OR, NOT usw.) wer-
den mit VHDL-Sprachkonstrukten beschrieben, whrend komplexere Zusammen-
hnge durch Verwendung (meist vom Chiphersteller) vorgegebener Makrozellen
erreicht werden. Ein Datenussmodell spiegelt viele Details der spteren Schaltung
wieder.
Strukturbeschreibung: Diese Art der Beschreibung stellt im Wesentlichen eine Netz-
liste der Schaltung dar. Hier werden alle Funktionen der Schaltung durch Verwen-
dung (und Verschaltung) von Logikzellen beschrieben. Man kann auch sagen, dass
sie eine Mischform zwischen Datenuss- und Verhaltensbeschreibung ist.
Wir werden fr unseren Entwurf die Verhaltensbeschreibung nutzen, um die Funk-
tionen der Module unseres ASIC (engl. Application Specic Integrated Circuit) zu
beschreiben (Zhleinheit, Register usw.) und die Strukturbeschreibung, um diese
einzelnen Module zu verschalten.
Modularitt
Die Modularitt erlaubt es, groe Funktionsblcke zu unterteilen und in abgeschlossene
Unterblcke, den sogenannten Modulen, zusammenzufassen. Das erlaubt, den Funktions-
block besser zu beherrschen ( Teile und herrsche, engl. devide and conquer).
Praktikum am Lehrstuhl fr Mikroelektronik 51
4 Von der Theorie zur Praxis Universitt des Saarlandes
Hierarchie
Die Hierarchie erlaubt es, ein System aus mehreren Modulen aufzubauen, die wiederum
aus mehreren Modulen bestehen knnen. Eine Ebene in der Beschreibungshierarchie kann
also ein oder mehrere Module mit unterschiedlichem Abstraktionsgrad beinhalten. Die
Untermodule der darin enthaltenen Modulen bilden die nchste darunterliegende Hierar-
chieebene.
Ein oder mehrere Module mit unterschiedlichemAbstraktionsgrad bilden eine Hier-
archieebene. Die darin enthaltenen Untermodule bilden die Hierarchieebene darun-
ter.
Teilbeschreibungen aus unteren Ebenen werden als Instanzen an bergeordnete Mo-
dule weitergegeben.
Hierarchie bedeutet die Unterteilung der Gesamtschaltung in einfachere und kleinere
(Teil-)Komponenten. Diese sind entsprechend der Struktur der Schaltung ineinander ver-
schachtelt. Die Komplexitt dieser Komponenten kann von einem einzelnen einfachen
Gatter (z. B. ein NAND) bis hin zu komplexen Funktionseinheiten (z. B. Prozessorkern,
Filter usw.) reichen. Eine Hierarchie stellt selber keine eigene Funktion innerhalb der
Schaltung dar, sondern kann als eine Hlle angesehen werden, in der sich ein Schal-
tungsteil bendet. Die Hlle hat einen Namen und verschiedene Anschlsse zu der innen
liegenden Schaltung, deren Komplexitt auerhalb verborgen bleibt und so quasi eine ver-
einfachte Betrachtung erst ermglicht. Eine hierarchische Struktur einer Schaltung kann
man sich sehr leicht mit Koffern vorstellen, die ineinander gelegt sind und in denen sich
jeweils ein Teil des Gesamt-Designs bendet. Die Gesamtschaltung kann man dann mit
dem obersten Koffer anfassen, da alle anderen sich in diesem benden.
4.1.3 Aufbau eines VHDL-Programms
Eine VHDL-Komponente besteht im Groben aus zwei Hauptteilen, der Entity und
der Architecture. Es kommen aber noch ein paar dazu.
Bestandteile eines VHDL-Modells:
Komponenten
Komponenten sind Bausteine eines VHDL-Modells. Man kann sich darunter auch
ICs vorstellen. Sie bestehen aus einem Interface- und einem Architekturteil.
52 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Prozesse
Prozesse sind Programmfragmente, die abgearbeitet werden. Das Verhalten der
Komponenten wird durch Prozesse und/oder durch eine Verschaltung von anderen
Bausteinen deniert.
Signale
Signale dienen zum Transport von Informationen, wobei auch der Zeitbezug be-
rcksichtigt wird. Prozesse kommunizieren ber Signale miteinander.
Entity
Die Entity enthlt die Schnittstellendenition des Bausteins, die sogenannten Ports. Die
Ports entsprechen den Beinchen eines ICs. Bausteine kommunizieren miteinander ber
Schnittstellen-Signale.
Ein Port kann dabei eine einzelne Leitung oder eine Gruppe von Leitungen beschrei-
ben. Die Beschreibung des Signals auf einer Leitung ist mit verschiedenen vordenierten
Typen mglich. Wir beschrnken uns hier auf den in IEEE Std. 1164 festgelegten Typ
std_logic, der eine realittsnahe digitale Beschreibung darstellt. std_logic hat dabei fol-
gende mgliche Leitungszustnde:
Name Logikwert
0 logische Null
L schwache Null
X unbestimmt
H schwache Eins
1 logische Eins
U nicht initialisiert
Z hochohmig
- dont care
Tabelle 4.1: Logikwerte des Datentyps std_logic
Driven-high verknpft mit weak-low ergibt driven-high; weak-high und charged-low
ergibt weak-high. Bei gleicher Signalstrke und konkurrierenden Signalwerten ergibt sich
jeweils ein X; so wird driven-high verknpft mit driven-low zu driven-X.
Praktikum am Lehrstuhl fr Mikroelektronik 53
4 Von der Theorie zur Praxis Universitt des Saarlandes
Bibliotheken
Um die Denitionen des IEEE Std. 1164 benutzen zu knnen, muss dem Simulator be-
kannt gemacht werden, dass wir diese Bibliothek nutzen wollen. Da wir spter auch
selbstgeschriebene Schaltungsteile verwenden werden, mssen wir auch die Elemente
unserer eigenen Bibliothek, die in VHDL standardmig work heit, bekanntmachen:
1 l i br ar y IEEE ;
2 use IEEE . s t d_l ogi c _1164 . a l l ;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5
6 l i br ar y WORK;
Abbildung 4.1: Bekanntmachung der Bibliotheken
Ports
Hier die Portliste einer einfachen 1-Bit-Addiererzelle mit den Eingngen A, B, C_IN und
den Ausgngen S, C_OUT:
1 l i br ar y IEEE ;
2 use IEEE . s t d_l ogi c _1164 . a l l ;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5
6 l i br ar y WORK;
7
8 e nt i t y Ad d i e r e r z e l l e i s
9 port ( A: i n s t d _ l o g i c ;
10 B: i n s t d _ l o g i c ;
11 C_IN: i n s t d _ l o g i c ; Car r y I n ( Ue be r t r a gs e i nga ng )
12 S : out s t d _ l o g i c ; Summe
13 C_OUT: out s t d _ l o g i c Car r y Out ( Ue be r t r a gs a us ga ng )
14 ) ;
15 end Ad d i e r e r z e l l e ;
Abbildung 4.2: Portliste 1-Bit-Addierzelle
Achtung! Beim letzten Port einer Portliste (vor der schlieenden Klammer) muss das
Semikolon weggelassen werden!
54 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Vektoren und generische Breite
Neben einfachen logischen Ein- und Ausgngen knnen in VHDL auch Vektoren (siehe
Abb. 4.3) zum Einsatz kommen. Dies erleichtert die Schreibarbeit bei groen Wrtern.
1 l i br ar y IEEE ;
2 use IEEE . s t d_l ogi c _1164 . a l l ;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5
6 l i br ar y WORK;
7 e nt i t y Ad d i e r e r z e l l e i s
8 port ( A: i n s t d _ l o g i c _ v e c t o r ( 5 downto 0 ) ;
9 B: i n s t d _ l o g i c _ v e c t o r ( 5 downto 0 ) ;
10 C_IN: i n s t d _ l o g i c ;
11 S : out s t d _ l o g i c _ v e c t o r ( 5 downto 0 ) ;
12 C_OUT: out s t d _ l o g i c
13 ) ;
14 end Ad d i e r e r z e l l e ;
Abbildung 4.3: Vektoren
Die beiden Eingnge und der Ausgang sind damit 6 Bit breit. Diese Breite ist nun al-
lerdings festgesetzt, so dass die Komponente nur eine Aufgabe fr 6 Bit erfllen kann.
Oft ist es aber ntig, das Komponenten innerhalb einer groen Beschreibung in verschie-
denen Breiten auftreten. VHDL bietet hier die Mglichkeit einer generischen Wortbreite,
die erst beim Aufruf der Komponente deren Breite endgltig festlegt (siehe Abb. 4.4).
1 l i br ar y IEEE ;
2 use IEEE . s t d_l ogi c _1164 . a l l ;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5
6 l i br ar y WORK;
7
8 e nt i t y Ad d i e r e r z e l l e i s
9 ge ne r i c (WIDTH: n a t u r a l : =1 0 ) ;
10 port ( A: i n s t d _ l o g i c _ v e c t o r ( wi dt h 1 downto 0 ) ;
11 B: i n s t d _ l o g i c _ v e c t o r ( wi dt h 1 downto 0 ) ;
12 C_IN: i n s t d _ l o g i c ;
13 S : out s t d _ l o g i c _ v e c t o r ( wi dt h 1 downto 0 ) ;
14 C_OUT: out s t d _ l o g i c
15 ) ;
16 end Ad d i e r e r z e l l e ;
Abbildung 4.4: Vektoren mit generischer Breite
Praktikum am Lehrstuhl fr Mikroelektronik 55
4 Von der Theorie zur Praxis Universitt des Saarlandes
Diese Addierzelle hat nun eine generische Breite der Grundbreite zehn aus dem Raum
der natrlichen (natural) Zahlen. Wird die Komponente benutzt, kann aber auch eine neue
Breite angeben werden. Diese wird dann an die Vektoren weitergeben. Ohne Angabe wird
der Default-Wert (hier 10) benutzt. Wird kein Default-Wert angegeben, muss beim Aufruf
auf jeden Fall ein Wert fr die Breite mitgegeben werden!
Architecture
Der interne Aufbau oder die Funktionsweise einer Entity wird mit einer sogenannten Ar-
chitecture beschrieben. Eine solche Beschreibung verwendet genau wie die beschriebe-
ne Schaltung meist interne Signale.
Nun hngt der Zustand einer digitalen Schaltung (und damit der ihrer Ausgnge) von
den Zustnden der Eingnge und von den Zustnden aller internen Signale ab. Eine Zu-
standsnderung erfolgt also nur, wenn sich ein Eingang oder ein internes Signal ndert,
d.h. wenn ein Ereignis (engl.: event) stattndet. Dieser Tatsache wird in VHDL durch
sogenannte Processes Rechnung getragen. Da nicht immer alle Ausgangssignale von al-
len Eingngen und allen internen Signalen abhngig sind, ist es erlaubt, innerhalb einer
Beschreibung mehrere Prozesse zu verwenden. Dadurch ist auch die Simulationsmglich-
keit von VHDL in einem ereignisgesteuerten Simulator gewhrleistet.
Oft ist es sinnvoll, fr jedes Ausgangssignal einen eigenen Process zu verwenden. All
diese Prozesse sind parallele Anweisungen, d.h. sie sind prinzipiell gleichzeitig gltig.
Welcher Process aktiv ist, hngt dann davon ab, welches Ausgangssignal sich ndern soll.
Damit hngt der Process von den entsprechenden Eingngen und internen Signalen ab
3
.
Dem wird durch eine Sensitivity List Rechnung getragen.
Prinzipiell kann jedes Ausgangssignal von allen Eingangssignalen und gleichzeitig von
allen internen Signalen abhngen. Die einfachste Mglichkeit, die Sensitivity List eines
Prozesses anzugeben wre damit, alle diese Signale in die Sensitivity List einzutragen.
Bei der Simulation wrde dann aber der entsprechende Prozess immer bei jedem Event
auf jedem dieser Signale aktiv (d.h. ausgewertet) unabhngig davon, ob der entspre-
chende Ausgang berhaupt von diesem Signal abhngig ist. Der Rechenaufwand fr den
Simulator wird dadurch unntig hoch (vgl. Kapitel Logiksimulation im Skript Mikro-
elektronik 2).
3
Jeder Port, ob Eingang, Ausgang oder Ein-/Ausgang besitzt im Innern einer Architecture automatisch ein
gleichnamiges Signal (sog. implizite Signale). Im Folgenden wird deshalb im Innern einer Architecture
nur noch von Signalen die Rede sein.
56 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Besonders wichtig bei der Beschreibung solcher kombinatorischer Schaltungen ist,
dass man wirklich alle Signale (und am besten auch nur diese!), von denen ein im
Process berechnetes Signal abhngt, auch in der Sensitivity List angibt.
4.1.4 Signalauswertung
Jedes Signal in VHDL hat eine festgelegte Datenussrichtung, nmlich von der Quelle
(Zuweisung eines Wertes) zur Senke (Auswertung des Signals). Meistens hat ein Signal
eine einzige, feste Quelle (z. B. genau einen Process, in dem das Signal zugewiesen wird).
Wenn ein Signal jedoch mehrere Quellen hat, so bedeutet dies, dass es sich um ein so-
genanntes resolved Signal handelt. Eine (fast immer vorgegebene) Resolution Function
bestimmt dann aus den Werten aller dieser Quellen den Wert des Signals. Der von uns
verwendete Signaltyp std_logic ist ebenfalls ein solcher resolved-Signaltyp, was uns al-
lerdings nicht strt, solange wir darauf achten, dass jedes Signal in unseren Beschreibun-
gen immer nur eine Quelle hat. Ein hug gemachter Fehler bei der VHDL-Beschreibung
von Schaltungen ist Folgender:
Ein Signal (zum Beispiel: signal A: std_logic) besitzt mehrere Quellen (sagen wir: zwei
Prozesse). Sobald diese Prozesse unterschiedlicher Meinung sind, welchen Wert A ha-
ben soll, fhrt der Aufruf der Resolution Function dazu, dass A im Endeffekt meist den
Wert X (bzw. U) erhlt.
Tabelle 4.5 stellt dar, welches Endergebnis eine Signalauswertung aus zwei Quellen
erzeugen wird.
U X 0 1 Z L H
U U U U U U U U
X U X X X X X X
0 U X 0 X 0 0 0
1 U X X 1 1 1 1
Z U X 0 1 Z L H
L U X 0 1 L L X
H U X 0 1 H X H
Abbildung 4.5: Ausungs-Tabelle fr std_logic (vereinfacht)
Praktikum am Lehrstuhl fr Mikroelektronik 57
4 Von der Theorie zur Praxis Universitt des Saarlandes
Der langen Rede kurzer Sinn ist: Immer darauf achten, dass jedes Signal immer nur
genau eine Quelle hat. Insbesondere bedeutet das, dass ein Signal immer nur mit
genau einem Ausgang genau einer Instanz verbunden sein darf oder dass ein Signal
nur in genau einem Process zugewiesen werden darf.
Eine Ausnahme von dieser Regel bilden Tristate-Signale. Solche werden aber im Rah-
men des VHDL-Teils dieses Praktikums nicht verwendet.
4.1.5 Sprachelemente
Weitere wichtige Sprachelemente von VHDL ermglichen die Beschreibung von Schlei-
fen und Abfragen.
IF-ELSE
Folgendes Code-Fragment benutzt eine if-Abfrage, um ein Signal abhngig von einem
anderen zuzuweisen:
1 i f SELECT = 0 t hen
2 MUX_OUT <= MUX_IN_1 ;
3 e l s i f SELECT = 1 t hen
4 MUX_OUT <= MUX_IN_2 ;
5 end i f ;
Abbildung 4.6: IF-ELSE
Bei Synthese der entsprechenden Schaltung fhren diese Zeilen (Abbildung 4.6) zur
Erzeugung eines Multiplexers. Es handelt sich um einen 2-zu-1 Multiplexer, dessen Wort-
breite so gross wie die der MUX_-Signale ist.
Wichtig fr eine synthetisierbare Beschreibung ist, dass immer mindestens die Flle
0 und 1 abgefragt werden! Schlielich gibt es fr std_logic noch die anderen
Flle X, Z usw., die ebenfalls auftreten knnen. Da manche Synthesewerkzeuge
mit if-Abfragen auf zusammengesetzten Datentypen (z. B. std_logic_vector) Pro-
bleme haben, sollten solche if-Abfragen nur auf dem elementaren Typ std_logic
verwendet werden!
58 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Weiterhin ist darauf zu achten, das alle Zustnde abgehandelt werden. Ansonsten wird
ein Latch generiert, was im Digitaldesign unbedingt zu vermeiden ist. Alle if sollten
nach Mglichkeit mit einem else abgeschlossen werden.
Case-Statement
Eine andere Form der Abfrage, die diese Probleme nicht aufweist, ist das case-Statement.
Das Beispiel aus Abbildung 4.6 knnte unter Verwendung eines case-Statements folgen-
dermaen aussehen:
1 cas e SELECT i s when 0 =>
2 MUX_OUT <= MUX_IN_1 ;
3 when 1 =>
4 MUX_OUT <= MUX_IN_2 ;
5 when ot he rs => Es g i b t auch X , L , H ,
6 Z , . . .
7 nul l ; l e e r e Anwei sung
8 end cas e ;
Abbildung 4.7: CASE-Statement
Das null-Statement in dieser Beschreibung fhrt dazu, dass der Ausgang nicht gendert
wird, wenn SELECT weder 0 noch 1 ist.
Die meisten Synthesetools (auch das von uns verwendete) erfordern, dass bei einem
case-Statement immer alle Mglichkeiten abgedeckt werden, weshalb die Abfrage when
others => hier ebenfalls auftaucht. Manche Synthesetools knnen eine bessere Schal-
tungsoptimierung durchfhren, wenn bei einer solchen Beschreibung das Multiplexsignal
MUX_OUT auf einen bestimmten Wert (z.B. X) gesetzt wird.
FOR-Schleife
Ein weiteres hug benutztes Sprachelement von VHDL ist die for-Schleife (Abb. 4.8).
1 wi r gehen davon aus , da s s S_OUT und S_IN g l e i c h e Laenge haben
2 f or i i n 0 t o S_IN Lengt h 2 l oop
3 S_OUT( i ) <= S_IN( i +1) ;
4 end l oop ;
5 S_OUT( S_IN Lengt h 1) <= S_IN ( 0 ) ;
Abbildung 4.8: FOR-Schleife
Praktikum am Lehrstuhl fr Mikroelektronik 59
4 Von der Theorie zur Praxis Universitt des Saarlandes
Das Code-Fragment aus Abbildung 4.8 lsst das Signal S_IN zyklisch nach rechts ver-
schoben als Signal S_OUT erscheinen. Dabei muss die Laufvariable i nicht vorher de-
niert werden! Hier lernen wir auch das erste sogenannte Attribut (hier: Length) kennen.
Length ist ein Attribut, das fr jedes Signal automatisch deniert ist und die Anzahl der
Elemente dieses Signals (Vektors) angibt. Die Lnge des elementaren Typs std_logic ist
somit 1, die Lnge eines std_logic_vector(WIDTH-1 downto 0) ist WIDTH.
Alternativ knnen die Attribute Left und Right verwendet werden. Abbildung 4.9 zeigt
damit die Realisierung der gleichen Funktion wie in Abbildung 4.8.
1 f or i i n S_IN Ri ght t o ( S_IN Lef t 1) l oop
2 S_OUT( i ) <= S_IN( i +1) ;
3 end l oop ;
4 S_OUT( S_IN Le f t ) <= S_IN( S_IN Ri ght ) ;
Abbildung 4.9: FOR-Schleife mit Attributen Left und Right
Mit den hier eingefhrten Attributen lassen sich sehr gut Beschreibungen realisieren,
die auf Vektoren (Bussen) beliebiger Breite mit durchgehender Numerierung, wie bei-
spielsweise std_logic_vector (5 to 17) oder std_logic_vector(7 downto 2) arbeiten, ohne
darauf eingehen zu mssen, wie der Vektor wirklich zusammengesetzt ist.
Operatoren und Zuweisungen
VHDL kennt unter anderem folgende relationale Operatoren:
= gleich
/ = ungleich
< kleiner als
<= kleiner gleich
> grer
>= grer gleich
Bei Zuweisungen werden folgende Symbole verwendet:
:= Variablenzuweisung
<= Signalzuweisung
60 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Dies ist lediglich ein kleiner Auszug. Natrlich knnen zumBeispiel auch + und
verwendet werden. Der Compiler erkennt aus dem Kontext, ob es sich um eine Signalzu-
weisung oder einen Vergleich kleiner/gleich handelt.
4.1.6 Beschreibung sequentieller Schaltungen in VHDL
Bisher haben wir in VHDL nur die Mglichkeit, kombinatorische Schaltungen zu be-
schreiben. Fr eine Ansteuerung, wie wir sie implementieren wollen, wird das mit Si-
cherheit nicht ausreichend sein, da auch sequentielle Schaltungsteile (z.B. Flip-Flops und
Register) in solchen Schaltungen vorkommen.
Glcklicherweise lassen sich solche sequentiellen Elemente in VHDL mit den bisher
betrachteten Sprachelementen bereits beschreiben. Wir haben schon im vorangehenden
Kapitel gesehen, dass mit einem einfachen if-Befehl bereits die Beschreibung eines Lat-
ches mglich ist. Ein solches Latch ist bereits ein speicherndes Element, d.h. ein Teil einer
sequentiellen Schaltung.
Betrachten Sie das Beispiel eines Latches in Abb. 4.10.
1 e nt i t y D_LATCH i s port (
2 D: i n s t d _ l o g i c ;
3 L: i n s t d _ l o g i c ;
4 Q: out s t d _ l o g i c
5 ) ; end D_LATCH;
6
7 a r c hi t e c t ur e da t a f l ow of D_LATCH i s
8
9 begi n
10 proces s (D, L) Pr oc e s s a k t i v be i Aenderung von D oder L
11 begi n
12 i f L = 1 t hen
13 Q <= D; Lat ch t r a n s p a r e n t f u e r D
14 end i f ;
15 end proces s ;
16 end da t a f l ow ;
Abbildung 4.10: VHDL-Beschreibung eines D-Latch
Unsere Architecture dataflow ist jedesmal aktiv, wenn sich Doder L ndern. Dabei
wird jedesmal, wenn L=1 ist, D an den Ausgang Q weitergereicht. Dies bedeutet, dass
jede nderung von D auch am Ausgang Q sichtbar ist, solange L=1 ist. Man sagt: Das
Latch ist transparent bei L=1.
Praktikum am Lehrstuhl fr Mikroelektronik 61
4 Von der Theorie zur Praxis Universitt des Saarlandes
ndert sich D jedoch, whrend L=0 ist, so wird diese nderung nicht weitergereicht.
Mit anderen Worten: Der Ausgang Q ndert sich nicht. Er kann daher logischerweise nur
auf seinem vorherigen Wert bleiben.
Da der Ausgang Q abhngig ist vom Zustand des Eingangs L, ist ein Latch immer
zustandsgesteuert.
Leider sind solche Latches wegen der Transparenz whrend L=1 und der Zustands-
steuerung nur bedingt fr den Aufbau sequentieller Schaltungen geeignet. Allerdings
kann man (wie in der Vorlesung Mikroelektronik 1 vorgestellt) aus zwei zustandsgesteu-
erten Latches ein ankengesteuertes Flip-Flop aufbauen.
Flip-Flops knnen jedoch auch (ebenfalls in Mikroelektronik 1 beschrieben) aus rck-
gekoppelten Gattern (z.B. NAND) aufgebaut werden.
In VHDL ist es allerdings nicht erforderlich, ein Flip-Flop unter der Verwendung sol-
cher Latches oder rckgekoppelter Gatter zu beschreiben. Durch das Attribut event
kann man nmlich in einer VHDL-Beschreibung auf die nderung eines Signals, d.h. auf
eine Flanke, reagieren (siehe Abb. 4.11).
1 e nt i t y DFF i s port (
2 D: i n s t d _ l o g i c ;
3 CLOCK: i n s t d _ l o g i c ;
4 Q: out s t d _ l o g i c
5 ) ; end DFF;
6
7 a r c hi t e c t ur e da t a f l ow of DFF i s begi n
8 DFF r e a g i e r t nur auf e i ne Fl anke von CLOCK
9 proces s (CLOCK)
10 begi n
11 Bes chr ei bung der s t e i g e n d e n Fl anke :
12 i f CLOCK e ve nt and CLOCK= 1 t hen
13 Q <= D;
14 end i f ;
15 end proces s ;
16 end da t a f l ow ;
Abbildung 4.11: D-Flip-Flop in VHDL
Da ein ankengesteuertes Element (z.B. mit dem Signal CLOCK) nur bei der entspre-
chenden Flanke aktiv wird, besteht die Sensitivity List ebenfalls nur aus diesem einen
Signal.
62 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Das so beschriebene D-Flip-Flop ist eine rein synchrone Schaltung. Ein Flip-Flop mit
asynchronem Reset kann daraus sehr einfach gewonnen werden. Dabei muss man jedoch
beachten, dass das Flip-Flop nun nicht mehr nur von der Taktanke, sondern auch vom
Reset-Signal aktiviert werden kann, d.h. dass das Reset-Signal ebenfalls in die Sensitivity
List aufgenommen werden muss (siehe Abb. 4.12).
1 e nt i t y DFFR i s port (
2 D: i n s t d _ l o g i c ;
3 CLOCK: i n s t d _ l o g i c ;
4 RESET: i n s t d _ l o g i c ;
5 Q: out s t d _ l o g i c
6 ) ; end DFFR;
7
8 a r c hi t e c t ur e d a t a f l o w_ a s y n c _ r e s e t of DFFR i s begi n
9 DFFR Re a g i e r t auf RESET sowi e auf Fl anke von CLOCK
10 proces s (CLOCK, RESET)
11 begi n
12 RESET ha t Vorrang , d . h . d i e s e i f Abf r age muss
13 a u s s e r h a l b der von CLOCK s t e he n ! ! !
14 i f RESET= 1 t hen Ruecks et zen be i 1
15 Q <= 0 ;
16 e l s i f RESET= 0 t hen
17 Bes chr ei bung der s t e i g e n d e n Fl anke :
18 i f CLOCK e ve nt and CLOCK= 1 t hen
19 Q <= D;
20 end i f ;
21 end i f ;
22 end proces s ;
23 end d a t a f l o w_ a s y n c _ r e s e t ;
24
25
26 a r c hi t e c t ur e d a t a f l o w_ s y n c _ r e s e t of DFFR i s begi n
27 Re a g i e r t wi ederum nur auf Fl anke von CLOCK
28 proces s (CLOCK)
29 begi n
30 CLOCK muss z u e r s t a b g e f r a g t werden . . .
31 i f CLOCK e ve nt and CLOCK= 1 t hen
32 . . . da RESET nur be i s t e i g e n d e r Fl anke
33 e r f o l g t .
34 i f RESET= 1 t hen
35 Q <= 0 ;
36 e l s i f RESET= 0 t hen
37 Q <= D;
38 end i f ;
39 end i f ;
40 end proces s ;
41 end d a t a f l o w_ s y n c _ r e s e t ;
Abbildung 4.12: D-Flip-Flops mit asynchronem und synchronem Reset
Praktikum am Lehrstuhl fr Mikroelektronik 63
4 Von der Theorie zur Praxis Universitt des Saarlandes
Bei einem Flip-Flop mit synchronem Reset dagegen wird das Reset-Signal nur dann
ausgewertet, wenn eine steigende Taktanke ankommt.
Aus Flip-Flops lassen sich Register realisieren, die mehrere Bits gleichzeitig speichern
knnen. Wenn wir uns die Beschreibung der Flip-Flops etwas genauer ansehen, erkennen
wir, dass es innerhalb der Architecture egal ist, ob Q und D vom Typ std_logic oder z.B.
vom Typ std_logic_vector sind.
Der Ausdruck (others => 0) ist eine besondere Form der Zuweisung eines
Vektor-Typen. Die vorher zum Teil schon verwendete Schreibweise 0000 ist da-
bei nichts anderes als (0, 0, 0, 0).
Ein Ausdruck der Art Q<=(0, others => Z) kann z. B. dazu verwendet
werden, das am weitesten links stehende Bit von Q auf 0 und alle anderen auf Z
zu setzen, unabhngig davon, wieviele Bits Q beinhaltet!
4.1.7 Testmuster und Testbench
Wenn man eine Schaltung z.B. einen Chip oder eine Platine entworfen hat, so testet
man zumindest den Prototypen ausgiebig in einer Testschaltung. Dazu verwendet man
bei Digitalschaltungen in der Regel ein Oszilloskop oder besser einen Logikanalyzer, um
Eingangsdaten (Testmuster) anzulegen und die Ausgnge zu beobachten.
Nun hat man mit der VHDL-Beschreibung leider ja noch keine elektrischen Anschls-
se, an die man solche Gerte anklemmen knnte. Aber man hat den Vorteil, dass man
sogar die Testschaltung in VHDL beschreiben kann. Diese Testschaltung heit dann Test-
bench. Da in VHDL auch das Anlegen der Testmuster beschrieben werden kann, hat eine
solche Testschaltung keine eigenen Ein- und Ausgnge. Die zu testende Schaltung ist in
der Testbench als Komponente eingesetzt.
Die Testmuster fr die entworfene Schaltung kann man z. B. ber systematische Verfah-
ren, die in der Vorlesung Mikroelektronik 2 vorgestellt werden, ermitteln. Bei einfachen
Strukturen gibt es auch die Mglichkeit, Testmuster automatisch zu generieren.
Da wir bisher nur kombinatorische Schaltungen betrachtet haben, knnen wir auch
einen erschpfenden Test durchfhren, d.h. wir knnen alle sinnvollen Kombinationen
von Eingangssignalen anlegen, um die Schaltung zu berprfen.
64 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
Da eine Testbench nur zur Simulation eingesetzt (aber nicht synthetisiert) wird, knnen
wir hier auch Sprachkonstrukte von VHDL verwenden, die keine simulierbare Beschrei-
bung ergeben. Solche Konstrukte werden wir deshalb ausschlielich in der Beschreibung
von Testbenches verwenden.
Es ist zu beachten, dass immer auch eine Simulation der System-Clock (Takt) erfol-
gen muss. Diese kann z. B. wie in Abbildung 4.13 gezeigt realisiert werden. Spter, im
richtigen Betrieb, wird das Board des FPGAs die Clock zur Verfgung stellen.
1 TAKT: proces s
2 begi n
3 CLOCK_Test <= not CLOCK_Test ;
4 wai t f or 10 ns ;
5 end proces s ;
Abbildung 4.13: Clock-Generierung in einer Testbench
Praktikum am Lehrstuhl fr Mikroelektronik 65
4 Von der Theorie zur Praxis Universitt des Saarlandes
Abbildung 4.14 zeigt beispielhaft den VHDL-Code fr einen umschaltbaren Addierer
und Subtrahierer. Wenn der Eingang addnsub auf 1 liegt, werden die Vektoren a und b
addiert, andernfalls werden sie subtrahiert. Die Breite der Vektoren kann ber die gene-
rische Variable width_addnsub eingestellt werden. Beachten Sie, dass die Breite des
Ausgangs result um eins grer ist als die der Eingnge, da das Ergebnis der Addition
im Maximalfall doppelt so gro wie das grte mgliche Eingangssignal sein kann.
1 LIBRARY i e e e ;
2 USE i e e e . s t d_l ogi c _1164 . ALL;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5 USE work . ALL;
6
7 ENTITY addsub IS
8 ge ne r i c ( wi dt h_addns ub : n a t u r a l : = 5 ) ;
9 PORT
10 (
11 c l oc k : IN STD_LOGIC;
12 r e s e t : IN STD_LOGIC;
13 a : IN STD_LOGIC_VECTOR( wi dt h_addnsub 1 downto 0 ) ;
14 b : IN STD_LOGIC_VECTOR( wi dt h_addnsub 1 downto 0 ) ;
15 addnsub : IN STD_LOGIC;
16 r e s u l t : OUT STD_LOGIC_VECTOR( wi dt h_addnsub 1 downto 0)
17 ) ;
18 END addsub ;
19
20 ARCHITECTURE r t l OF addsub IS
21 BEGIN
22 PROCESS ( a , b , addnsub , cl ock , r e s e t )
23 BEGIN
24 IF ( r e s e t = 1 ) THEN
25 r e s u l t <= ( ot he rs => 0 ) ;
26 ELSIF ( cl ock e ve nt AND c l oc k = 1 ) THEN
27
28 IF ( addnsub = 1 ) THEN
29 r e s u l t <= a + b ;
30 ELSE
31 r e s u l t <= a b ;
32 END IF ;
33 END IF ;
34 END PROCESS;
35 END r t l ;
Abbildung 4.14: Quellcode eines Addier- und Subtrahierwerkes
Eine entsprechende Testbench, um den in Abbildung 4.14 vorgestellten Addierer und
Subtrahierer zu prfen, ist in Abbildung 4.15 zu sehen.
66 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
1 l i br ar y IEEE ;
2
3 use IEEE . s t d_l ogi c _1164 . a l l ;
4 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
5 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
6
7 l i br ar y WORK;
8 use work . a l l ;
9
10 e nt i t y test_ADD i s
11 end test_ADD ;
12
13
14 a r c hi t e c t ur e t o p l e v e l of test_ADD i s
15
16 COMPONENT addsub
17 ge ne r i c ( wi dt h_addns ub : n a t u r a l : = 5 ) ;
18 PORT(
19 c l oc k : IN STD_LOGIC;
20 r e s e t : IN STD_LOGIC;
21 a : IN STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0 ) ;
22 b : IN STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0 ) ;
23 addnsub : IN STD_LOGIC;
24 r e s u l t : OUT STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0)
25 ) ;
26 END COMPONENT;
27
28 f or test_ADD : addsub use e nt i t y work . addsub ( r t l ) ;
29
30 s i g na l a _ t e s t : s t d _ l o g i c _ v e c t o r ( 11 downto 0) : = " 101010101010 " ;
31 s i g na l b _ t e s t : s t d _ l o g i c _ v e c t o r ( 11 downto 0) : = " 100000000000 " ;
32 s i g na l a d d n s u b _ t e s t : s t d _ l o g i c : = 0 ;
33 s i g na l r e s u l t _ t e s t : s t d _ l o g i c _ v e c t o r ( 11 downto 0) : = " 000000000000 " ;
34 s i g na l RESET_t est : s t d _ l o g i c : = 0 ;
35 s i g na l CLOCK_test : s t d _ l o g i c : = 0 ;
36
37
38
39 begi n test_ADD : addsub
40
41 ge ne r i c map ( wi dt h_addns ub => 12)
42 port map ( a => a _ t e s t , b => b _ t e s t , addnsub => a ddns ub_t e s t ,
43 r e s e t => RESET_t est , c l oc k => CLOCK_test , r e s u l t => r e s u l t _ t e s t ) ;
44
45 TAKT: proces s
46 begi n
47 CLOCK_Test <= not CLOCK_Test ;
48 wai t f or 10 ns ;
49 end proces s ;
50
51 modedr i ver : proces s
52 begi n
53 wai t f or 100 ns ;
54 a d d n s u b _ t e s t <= 1 ;
55
56 wai t f or 100 ns ;
57 r e s e t _ t e s t <= 1 ;
58
59 wai t f or 100 ns ;
60 r e s e t _ t e s t <= 0 ;
61
62 wai t f or 100 ns ;
63 a _ t e s t <= " 111111000000 " ;
64 b _ t e s t <= " 000000011111 " ;
65
66 wai t f or 100 ns ;
67
68
69
70 end proces s ;
71
72 end t o p l e v e l ;
Abbildung 4.15: Testbench zum in Abb. 4.14 vorgestellten Addierer bzw. Subtrahierer
Praktikum am Lehrstuhl fr Mikroelektronik 67
4 Von der Theorie zur Praxis Universitt des Saarlandes
4.1.8 Verwendung von Komponenten
Werden in einer greren Beschreibung mehrere Ausfhrungen derselben Komponente
bentigt, kann man die entsprechende Komponente mehrmals instanziieren. Dies ben-
tigt keinen eigenen Process, sondern stellt eine eigene Art von VHDL-Statement dar. Die
entsprechende (in einem use-Statement ausgewhlte) Architecture wird bei einer Simula-
tion immer dann aktiviert, wenn ein Event auf einem Signal auftritt, das an einen Eingang
der Instanz angeschlossen ist.
Abbildung 4.16 zeigt, wie eine solche Instanziierung am Beispiel der Addierer- und
Subtrahierereinheit aus Abbildung 4.14 aussehen knnte. Gleichzeitig verdeutlicht der
Quellcode das Einbinden von Variablen generischer Breite in einer Instanz. Das Statement
generic map (width => const.) bindet die Variable width fr diese Instanz an den Wert
const. Dies ermglicht die Verwendung einer Komponente fr verschiedene Breiten von
Ein- bzw. Ausgngen von unterschiedlichen Instanzen.
68 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.1 Einfhrung in VHDL
1 l i br ar y IEEE ;
2 use IEEE . s t d_l ogi c _1164 . a l l ;
3 use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
4 use IEEE . s t d _ l o g i c _ s i g n e d . a l l ;
5
6 l i br ar y WORK;
7
8 e nt i t y b e i s p i e l i s
9 PORT
10 (
11 c l oc k : IN STD_LOGIC;
12 r e s e t : IN STD_LOGIC;
13 . . . l e t z t e r Ei n t r a g ohne Semi kol on
14 ) ;
15 end b e i s p i e l ;
16
17 a r c hi t e c t ur e b e h a v i o r a l of b e i s p i e l i s
18 Bekannt machen der Komponente addsub
19 component addsub KEIN I S ! ! !
20 ge ne r i c ( wi dt h_addns ub : n a t u r a l : = 5 ) ;
21 port (
22 c l oc k : IN STD_LOGIC;
23 r e s e t : IN STD_LOGIC;
24 a : IN STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0 ) ;
25 b : IN STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0 ) ;
26 addnsub : IN STD_LOGIC;
27 r e s u l t : OUT STD_LOGIC_VECTOR( wi dt h_addnsub1 downto 0)
28 ) ;
29 end component ;
30 Auswahl e i n e r a r c h i t e c t u r e der Komponente addsub
31 Hi er : f u e r a l l e h i e r b e n u t z t e n I n s t a n z e n benut zen wi r di e
32 a r c h i t e c t u r e mi t Namen r t l .
33
34 f or a l l : addsub use e nt i t y WORK. addsub ( r t l ) ;
35
36 Man h a e t t e auch f u e r u n t e r s c h i e d l i c h e I n s t a n z e n von addsub
37 j e we i l s u n t e r s c h i e d l i c h e Bes chr ei bungen ver wenden koennen , z . B.
38 f o r c e l l 0 : addsub us e . . .
39 f o r c e l l 1 : addsub us e . . .
40 di e I n s t a n z e n des Addi erSu b t r a h i e r we r k s
41 muessen ueber Si gna l e " k o n t a k t i e r t " werden ,
42 dami t a l l e s auch da ankommt wo man moecht e
43
44 s i g na l a1 , b1 : STD_LOGIC_VECTOR( 11 downto 0 ) ;
45 s i g na l a2 , b2 : STD_LOGIC_VECTOR( 6 downto 0 ) ;
46 s i g na l as : STD_LOGIC;
47 s i g na l r 1 : STD_LOGIC_VECTOR( 11 downto 0 ) ;
48 s i g na l r 2 : STD_LOGIC_VECTOR( 6 downto 0 ) ;
49
50 Nun kommt di e e i g e n t l i c h e I n s t a n z i i e r u n g
51 begi n
52 addsub1 : addsub Name der I n s t a n z : z uge hoe r i ge Komponente
53 ge ne r i c map ( wi dt h_addns ub => 12) e r s t e I n s t a n z mi t Br e i t e 12
54 port map ( c l oc k => cl ock ,
55 r e s e t => r e s e t ,
56 a => a1 ,
57 b => b1 ,
58 addnsub => as ,
59 r e s u l t => r 1 ) ;
60
61 addsub2 : addsub
62 ge ne r i c map ( wi dt h_addns ub => 7) z we i t e I n s t a n z mi t Br e i t e 7
63 port map ( c l oc k => cl ock ,
64 r e s e t => r e s e t ,
65 a => a2 ,
66 b => b2 ,
67 addnsub => as ,
68 r e s u l t => r 2 ) ;
69
70 end b e h a v i o r a l ;
Abbildung 4.16: Instanziierung einer Komponente
Praktikum am Lehrstuhl fr Mikroelektronik 69
4 Von der Theorie zur Praxis Universitt des Saarlandes
4.2 Verwendete Hardware
4.2.1 FPGA
Ein FPGA (Field Programmable Gate Array) ist ein frei programmierbarer Logikschalt-
kreis, welcher aus einer Matrix-Struktur aus kongurierbaren Logikblcken besteht. Die-
se Logikblcke werden auch als CLB (Congurable Logic Blocks) bezeichnet. Die CLBs
wiederum bestehen aus SRAM
4
-Blcken, welche die whrend des Hardwareentwurfs ent-
standenen Entwurfsdaten aufnehmen. Fr die Kommunikation mit der Auenwelt dienen
die am FPGA existierenden Ein- und Ausgabeblcke (I/O-Blcke).
Jede CLB besitzt feste Bestandteile wie z.B. Lookup-Tabellen oder Flipop-Logik, auf
welche der Hardwareentwurf abgebildet werden kann. Besonderheit der Lookup-Tabel-
len ist, dass diese zur Realisierung von Logik-Operationen wie z.B. AND, OR, NOT oder
XORoder als RAM(RandomAccess Memory) genutzt weden knnen. Ein FPGAbesteht
aus einer groen Anzahl Logikzellen, deren Gesamtkapazitt in der Gre Gatterqui-
valente angegeben wird.
Fr die Erstellung von Hardwareentwrfen fr FPGAs werden Entwurfswerkzeuge be-
ntigt. Die eigentliche Erstellung des Entwurfs erfolgt unter Verwendung von Hardware-
beschreibungssprachen wie die bereits vorgestellte VHDL oder Verilog. Solche Hardwa-
rebeschreibungssprachen arbeiten nicht mit einzelnen elektronischen Bauteilen, sondern
beschreiben das gewnschte Verhalten einer Schaltung auf einem hheren Abstraktions-
niveau. Die mit einer Hardwarebeschreibungssprache erstellte Systembeschreibung kann
simuliert, synthetisiert und veriziert werden. Aus ihr kann schlielich eine Netzliste ge-
wonnen werden.
Die Synthese ist der wichtigste Arbeitsschritt innerhalb des auf Hardwarebeschrei-
bungssprachen basierenden Entwurfs. Whrend der Synthese wird die funktionale Be-
schreibung der Schaltung in eine Gatternetzliste umgewandelt. Diese bersetzung erfolgt
durch das Synthesewerkzeug. Die Gatternetzliste bildet wiederum die Grundlage fr die
Erzeugung einer Bitstream-Datei, welche ber den PC auf das FPGA geladen wird und
den Hardwareentwurf in aufbereiteter Form fr diesen enthlt. Die Erzeugung des Bit-
streams und dessen Upload auf das FPGA ist der letzte Entwurfsschritt.
Um den Hardwareentwurf mit FPGAs so einfach wie mglich zu gestalten, liefern
verschiedene Hersteller Prototyping-Boards mit auf dem Markt verfgbaren FPGAs aus.
4
Static Random Access Memory, Statisches RAM
70 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.2 Verwendete Hardware
Diese Prototyping-Boards besitzen neben dem FPGA zur Aufnahme des Entwurfes noch
zustzliche Elemente (Leuchtdioden, Anzeigen, Peripherie, Speicher, etc.), welche eine
komfortable Produktentwicklung mglich machen. Zum Prototyping-Board gehrt eine
Entwurfssoftware, durch welche Entwurfsbeschreibungen mit Hardwarebeschreibungs-
sprachen angefertigt und simuliert werden knnen sowie nach der Synthese die Generie-
rung eines Bitstreams erfolgen kann [9].
Im Praktikum wird das Spartan-3 Starter Board (Abbildung 4.17) von Digilent mit
einem Xilinx-FPGA in der Version mit 200 000 Gates verwendet. Dieses Board verfgt
ber:
zwlf 18 Bit Multiplizierer, einen 216 KBits Block-RAM und eine interne Clock
mit einer Frequenz von bis zu 500 MHz
On-board 2 MBit Platform Flash (XCF02S)
8 Schiebeschalter, 4 Taster, 9 LEDs und eine 4-stellige Sieben-Segment-Anzeige
Serielle Schnittstelle, VGA und PS/2-Maus- bzw. -Tastatur-Anschluss
3 hochstromige Spannungsregler (3,3 V, 2,5 V und 1,2 V)
1 MByte on-board 10 ns SRAM (256 Kb x 32)
Kann mit einem JTAG3, P4 und MultiPRO Kabeln von Xilinx programmiert wer-
den
Das Board und die entsprechende Peripherie werden Sie whrend der Bearbeitung eines
Tutorials kennlernen. Dieses Tutorial soll den Einstieg in die Arbeit mit der verwendeten
Software (ISE) und dem FPGA erleichtern.
Praktikum am Lehrstuhl fr Mikroelektronik 71
4 Von der Theorie zur Praxis Universitt des Saarlandes
Abbildung 4.17: Das Spartan-3 FPGA von Xilinx (oben) mit entsprechendem Blockdia-
gramm (unten) [2].
72 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.3 Versuch III: VHDL Komponenten
4.3 Versuch III: VHDL Komponenten
Die Bearbeitung der nachfolgenden Aufgaben setzt das Studium des vorangegangenen
Kapitels speziell die kurze Einfhrung in VHDL voraus. Hier ist besonders darauf
zu achten, die angegebenen Quellcodes auch wirklich zu lesen und eventuelle Fragen
aufzuschreiben und Ihrem Betreuer zu stellen.
Der Entwicklungsprozess wird in Bottom-Up-Manier durchgefhrt, d.h. Sie fangen mit
einfachen Grundkomponenten an, aus denen spter das Gesamtprojekt zusammengesetzt
wird.
4.3.1 Aufgabe 1 Verwendete Software
In diesem Abschnitt sollen Sie sich mit der Software ISE von Xilinx vertraut machen, die
fr die Entwicklung verwendet wird. ISE bietet verschiedene Werkzeuge zur Simulation,
Synthese und Implementierung (Place and Route) Ihres VHDL Programmcodes in einem
FPGA. Um Ihnen den Einstieg in die Arbeit mit ISE zu erleichtern, sollen Sie ein Tu-
torial durcharbeiten, das die grundlegende Vorgehensweise und Funktionen der Software
anhand eines einfachen Beispiels erklrt.
Das Tutorial nden Sie auf den Rechnern im Praktikumsraum unter
D:\Praktikum_Mikroelektronik\Tutorials\ISE-Tutorial.
Erstellen Sie fr alle folgenden Projekte Unterordner in dem bereits zuvor von Ihnen
verwendeten Verzeichnis
D:\Praktikum_Mikroelektronik\Studenten\Matr.Nr.
Beachten Sie bitte, dass Sie in Ihrem Pfad und den Dateinamen keine Leerzeichen oder
Umlaute verwenden drfen.
Praktikum am Lehrstuhl fr Mikroelektronik 73
4 Von der Theorie zur Praxis Universitt des Saarlandes
4.3.2 Aufgabe 2 Multiplexer
Entwerfen Sie einen Multiplexer, der als Dekoder arbeitet
5
. Er soll die Nummer der Zeile,
die spter wichtig fr die Displaysteuerung ist, von ihrem binren Wert bersetzen in ein
Wort, das spter das Display ansteuert (z.B. binr "110""01000000").
Als Eingang benutzen Sie den Vektor D mit Breite 6 und als Ausgang den Vektor Q
mit Breite 49 (Anzahl der Spalten des spteren Displays +1). Auch wenn am Eingang 64
Zustnde mglich sind, gengt es hier, nur den ersten 49 davon einen Wert zuzuordnen.
Dateiname: mux.vhd
4.3.3 Aufgabe 3 Register
Um Werte innerhalb des FPGAs zu speichern werden Register (speichernde Elemente)
bentigt. Diese mssen synchron bei steigendem Clock-Takt die anliegenden Daten ber-
nehmen, wenn das entsprechende Load-Signal vorliegt. Das Register soll asynchron zu-
rckgesetzt werden knnen.
1. Entwickeln Sie ein Register, das einen logischen Wert an seinem Eingang D bei
steigender Flanke der System-Clock und anliegendem Load-Signal speichert. Das
Register soll asynchron zurckgesetzt werden knnen.
Dateiname: reg.vhd
Eingnge:
CLOCK
RESET
LOAD
D
Ausgnge:
Q
2. Schreiben Sie eine Testbench, um die Funktion des Registers zu berprfen.
3. Erweitern Sie Ihr Register auf generische Wortbreite.
4. Erweitern Sie Ihre Testbench, um das neue Register ebenfalls zu testen.
5
Streng genommen handelt es sich auch nicht um einen Multiplexer, da ein Multiplexer zustzlich noch
einen Eingang hat, dessen Wert auf den aktuell adressierten Ausgang durchgeschaltet wird. In unserem
Fall liegt dieser Eingang immer auf dem Wert 1 und wird daher gar nicht erst implementiert.
74 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 4.3 Versuch III: VHDL Komponenten
4.3.4 Aufgabe 4 Zhlwerk
1. Entwickeln Sie ein Zhlwerk (Dateiname: counter_dec.vhd) mit folgenden Eigen-
schaften:
Eingnge:
D (mit generischer Wortbreite; Ersatzwert: 8)
RESET
LOAD
CLOCK
DEC
Ausgnge:
Q (mit generischer Wortbreite; Ersatzwert: 8)
ZERO
Das Zhlwerk soll folgendem Verhalten gengen:
Das Zhlwerk muss lediglich dekrementieren (herunterzhlen, subtrahieren
mit 1) knnen.
Bei steigender Flanke von CLOCKwird der Wert amEingang Din den Zhler
geladen, sofern LOAD=1 und DEC=0 sind.
Eine Dekrementierung des Werts im Zhler erfolgt bei steigender Flanke von
CLOCK, wenn die Eingangssignale DEC=1 und LOAD=0 sind.
Der Zhler soll asynchron mit RESET=1 zurckgesetzt werden knnen.
Der Zhler darf nicht tiefer als Null zhlen! Ist er bei Null angekommen, soll
der Ausgang ZERO auf 1 gehen, ansonsten bleibt er 0.
2. Schreiben Sie eine Testbench, um Ihr Zhlwerk zu testen.
Praktikum am Lehrstuhl fr Mikroelektronik 75
5 PWM - Singleline Adressierung
In diesem Kapitel wird unter Zuhilfenahme der vorgestellten Komponenten ein Verhal-
ten beschrieben, das eine pulsweitenmodulierte Zeilenansteuerung eines Displays erlaubt.
Um das Ganze bersichtlicher zu halten, beschrnken wir uns hier auf eine Ausfhrung,
die im verkleinerten Mastab luft. Es wird eine Displaygre von 4 4 angenommen
mit 5 Bit Ausung, der Speicherbedarf sinkt dadurch auf 16 Pixelwerte und die ber-
sichtlichkeit wird erhht. Fr ein greres Display mssen nur die Anzahl der Zhlwerke
fr die Pixel und die Breiten des Address- sowie des Zeilenzhlwerks verndert werden.
Im folgenden Kapitel wird zunchst die Single Line Addressierung (SLA) eines OLED-
Displays allgemein beschrieben. Anschlieend wird dann auf die Realisierung in VHDL
eingegangen.
5.1 Single Line Adressierung (SLA)
Wie Sie bereits in Kapitel 3.5 gesehen haben, kann mithilfe eines pulsweitenmodulier-
ten Signals die Helligkeit eines OLED-Pixels gesteuert werden. ber das Verhltnis von
High- zu Low-Phase (Duty-Cycle) kann hierbei die Helligkeit bei konstant anliegendem
Strom I
0
reguliert werden. Dieses Prinzip wird bei der Single-Line-Addressierung (SLA)
genutzt, um Zeile fr Zeile die Helligkeit jedes einzelnen OLED-Pixels zu steuern. Die
einzelnen Spalten knnen dabei parallel angesteuert werden. Im Folgenden wird ein Bild
(bzw. ein Display) wieder durch eine Matrix aus n Zeilen und m Spalten beschrieben. Die
Eintrge der Matrix entsprechen den darzustellenden Pixelwerten des Grauwertbildes. Es
wird nun gezeigt, wie bei vorgegebener Framerate des Displays aus der Zeilen- und Spal-
tenzahl und der Farbtiefe das so genannte t
lsb
, also die Zeit, in der die Helligkeit eines
Displaypixels um ein Inkrement (Lux) steigt, berechnet wird
1
.
1
LSB, engl. Least Signicant Bit
Praktikum am Lehrstuhl fr Mikroelektronik 77
5 PWM - Singleline Adressierung Universitt des Saarlandes
5.1.1 Beispiel zur Berechnung des t
lsb
Fr ein Display mit einer Ausung von 32 24 (32 Spalten, 24 Zeilen), einer Framerate
von 100 Hz und einer Farbtiefe von 8 Bit sieht die Vorgehensweise so aus:
Bei einer Framerate von 100 Hz bleiben
1
100
s = 10 ms pro Bild. Fr eine Zeile des Bil-
des (n = 24) bleibt dann nur noch eine Zeit von
10
24
ms 416, 67 s. Innerhalb dieser
Zeitspanne muss es mglich sein, ein Pixel mit einer maximalen Helligkeit anzusteuern.
Da es 256 Grauwerte gibt, wird die Zeilenadressierzeit nochmals durch 256 geteilt, und
es bleiben
10
24

1
256
ms 1,63 s als t
lsb
. Der Oszillator auf dem FPGA-Board hat eine
Taktfrequenz von 50 MHz, was einer Periodendauer von 20 ns entspricht. Die Anzahl
der Takte, die pro Inkrement abzuwarten sind, betrgt nach einfacher Rechnung 81 Takte.
Die Anzahl der Spalten spielt hier in sofern keine Rolle, dass alle Pixel einer Zeile paral-
lel angesteuert werden knnen und somit die Zeit fr eine Zeile nicht von der Anzahl der
Spalten abhngt. Das bedeutet, dass zum Erreichen einer Helligkeit von h in einem Dis-
play-Pixel, h 81 Takte notwendig sind. Wir vernachlssigen hier erst einmal die Effekte,
die durch die Parallelkapazitten auftreten. Diese knnten durch eine Gammakorrektur
ausgeglichen werden.
Das folgende Beispiel demonstriert nun eine SLA Ansteuerung eines 4 4 Displays.
5.1.2 Eine Beispielansteuerung
Zu Grunde liegt hier ein 4 4 Display mit 2 Bit Ausung (Grauwerte 0 bis 3). Anhand
dieses kleinen Displays lsst sich das Prinzip einer pulsweitenmodulierten Ansteuerung
bersichtlich veranschaulichen. Der Einfachheit halber sagen wir hier, dass fr den Auf-
bau eines einzigen Bildes insgesamt 4 s zur Verfgung stehen. Fr t
lsb
ergibt sich dann
1
3
s,
der Betriebsstrom bleibt konstant bei I
0
. Die Zeit t
lsb
steht somit auch fr ein einzelnes
Inkrement in der Helligkeit eines Pixels. Jede Zeile wird gleichlang mit 3 t
lsb
= 1 s
angesteuert. Die Zeilenadressierzeit bleibt bei SLA konstant. Die gewnschte Helligkeit
wird erreicht, indem die Ansteuerzeit ber ein Vielfaches von t
lsb
eingestellt wird. Das
heit, dass ein Pixel mit maximaler Helligkeit 3 t
lsb
lang angefahren wird, also eine volle
Zeilenadressierzeit. Das Beispiel unten soll diesen Zusammenhang nochmal vertiefen.
Um tatschlich ein Display pulsweitenmoduliert anzusteuern, wird ein Steuersignal fr
die Spalten bentigt. Es ist rein digital (0=low, 1=high) und schaltet nur einzelne Spalten
an oder aus, z. B. schaltet ein Signal der Gestalt 1010 das erste und das dritte Pixel an.
Die gewnschte Zeile wird dabei auf Ground gelegt.
78 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.1 Single Line Adressierung (SLA)
Abbildung 5.1 zeigt einen beispielhaft darzustellenden Bildinhalt, fr den die Steuersi-
gnale im Folgenden erzeugt werden sollen.
D =
_
_
_
_
0 3 3 0
0 3 2 1
0 0 0 1
0 0 0 0
_
_
_
_
(5.1)
Abbildung 5.1: SLA Beispielmatrix D
Erste Zeile der Matrix (0330):
Zeit (Anzahl t
lsb
) Steuersignal Erreichte Helligkeit
1 t
lsb
(0110) (0110)
2 t
lsb
(0110) (0220)
3 t
lsb
(0110) (0330)
(0330)
Zweite Zeile (0321):
Zeit (Anzahl t
lsb
) Steuersignal Erreichte Helligkeit
1 t
lsb
(0111) (0111)
2 t
lsb
(0110) (0221)
3 t
lsb
(0100) (0321)
(0321)
Dritte Zeile (0001):
Zeit (Anzahl t
lsb
) Steuersignal Erreichte Helligkeit
1 t
lsb
(0001) (0001)
2 t
lsb
(0000) (0000)
3 t
lsb
(0000) (0000)
(0001)
Praktikum am Lehrstuhl fr Mikroelektronik 79
5 PWM - Singleline Adressierung Universitt des Saarlandes
Vierte Zeile (0000):
Zeit (Anzahl t
lsb
) Steuersignal Erreichte Helligkeit
1 t
lsb
(0000) (0000)
2 t
lsb
(0000) (0000)
3 t
lsb
(0000) (0000)
(0000)
Zusammengesetzt bilden die einzelnen Ergebnisse wieder die gewnschte Helligkeits-
matrix D.
5.2 VHDL-Implementierung
Im Folgenden werden nun alle Elemente aufgefhrt, die ntig sind, um eine wie oben
beschriebene PWM-Adressierung zu realisieren:
Multiplexer (Zeilenadressierung)
Zhlwerke (t
lsb
, Pixel, Adresse des ROMs)
Register (aktueller Zustand des Zustandsautomaten)
Prozesse (Zustandsautomat, Ablufe)
Konstanten (Displaybreite und -hhe, Farbtiefe, Takte des t
lsb
)
Diese Elemente gengen bereits, um eine Single-Line-Adressierung fr ein Display zu
realisieren.
5.2.1 Zustandsautomat
Um den Programmablauf fr grere Projekte bersichtlich zu halten, ist es blich, den
Ablauf in Form einer FSM (Finite State Machine), also einem endlichen Automaten, zu
modellieren.
Prinzipiell kann ein Automat in VHDL durch einen einzelnen oder durch zwei getrenn-
te Prozesse realisiert werden. Wir werden hier beide Typen vorstellen. Es bleibt Ihnen
berlassen, welchen Typen Sie in Ihrem Programm realisieren.
80 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
Fr die Darstellung des aktuellen Zustandes werden aussagekrftige Namen verwendet.
Dazu wird ein Aufzhlungstyp bentigt, der als Werte diese Namen enthlt. Diese Namen
werden dann bei der Synthese in binre Werte umgewandelt. Diesen Vorgang nennt man
Zustandskodierung oder state encoding. Auf die Realisierung werden wir spter eingehen.
Es gibt in der Theorie verschiedenste Arten von Automaten, die sich im Wesentlichen
durch die Abhngigkeit des Ausgangswertes vom aktuellen Zustand bzw. den Eingabepa-
rametern unterscheiden. Darauf wird spter genauer eingegangen werden [7].
Zustandskodierung
Es gibt verschiedene Verfahren, die Zustnde eines Automaten zu kodieren, um sie kom-
pilier- und synthetisierbar zu machen. Das Problem bei einer binren Kodierung ist, dass
die Anzahl der Zustnde immer eine Potenz von 2, also 2
n
, sein muss, um zu verhindern,
dass undenierte Zustnde auftreten. Man kann dieses Problem z.B. dadurch lsen, dass
man alle nicht bentigten Zustnde durch sogenannte Dummy-Zustnde abfngt. Ein
solches Vorgehen ist in Abb. 5.2 dargestellt.
1 t ype STATE_TYPE i s ( START , . . . , STOP,DUMMY1,DUMMY2, . . . , DUMMYx) ;
2 s i g na l STATE: STATE_TYPE;
3 . . .
4 cas e STATE i s
5 when START => . . .
6 . . . Pr ogr ammabl auf
7 when STOP => . . .
8 when DUMMY1 => . . .
9 . . . DummyZus t aende
10 when DUMMYx => . . .
11
12 end cas e ;
Abbildung 5.2: Quellcode: Zustandskodierung mit Aufzhlungstyp und Dummy-Zu-
stnden
Es werden also x = 2
n
(genutzte Zustnde) als Dummy-Zustnde genutzt
2
. Dies be-
deutet einen zustzlichen Aufwand an Hardware (Flip-Flops) ohne direkte Funktionalitt.
Eine bessere Variante bietet das Verfahren der Handkodierung (Abb. 5.3). Dabei wird die
Kodierung vom Entwickler selbst festgelegt. Dies bedeutet zwar mehr Schreibaufwand,
bietet aber die efzienteste und sicherste Methode der Zustandskodierung.
2
Das Zeichen bezeichnet eine Anzahl.
Praktikum am Lehrstuhl fr Mikroelektronik 81
5 PWM - Singleline Adressierung Universitt des Saarlandes
1 subt ype STATE_TYPE i s s t d _ u l o g i c _ v e c t o r ( n downto 0 ) ;
2 s i g na l STATE: STATE_TYPE;
3
4 cons t ant START : STATE_TYPE: = " 0 0 . . . 0 " ;
5 . . .
6 cons t ant STOP : STATE_TYPE: = " 1 1 . . . 1 " ;
7
8
9 cas e STATE i s
10 when START => . . .
11 . . . Pr ogr ammabl auf
12 when STOP => . . .
13 when ot he rs => . . . abf angen u n g e wo l l t e r Zus t aende
14
15 end cas e ;
Abbildung 5.3: Quellcode: Handkodierung mit when others Statement zum Abfangen
ungenutzter Zustnde
Statt eines Aufzhlungstyps wie in Abb. 5.2 wird hierbei ein Vektortyp, beispielswei-
se basierend auf dem std_ulogic_vector, verwendet. Die Breite des Vektors richtet sich
nach der Anzahl der zu kodierenden Zustnde. Ein Zustandssignal entspricht nun einem
Vektortyp, weshalb man auch von Zustandsvektor spricht. Das when-others-Statement
fngt alle nicht genutzten Zustandsvektoren ab und berfhrt sie in einen denierten Zu-
stand [7].
82 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
Ein- und Zwei-Prozess Zustandsautomaten
Es wird nun gezeigt, wie ein Zustandsautomat in VHDL generell aufgebaut ist. Im We-
sentlichen besteht der Automat aus einem Prozess, der eine case-Anweisung beinhaltet,
die den aktuellen Zustand abfrgt und die entsprechenden Anweisungen ausfhrt. Es muss
also eine Variable STATE geben, die den aktuellen Zustand speichert. In der bergabe
des Folgezustands an die Variable STATE unterscheiden sich Ein- und Zwei-Prozess-
Zustandsautomaten darin, dass dies entweder im aktuellen Prozess selbst oder in einem
zweiten, gesonderten Prozess geschieht. Hierzu wird der Folgezustand zunchst an eine
weitere Variable NEXT_STATE bergeben, aus der dann der nchste Zustand ermittelt
wird. Die beiden Quellcodeauszge in Abb. 5.4 und Abb. 5.5 zeigen beide Varianten.
Beide Automaten bilden das gleiche Verhalten ab. Sie verfgen ber ein asynchrones
RESET-Signal, verhalten sich ansonsten aber synchron [7].
1 FSM_next _s t at e : proces s (CLK, RESET) e r s t e r Pr oz e s s f u e r
2 begi n di e Zus t a nds ue be r ga be
3 i f RESET= 1 t hen
4 STATE<=START;
5 e l s i f CLK e ve nt and CLK= 1 t hen
6 STATE<=NEXT_STATE;
7 end i f ;
8 end proces s FSM_next _s t at e ;
9
10 FSM_comb : proces s ( STATE, In1 , IN2 , . . . ) z we i t e r , g e t r e n n t e r Pr oz e s s
11 begi n f u e r di e Kombi nat or i k
12 cas e STATE i s
13
14 when START => . . . Anwei sungen
15 NEXT_STATE<=STATE_1 ;
16 when STATE_1 => . . . Anwei sungen
17 NEXT_STATE<=STATE_2 ;
18 . . .
19
20 when STOP => . . . Anwei sungen
21 NEXT_STATE<=START;
22
23 when ot he rs => NEXT_STATE<=START;
24
25 end cas e ;
26 end proces s FSM_comb ;
Abbildung 5.4: Quellcode: Zwei-Prozess-Variante eines Zustandsautomaten; Trennung
von Kombinatorik und Registern
Praktikum am Lehrstuhl fr Mikroelektronik 83
5 PWM - Singleline Adressierung Universitt des Saarlandes
1 FSM: proces s (CLK, RESET)
2 begi n
3 i f RESET= 1 t hen
4 STATE<=START;
5 e l s i f CLK e ve nt and CLK= 1 t hen
6 cas e STATE i s
7
8 when START => . . . Anwei sungen
9 STATE<=STATE_1 ;
10 when STATE_1 => . . . Anwei sungen
11 STATE<=STATE_2 ;
12 . . .
13
14 when STOP => . . . Anwei sungen
15 STATE<=START;
16
17 when ot he rs => STATE<=START;
18
19 end cas e ;
20 end i f ;
21 end proces s FSM;
Abbildung 5.5: Quellcode: Ein-Prozess-Variante eines Zustandsautomaten
Vor- und Nachteile der beiden Varianten
Struktur und Lesbarkeit
Die Zwei-Prozess-Variante spiegelt die tatschliche Struktur, also Trennung
von Kombinatorik und speichernden Elementen, besser wieder.
Dagegen ist die Darstellung mit einem Prozess meist ausreichend, da man sich
im Allgemeinen nur fr einen tatschlichen Zustandswechsel interessiert.
Auerdem gleichen grasche Darstellungen mehr einer Ein-Prozess-Variante,
d.h. sie sind nher an der graschen Spezikation.
Simulation
Zwei-Prozess-Varianten erleichtern die Fehlersuche, da auf das Zwischensi-
gnal NEXT_STATE zugegriffen werden kann.
Fr die Simulation ist also die Darstellung mit zwei Prozessen zu bevorzugen.
84 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
Synthese
Eine feste Aussage ist hier aufgrund der Unterschiedlichkeit der Synthese-
werkzeuge nicht mglich.
Allerdings sind Syntheseergebnisse fr Zwei-Prozess-Varianten oft besser, da
sie nher an der Hardwarestruktur sind.
Beispiel: Mealy-Automat
Wir werden hier einen Mealy-Automaten vorstellen. Bei diesem Typ ist die Ausgabe kei-
ne reine Funktion des aktuellen Zustandes, sondern zustzlich noch vom aktuellen Ein-
gangswert abhngig. Zustzlich zur Zustandsverwaltung (Ein- oder Zwei-Prozess-Vari-
ante) kommt nun noch ein weiterer Prozess fr die Ausgabe hinzu, so dass entweder zwei
oder drei Prozesse insgesamt bentigt werden. Dieser Prozess Mealy_output ist dabei,
wie der fr die Kombinatorik Zustndige, vom aktuellen Zustand und von den Eingngen
abhngig. Den Quellcode einer Modellierung eines Mealy-Automaten mit drei Prozessen
sehen Sie in Abb. 5.6.
Anmerkung: Es ist natrlich mglich, einen Automaten in nur einem Prozess zu mo-
dellieren, der dann von allen Signalen gestartet wird. Der Vorteil der vorgestellten Struktur
ist, dass sie bersichtlich und in jedem Fall synthetisierbar ist, was bei anderen Strukturen
nicht unbedingt garantiert ist.
In jedem Fall sollte die Zustandskodierung wie in Abb. 5.3 realisiert werden. Wie vie-
le Prozesse Sie letztendlich fr Ihren Zustandsautomaten verwenden, bleibt aber Ihnen
berlassen.
SLA-Zustandsautomat
Nachdemdie Grundlagen der Modellierung von Zustandsautomaten in VHDL gelegt wur-
den, wird nun speziell auf den fr eine SLA eines OLED-Displays eingegangen. Die Ver-
wendung eines Zustandsautomaten (FSM) ermglicht auch eine sptere Erweiterung um
neue Zustnde (z.B Pre- und Discharge-Phasen, Gammakorrektur), die zu Beginn noch
auer Acht gelassen werden. Die Kombinatorik ist wie in Abb. 5.7 aufgebaut.
Praktikum am Lehrstuhl fr Mikroelektronik 85
5 PWM - Singleline Adressierung Universitt des Saarlandes
1 a r c hi t e c t ur e RTL of Mealy i s
2 . . .
3 begi n
4
5 Me a l y_ne xt _s t a t e : proces s (CLK, RESET) e r s t e r Pr oz e s s f u e r
6 begi n di e Zus t a nds ue be r ga be
7 i f RESET= 1 t hen
8 STATE=START;
9 e l s i f CLK e ve nt and CLK= 1 t hen
10 STATE<=NEXT_STATE;
11 end i f ;
12 end proces s Me a l y_ne xt _s t a t e ;
13
14 Mealy_comb : proces s ( STATE, In1 , IN2 , . . . ) z we i t e r , g e t r e n n t e r Pr oz e s s
15 begi n f u e r di e Kombi nat or i k
16 cas e STATE i s
17
18 when START => . . . Anwei sungen
19 NEXT_STATE<=STATE_1 ;
20 when STATE_1 => . . . Anwei sungen
21 NEXT_STATE<=STATE_2 ;
22 . . .
23
24 when STOP => . . . Anwei sungen
25 NEXT_STATE<=START;
26
27 when ot he rs => NEXT_STATE<=START;
28
29 end cas e ;
30 end proces s Mealy_comb ;
31
32 Meal y_out put : proces s ( STATE, In1 , IN2 , . . . ) d r i t t e r , g e t r e n n t e r
33 begi n Pr oz e s s f u e r di e Aus ga ngs s i gna l e
34 cas e STATE i s
35
36 when START => . . . Aus ga ngs s i gna l e
37
38 when STATE_1 => . . . Aus ga ngs s i gna l e
39
40 . . .
41
42 when STOP => . . . Aus ga ngs s i gna l e
43
44 when ot he rs => NULL;
45
46 end cas e ;
47 end proces s Meal y_out put ;
48
49 end RTL;
Abbildung 5.6: Quellcode: Kompletter Mealy-Automat mit Zwei-Prozess-Zustandsver-
waltung und gesondertem Prozess fr den Ausgang
86 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
pwm_load_zeile_addr (000)
Zeilen und Adressregister laden
pwm_load_preg (001)
Pixelregister laden
pwm_read_ram (010)
Speicherzugriff
Pixelregister = 0 / else
pwm_addr_preg_dec (011)
Adress- + Pixelregister verringern
pwm_load_clock (100)
Taktzhler mit max. Wert laden
pwm_cnt (101)
Taktzhler herabsetzen
Taktzhler 0 / else
pwm_dec_gsc (110)
Grauwerte herabsetzen
Alle Grauwerte 0 / else
pwm_zeile_dec (111)
Zeile um eins verringern
Zeile = 0 / else
Abbildung 5.7: Zustandsautomat SLA
Praktikum am Lehrstuhl fr Mikroelektronik 87
5 PWM - Singleline Adressierung Universitt des Saarlandes
Hier nun der Zustandsautomat fr SLA aus Abbildung 5.7 in Worten:
000: Am Bildanfang werden das Zeilenzhlwerk auf die Anzahl Zeilen und das
Adresszhlwerk auf die hchste Speicheradresse (Zeilen mal Spalten) gesetzt
001: Das Zhlwerk, welches das aktuell zu schreibende Pixel mitzhlt, wird auf die
Anzahl Spalten gesetzt. Dies kann nicht schon im ersten Zustand mit abgearbeitet
werden, da dies zu jedem Zeilenwechsel wiederholt werden muss.
010: Das Laden der Bilddaten erfolgt ohne weiteres Zutun parallel zur Inkrementie-
rung der beiden Zhler (011). ber den Wert im Adresszhler erfolgt der Spei-
cherzugriff und der entsprechende Grauwert wird auf ein Signal gelegt. Das Signal
ist wiederum mit allen Instanzen der Grauwertzhler am Eingang verbunden. Je-
doch ist immer nur einer der Zhler so geschaltet, dass er den Wert auch laden kann.
Ein Multiplexer generiert entsprechend des Wertes im Pixelzhler ein Wort, das mit
den Load-Eingngen der Zhler verbunden ist. Somit wird sichergestellt, dass der
jeweils richtige Wert auch in sein dazugehriges Zhlwerk gespeichert wird.
011: In diesem Zustand werden der Zhler mit der aktuellen Speicheradresse und
das Pixelzhlwerk bei jedem Takt um eins dekrementiert. Liegt im Pixelzhlwerk
der Wert Null, so ist man am Zeilenende angelangt und das Laden der Grauwert-
zhler abgeschlossen.
100: Nun folgt die eigentliche Bearbeitung der aktiven Zeile. Der Taktzhler wird
mit t
lsb
geladen.
101: Mit jedem System-Takt wird der Taktzhler dekrementiert, bis er auf Null
gefallen ist.
110: Ist der Taktzhler auf Null gefallen, ist auch eine Stufe in der Leuchtintensitt
der Pixel erreicht und alle Grauwertzhler werden um eins dekrementiert. Danach
wird der Taktzhler erneut geladen und der Zyklus wiederholt sich so oft, bis alle
Grauwertzhler auf Null gefallen sind. Dass sie auf Null gefallen sind, zeigen die
jeweiligen Ausgnge der Zhlwerke (ZERO) an. Alle diese Ausgnge in einemWort
vereint ergeben die pulsweitenmodulierte Spaltenansteuerung.
Wenn alle Grauwertzhler auf Null sind, ist die Ansteuerung dieser Zeile beendet.
111: Der Zeilenzhler wird um eins verringert. Ist sein Wert gleich Null, wurde ein
komplettes Bild dargestellt und der Algorithmus fngt wieder im ersten Zustand an
(000), ansonsten wechselt er in Zustand 001.
88 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
5.2.2 Instanzen
Abbildung 5.8 zeigt das Blockschaltbild einer SLA samt aller bentigten Komponenten.
Im Block Prozesse benden sich die Realisierung der FSM, das Mapping aller ntigen
Signale sowie die Ein- und Ausgnge. Die Zhler P
1
bis P
m
sind Grauwertzhler, welche
die entsprechenden Werte der jeweiligen Pixel speichern. Die Ausgnge dieser Zhler
Z(ero)
1
bis Z
m
entsprechen den spteren Steuersignalen fr die Spaltentreiber, allerdings
invertiert. Ein weiteres Zhlwerk t
lsb
zhlt die Takte, bis die Zeit t
lsb
vergangen ist. Dann
wird der DEC-Eingang der Grauwertzhler gesetzt und diese um eins dekrementiert.
SLA
ROM
P
n
Zustands-
automat
P
1
P
n-1
P
2
MUX
CLK
CLK
data_out_rom
load_P1
load_P2
load_Pm
load_Pm-1
Zm
Zm-1
Z2
Z1
.
.
.
.
.
DEC
Reset
DEC
Reset
DEC
Reset
DEC
Reset
addr_pixel
g
l
o
b
a
l
_
d
i
s
c
h
a
r
g
e
. . .
n
o
t
(
c
o
l
_
c
t
r
l
(
1
,
.
.
.
,
m
)
)
r
o
w
_
c
t
r
l
(
1
)
r
o
w
_
c
t
r
l
(
2
)
r
o
w
_
c
t
r
l
(
3
)
r
o
w
_
c
t
r
l
(
n
)
.
.
.
t
lsb
DEC Reset
din
din
din
din
din
(const. number of cycles)
load_tlsb
Z
tlsb
m bit
col_ctrl(1)
col_ctrl(2)
col_ctrl(3)
col_ctrl(m)
.
.
.
Reset addr
pixel
Reset
DEC
load_addr_pixel
max_addr_const
addr_rom
addr
rom
Reset
max_rom_const
DEC
load_addr_rom
MUX
row_ctrl
Abbildung 5.8: Blockschaltbild einer SLA fr ein OLED-Display. Dieses Blockschalt-
bild entspricht einer strukturellen Beschreibung in VHDL.
Praktikum am Lehrstuhl fr Mikroelektronik 89
5 PWM - Singleline Adressierung Universitt des Saarlandes
Bei den Port-Maps der Instanzen ist nun der Zusammenhang zu nden, der das Laden
der einzelnen Grauwertzhler aus einem Speicher (ROM) ermglicht (Abbildung 5.9).
1 . . .
2 c o u n t e r _ p i x e l 2 6 : c o u n t e r
3 ge ne r i c map( wi dt h_c ount e r => width_pwm)
4 port map (
5 CLOCK => cl ock ,
6 RESET => r e s e t ,
7 DEC => dec_gsc ,
8 LOAD => l o a d _ s i g ( 2 5 ) , u n t e r s c h i e d l i c h e Loads
9 D => qout , gemei nsame Da t e n l e i t u n g qout
10 Q => q_26 ,
11 ZERO => q_pwm_sig ( 2 5 ) ) ;
12
13 c o u n t e r _ p i x e l 2 7 : c o u n t e r
14 ge ne r i c map( wi dt h_c ount e r => width_pwm)
15 port map (
16 CLOCK => cl ock ,
17 RESET => r e s e t ,
18 DEC => dec_gsc ,
19 LOAD => l o a d _ s i g ( 2 6 ) , u n t e r s c h i e d l i c h e Loads
20 D => qout , gemei nsame Da t e n l e i t u n g qout
21 Q => q_27 ,
22 ZERO => q_pwm_sig ( 2 6 ) ) ;
23 . . .
Abbildung 5.9: Quellcode-Auszug: Instanzen der Zhlwerke
Der Ausgang eines Multiplexers (MUX) generiert anhand des Werts von addr_pixel ein
Wort, dessen einzelne Stellen mit den Load-Eingngen (load_P1 bis load_Pm) der Grau-
wertzhler verbunden sind. Mit jedem abgearbeiteten Pixel wird der Ausgang des Multi-
plexers um ein Bit geshiftet, so dass das nchste Zhlwerk eingelesen wird. (Abb. 5.10).
1 cas e d i s
2 when " 00000 " => q <= " 00000000000000000000000000000001 " ;
3 when " 00001 " => q <= " 00000000000000000000000000000010 " ;
4 when " 00010 " => q <= " 00000000000000000000000000000100 " ;
5 when " 00011 " => q <= " 00000000000000000000000000001000 " ;
6 when " 00100 " => q <= " 00000000000000000000000000010000 " ;
7 . . .
8 when " 11111 " => q <= " 10000000000000000000000000000000 " ;
9 when ot he rs => nul l ;
10 end cas e ;
Abbildung 5.10: Quellcode-Auszug: Multiplexer
90 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.2 VHDL-Implementierung
Fr jede einzelne Instanz ist nur eine bestimmte Stelle des Ausgangswortes des Multi-
plexers interessant, weswegen auch nur auf die betreffende Stelle zugegriffen wird.
hnlich geht man vor, um die Spaltenadressierung zu realisieren. Die Zero-Ausgnge der
Grauwertzhler bilden (invertiert) zusammengesetzt eben dieses Ausgangswort fr die
Spaltenadressierung.
Wie man anhand des Quellcodes sieht, gibt es auch nur eine Datenleitung, die mit
allen Instanzen verbunden ist und welche die Grauwerte aus dem Speicher transpor-
tiert. Da aber immer nur ein Zhlwerk eingelesen werden kann (Load), werden die Wer-
te ins Register des entsprechenden Zhlers geladen. Die Berechnung der Zeilenadres-
sierungssignale geschieht wie die Berechnung aller Ausgangssignale im Block Prozess
(Mealy_output).
Praktikum am Lehrstuhl fr Mikroelektronik 91
5 PWM - Singleline Adressierung Universitt des Saarlandes
5.3 Versuch IV: Single Line Addressierung
Die bereits in Versuch III implementierten Komponenten bieten die Mglichkeit, inner-
halb einer Beschreibung Werte abzulegen und diese zu dekrementieren. Wenn man im
Hinterkopf hat, dass das anzusteuernde Display spter mit 48 32 Pixeln bestckt ist und
damit 1 536 einzelne Grauwerte aufweist, ist ein Register unpraktisch. Xilinx bietet hier
die Mglichkeit, mit einem Core-Generator eine weitere Komponente zu generieren, die
die Aufgabe eines Speicher-Blocks bernimmt. Zum Testen wird aber vorerst nur eine
Dimension von 4 4 angenommen, da dies bersichtlicher bleibt.
Mit den Registern, Zhlwerken und dem Speicher-Block knnen Sie nun eine Beschrei-
bung zusammensetzen, die aus den Grauwerten des Bildes zeilenweise ein pulsweitenmo-
duliertes Signal ausgibt. Dabei werden automatisch die Zeilenwechsel und die dazugeh-
rigen Speicherzugriffe mit realisiert.
5.3.1 Aufgabe 1 Vorbereitende Aufgaben
Bearbeiten Sie diese Aufgaben schriftlich! Die Antworten sind als Ausarbeitung zu
diesem Versuch zu formulieren und dem Betreuer auszuhndigen!
Gehen Sie folgende Punkte durch und bearbeiten Sie diese gewissenhaft. Je grndlicher
Sie diese Punkte bearbeiten, desto leichter fllt Ihnen spter die Implementierung der
gesamten PWM-Single-Line-Adressierung!
1. Welche Komponenten (Zhler, Multiplexer, . . . ) bentigen Sie fr die Realisierung
einer SLA-Ansteuerung?
2. Welche Signale brauchen Sie dazu?
3. Wie viele und welche Prozesse (Processes) verwenden Sie fr die Realisierung
des Zustandsautomaten?
4. Wie mssen die einzelnen Blcke miteinander verbunden sein? Geben Sie die wich-
tigsten Verbindungen an.
5. Berechnen Sie die Zeit t
lsb
fr ein 44 Display bei einer Taktfrequenz von 50 MHz,
einer Framerate von 100 Hz und einer Bittiefe von 5 Bit.
92 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.3 Versuch IV: Single Line Addressierung
5.3.2 Aufgabe 2 Speicher-Block
Legen Sie ein neues Projekt mit dem Namem pwm an. Dateiname: pwm.vhd.
Verwenden Sie folgende Einstellungen fr das FPGA:
Family Spartan3
Device XC3S200
Package FT256
Speed -5
Speicher-Generierung
Um den Speicher zu generieren, sind folgende Schritte ntig:
1. Erzeugen Sie bei den Sources die Datei pwm.vhd an.
2. In der Menleiste auf Project klicken.
3. New Source
4. (Coregen & Architecture Wizard), File Name: rom, NEXT
5. Whlen Sie Memories & Storage Elements => RAMs & ROMs => Single Port
Block Memory, NEXT, FINISH
6. Nun wird der Speicher nher speziziert:
a) Es wird nur ein ROM (Read Only Memory) bentigt
b) Width = 5
c) Depth = 16
d) Mit NEXT auf Seite 4 wechseln.
e) Load Init File markieren und die Datei
D:\Praktikum_Mikroelektronik\Bilder OLED\LEDs.coe
whlen.
f) GENERATE.
Praktikum am Lehrstuhl fr Mikroelektronik 93
5 PWM - Singleline Adressierung Universitt des Saarlandes
ISE hat nun den Speicher angelegt und mit dem ausgewhlten Testbild geladen. Wech-
seln Sie von Sources zu den Libraries und sehen Sie sich in ihrem work-Verzeichnis den
Code des ROMs an. Wichtig sind hier nur die Ports, damit Sie wissen, wie Sie auf den
Speicher zugreifen.
Speicher-Instanziierung
1. Navigieren Sie in Ihrem Quellcode von pwm.vhd unter die zuvor instanziierte Kom-
ponente counter_dec.vhd.
2. Menleiste: EDIT, Insert File
3. Dateityp umstellen auf VHDL und rom.vho ffnen
4. ISE fgt nun an diese Stelle den Code fr die Komponenten-Deklaration und die
Instanziierung ein. Verschieben Sie die Instanzierung nun noch an die richtige Stelle
und geben Sie ihr einen passenden Namen (z. B. pwm_rom).
Aufgaben
1. Fgen Sie in das Porojekt pwm eine Instanz des von Ihnen in Versuch III, Aufga-
be 4 erzeugten Zhlwerks ein.
2. Erstellen Sie die ntigen Signale, um den Speicher mit dem Zhlwerk zu verbinden.
3. Schreiben Sie eine Testbench. Es gengt vorerst, wenn Sie nur das erste Element
des Speichers in ein Zhlwerk laden und das herunterzhlen lassen.
94 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.3 Versuch IV: Single Line Addressierung
5.3.3 Aufgabe 3 PWM-Zeile
Erweitern Sie Ihr Programm so, dass Sie eine Zeile eines 4 4 Displays (also 4 Pixel)
gleichzeitig ansteuern knnen. Das bedeutet, dass 4 Werte nacheinander aus dem ROM in
4 verschiedene Zhlwerke gelesen werden. Diese werden gleichzeitig heruntergezhlt, bis
alle auf 0 sind. Anschlieend werden alle wieder mit den Werten aus demROMinitiiert.
Implementieren Sie dazu den Zustandsautomaten mit den dazu ntigen Zustnden (Die
Zeilenadressierung entfllt zunchst).
Berechnen Sie ein neues t
lsb
fr ein 4 1 Display ebenfalls bei einer Taktfrequenz von
50 MHz und einer Framerate von 100 Hz. Prfen Sie mit Hilfe einer kurzen Simulation,
ob sich Ihr Programm wie gewnscht verhlt.
Legen Sie die Ausgangssignale der Zhlwerke auf LEDs des kleinen FPGA-Boards.
Dazu whlen Sie unter Project den Eintrag New Source und legen eine Datei vom Typ Im-
plementation Constraints File mit einem beliebigen Namen beispielsweise pwm an.
Diese Datei erhlt automatisch die Endung .ucf. Abbildung 5.11 zeigt den Inhalt dieser
Datei. Die Bezeichnungen der Pins, die in der Abbildung mit xx ersetzt sind, knnen
Sie auf dem Board bei den entsprechenden LEDs bzw. Tastern in Klammern ablesen.
1 NET "CLOCK" LOC = " T9" ;
2 NET "RESET" LOC = " xx " ;
3 NET " c o l _ c t r l <0>" LOC = " xx " ;
4 NET " c o l _ c t r l <1>" LOC = " xx " ;
5 NET " c o l _ c t r l <2>" LOC = " xx " ;
6 NET " c o l _ c t r l <3>" LOC = " xx " ;
Abbildung 5.11: Auszug aus Pinbelegung des FPGA-Evaluation-Boards.
Spielen Sie anschlieend Ihr Programm auf das FPGA. Verwenden Sie dazu die Anlei-
tung im folgenden Abschnitt 5.4. Gerne knnen Sie auch Ihren Betreuer um Rat fragen.
Falls Sie fr die Simulation den Wert von t
lsb
herabgesetzt haben, denken Sie daran,
ihn vor dem Aufspielen auf das Board wieder zurckzusetzen.
Praktikum am Lehrstuhl fr Mikroelektronik 95
5 PWM - Singleline Adressierung Universitt des Saarlandes
5.4 Programmieren des kleinen Boards mit den
LEDs
1. Starten Sie die Software iMPACT.
2. Whlen Sie in dem daraufhin erscheinenden Fenster den Punkt create a new pro-
ject (Abb. 5.12).
Abbildung 5.12: Anlegen eines neuen Projektes
Sollte dieses Fenster nicht erscheinen, knnen Sie es ffnen ber den Menpunkt
File New. Eine eventuelle Nachfrage, ob das vorhandene Projekt gespeichert
werden soll, knnen Sie verneinen.
3. Whlen Sie in dem darauffolgenden Dialog den ersten Punkt Congure devi-
ces using Boundary-Scan aus und besttigen Sie mit der Schaltche Finish
(Abb.5.13).
Abbildung 5.13: Auswahl des Punktes Congure devices using Boundary-Scan
96 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 5.4 Programmieren des kleinen Boards mit den LEDs
4. Whlen Sie nun das von Ihnen synthetisierte Programm aus. Wenn Sie sich an die
Notation im Skript gehalten haben, sollte dieses den Namen pwm.bit haben.
5. Falls nun eine Fehlermeldung/Warnung erscheint, knnen Sie diese ignorieren.
6. In dem folgenden Dateiauswahl-Dialog whlen Sie bitte keine Datei aus, sondern
klicken stattdessen auf Cancel.
7. Klicken Sie mit der rechten Maustaste im Schaubild auf den Block mit dem Namen
xc3s200 und whlen Sie in dem daraufhin erscheinenden Kontextmen den Punkt
Program....
8. Als Einstellungen verwenden Sie jene aus Abbildung 5.14.
Abbildung 5.14: Programmiereinstellungen fr das kleine Board.
Mit einem Klick auf OK startet der Programmiervorgang. Sollte danach die Mel-
dung Program Failed erscheinen, versuchen Sie es bitte erneut (ab Punkt 7 dieser
Anleitung).
9. Wenn Sie das Programm iMPACT wieder schlieen, brauchen und sollten Sie Ihr
Projekt nicht speichern.
Praktikum am Lehrstuhl fr Mikroelektronik 97
6 Das Demo-Board
Im abschlieenden Kapitel werden der Aufbau und die Funktionsweise eines OLED-De-
moboards, das heit eines OLED-Displays samt Treiberplatine, beschrieben. Daraufhin
wird die von Ihnen implementierte PWM-Singleline-Adressierung angepasst und mithil-
fe des FPGAs und des Demoboards auf einem echten OLED-Display getestet.
Abbildung 6.1: Aufbau des OLED-Demonstrators.
Praktikum am Lehrstuhl fr Mikroelektronik 99
6 Das Demo-Board Universitt des Saarlandes
6.1 Aufbau der OLED-Treiberplatine
Der OLED-Treiber stellt die erforderlichen Strme und Spannungen zur Verfgung, da-
mit die adressierten Pixel der OLED-Matrix leuchten. Die Treiberschaltung wird in Spal-
tentreiber (Anodentreiber) und Zeilentreiber (Kathodentreiber) unterteilt. Darber hinaus
werden Spannungspegelumsetzer (Level-Shifter) zur Anpassung der digitalen Steuersi-
gnale verwendet (Abbildung 6.2).
Abbildung 6.2: Blockschaltbild der OLED-Treiberplatine
100 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.2 Spaltentreiber
6.2 Spaltentreiber
6.2.1 Konstantstromquelle
Die Hauptfunktion des Spaltentreibers ist die Versorgung der Anoden (engl. anodes oder
segments) mit konstantem Strom. Jede Spalte verfgt daher ber eine individuelle, ein-
und ausschaltbare Konstantstromquelle. Diese wird auf der verwendeten Treiberplati-
ne aus einem p-MOSFET mit Stromgegenkopplung realisiert (Abbildung 6.3) [12]. Der
Transistor regelt in seinem linearen Bereich den Drain-Strom so, dass die Gate-Source-
Spannung den Wert der Schwellspannung V
th
annimmt. Somit lsst sich in der Praxis der
eingestellte Strom nach folgender Formel berechnen:
I
Anode
=
V
cc
(V
gate
+ | V
th
|)
R
(6.1)
Die Schwellspannung der verwendeten Transistoren betrgt etwa 1,5 V. Bei konstanter
Versorgungsspannung V
cc
= 14 V und festem Widerstandswert R = 8,06 k lsst sich
der Anodenstrom ber die Gatespannung einstellen. Fr das verwendete OLED-Display
(Osram Calgary 2,7) wird ein nominaler Spaltenstrom in Hhe von I
Anode
310 A
verwendet. Das Gate-Potenzial des Transistors muss daher im PWM-Betrieb zwischen
V
cc
= 14 V (aus-Zustand) und V
gate
= 10 V (an-Zustand) geschaltet werden.
Abbildung 6.3: p-MOSFET mit Stromgegenkopplung als Stromquelle
Praktikum am Lehrstuhl fr Mikroelektronik 101
6 Das Demo-Board Universitt des Saarlandes
6.2.2 Discharge-Schalter
Um die parasitren Kapazitten der OLEDs zu entladen, wird am Ende der Zeilenadres-
sierzeit jede Spalte auf Masse geschaltet. Das geschieht mithilfe eines analogen Schal-
ters [12], der in Abbildung 6.2 schematisch als n-MOSFET dargestellt ist. Alle Discharge-
Schalter sind High-aktiv und werden mit einem globalen 3-V-kompatiblen Steuersignal
zu- und abgeschaltet.
6.3 Zeilentreiber
Der Zeilentreiber hat die Aufgabe, die adressierten Zeilenanschlsse (engl. commons)
der OLED-Matrix auf das Masse-Potential (an-Zustand) und alle nicht-addressierten Zei-
len auf ein hheres Potential V
comh
(aus-Zustand) zu schalten. Letzteres ist erforder-
lich, um ein bersprechen (engl. crosstalk) zwischen aktiven und nicht-aktiven Pixel zu
vermeiden. Auf der vorgestellten Treiberplatine wurden die Zeilenschalter in Form von
CMOS-Invertern mit diskreten Transistoren realisiert (Abbildung 6.2). Da eine adressierte
Zeile bei maximaler Belastung die Summe aller Spaltenstrme aufnimmt, wurde der n-
MOSFET niederohmig ausgelegt. Der Eingang des Inverters wird whrend der Adressie-
rung auf V
comh
= 7 V (an-Zustand) und whrend der inaktiven Zeit auf 0 V (aus-Zustand)
geschaltet.
6.4 Pegelumsetzer (Level Shifter)
Spannungspegelumsetzer ndern die Spannungspegel digitaler Signale, damit Schaltun-
gen unterschiedlicher Logik-Familien oder mit unterschiedlichen Schnittstellen miteinan-
der kommuniziern knnen. In Abbildung 6.4 wird eine unidirektionale Realisierung mit
zwei hintereinander geschalteten Transistor-Widerstands-Invertern gezeigt. Der ursprng-
liche High-Pegel in Hhe von V
cc1
(z.B. 3 V) nimmt am Ausgang den Wert V
cc2
(z.B. 5 V)
an. Es gibt weitere geluge Realisierungen, beispielsweise mit Ladungspumpen oder
Optokopplern.
102 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.4 Pegelumsetzer (Level Shifter)
Abbildung 6.4: Pegelumsetzer
Um die Funktionalitt der Spalten- und Zeilentreiber zu gewhrleisten, mssen die Pe-
gel der FPGA-Ausgnge (0 V Low und 3,3 V High) gewandelt werden (Abb. 6.5).
Abbildung 6.5: Pegelumsetzung zur Treiberansteuerung
Fr die Zeilentreiber wurden diskrete Level-Shifter eingesetzt (MC14504B), die den
Eingangs-High-Pegel von 3,3 V in den V
comh
-Wert von 7 V wandeln. Liegt am Steuersi-
gnal eine logische Null, ist der Ausgang des Zeilentreibers auf V
comh
geschaltet und die
Zeile ist inaktiv. Ansonsten wird die Zeile auf Masse geschaltet und somit adressiert.
Fr die Stromquellen des Spaltentreibers mssen sowohl High- als auch Low-Pegel
konvertiert werden. Da der eingesetzte Level-Shifter lediglich den High-Pegel ndern
kann, wird ein weiterer Inverter verwendet (Abbildung 6.2). Der Level-Shifter wandelt
den Eingangs-High-Pegel in den V
cc
-Wert (14 V) um und steuert damit den Inverter, des-
sen V
ss
-Versorgung nicht auf Masse, sondern auf der Spannung V
gate
liegt. Liegen am
entsprechenden FPGA-Ausgang 0 V an, wird die Stromquelle mit 14 V angesteuert und
somit ausgeschaltet. Liegt hingegen eine logische 1 (3,3 V) an, wird der p-MOSFET der
Stromquelle mit V
gate
angesteuert und stellt die gewnschte Stromamplitude ein.
Praktikum am Lehrstuhl fr Mikroelektronik 103
6 Das Demo-Board Universitt des Saarlandes
Die Ansteuerung des Discharge-Schalters ist mit den Spannungspegeln des FPGAs
kompatibel und erfordert keine weitere Umsetzung.
6.5 Physikalischer Aufbau des
OLED-Demonstrators
Der Demonstrator ist modular aufgebaut und setzt sich zusammen aus:
FPGA-Board (1)
Level-Shifter-Platinen (2)
Treiberplatinen (3)
Display-Adapterplatine (4)
OLED-Display (5)
An den drei 40-poligen Steckern des FPGA-Boards sind Level-Shifter-Platinen ange-
schlossen. Sie stellen die Steuersignale fr die Spalten- und Zeilentreiber zu Verfgung
und werden mit den Treiberplatinen verbunden. Eine Treiberplatine verfgt ber 16 Zei-
lentreiber und 24 Spaltentreiber. Es werden zwei Treiberplatinen bereinander gestapelt
und damit eine Bildausung von 48 32 realisiert. Das Bild wird auf einem Teil eines
27-OLED-Displays (Osram Calgary) dargestellt, das eine Gesamtausung von 12864
besitzt. Das Display wird mithilfe von Flex-Kabeln und ZIF-(Zero-Insertion-Force)-Ver-
bindungen an eine Adapterplatine angeschlossen. Diese wird mit den 32 +48 Ausgngen
der Treiberplatinen verbunden.
104 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.6 Versuch V: Demoboard
6.6 Versuch V: Demoboard
In diesem Versuch soll das Adressierungsschema zunchst auf die Gre 4 4 und
schlielich auf die Gre unseres Demoboards von 48 32 Pixeln erweitert werden.
In Abbildung 6.6 ist ein Auszug aus einer Tabelle mit der Pinbelegung fr die Steuer-
signale des OLED-Demoboards zu sehen. Die vollstndige Pinbelegung nden Sie unter
D:\Praktikum_Mikroelektronik\Pinbelegung\pwm.ucf.
Die Variablennamen row_ctrl<i> und col_ctrl<j> bezeichnen die Steuersignale fr die
Zeilen- (row) bzw. Spaltenansteuerung (column) an der entsprechenden Stelle des Dis-
plays (r
ij
).
Dabei ist darauf zu achten, dass alle Signale High-aktiv sind, d.h.
row_ctrl<i> <= 1 Zeile i liegt auf Masse
row_ctrl<i> <= 0 Zeile i liegt auf V
comh
col_ctrl<j> <= 1 Spalte j liefert konstanten Strom
col_ctrl<j> <= 0 Spalte j ist hochohmig
dis_ctrl <= 1 Alle Spalten sind auf V
dis
(Masse) geschaltet. Dann
mssen alle col_ctrl-Signale auf 0 sein, sonst iet
Strom aus den Stromquellen direkt in die Masse.
1 NET "CLOCK" LOC = "B8" ;
2 NET "RESET" LOC = "D10" ;
3
4 NET " r ow_c t r l <1>" LOC = " e10 " ;
5 NET " r ow_c t r l <0>" LOC = " c12 " ;
6 NET " r ow_c t r l <3>" LOC = " a13 " ;
7 NET " r ow_c t r l <2>" LOC = " d12 " ;
8 . . .
9 NET " r ow_c t r l <31>" LOC = " l 12 " ;
10 NET " r ow_c t r l <30>" LOC = " n15 " ;
11
12 NET " c o l _ c t r l <0>" LOC = "m10" ;
13 NET " c o l _ c t r l <1>" LOC = " r 11 " ;
14 NET " c o l _ c t r l <2>" LOC = " p10 " ;
15 . . .
16 NET " c o l _ c t r l <46>" LOC = " c4 " ;
17 NET " c o l _ c t r l <47>" LOC = " a4 " ;
18
19 NET " d i s _ c t r l " LOC = "A10" ;
Abbildung 6.6: Auszug aus Pinbelegung des OLED-Demoboards.
Praktikum am Lehrstuhl fr Mikroelektronik 105
6 Das Demo-Board Universitt des Saarlandes
6.6.1 Aufgabe 1 Erweiterung auf 4 4 und Discharge
ndern Sie zunchst die Einstellungen fr das FPGA in Ihrem Projekt auf folgende Wer-
te:
Family Spartan2E
Device XC2S400E
Package FT256
Speed -7
Erweitern Sie das Programm aus Versuch IV, Aufgabe 3 um die Mglichkeit der Zeile-
naddressierung (siehe dazu auch Zustandsautomat aus Abbildung 5.7). Passen Sie Ihren
Algorithmus so an, dass aus dem bereits verwendeten ROM nun ein gesamtes Bild der
Ausung 4 4 geladen werden kann. Es soll auch die Zeile, die gerade angesteuert
wird, in Form eines Wortes (Vektors) zur Verfgung gestellt und als Ausgang herausge-
fhrt werden. Diese Ausgnge sind wichtig fr die Ansteuerung des Analogboardes in der
folgenden Aufgabe.
ImVersuch II Nachahmung eines OLEDPixels wurde ein Teil der analogen Schaltung
bentigt, um die parasitren parallelen Kapazitten in der Low-Phase des PWM-Signals
zu entladen. Diesen Entladevorgang (Discharge) der OLED-Pixel mssen Sie auch in Ih-
rer Singleline-Adressierung realisieren. Dazu wird ein neuer Zustand bentigt, in dem
eine bestimmte Anzahl von Clock-Zyklen gewartet wird, bis der Entladevorgang der ent-
sprechenden Zeile abgeschlossen ist.
Implementieren Sie diese Discharge-Phase mithilfe eines weiteren Counters (Zhl-
werks) und eines zustzlichen Ausgangs dis_ctrl. Whrend der Discharge-Phase ms-
sen der Ausgang dis_ctrl auf High (1) und alle Signale col_ctrl auf Low (0) liegen.
Als Richtlinie fr die Dauer der Discharge-Phase nimmt man einen Wert von etwa 2 %
der Ansteuerzeit eines maximal hellen Pixels. Bei einem maximalen Grauwert von 31
entspricht dies in etwa einem Wert von 0,6 t
lsb
.
Simulieren Sie Ihre Schaltung und prfen Sie, ob sie sich wie gewnscht verhlt. Es
empehlt sich, an dieser Stelle auch Ihren Betreuer zu bitten, den Signalverlauf zu ber-
prfen, bevor Sie die folgenden Aufgaben durchfhren.
106 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.6 Versuch V: Demoboard
6.6.2 Aufgabe 2 Demoboard
Es wird vorausgesetzt, dass Ihr Algorithmus fr eine Displaygre von 4 4 Pixeln aus-
gelegt ist und anhand einer Testbench die Funktionalitt berprft wurde. Fr einen ersten
Test des Algorithmus fr ein Display der Gre 4 4 auf dem beschriebenen Demoboard
mssen folgende Voraussetzungen erfllt sein:
1. Ihre Komponente pwm.vhd verfgt ber ein Ausgangssignal row_ctrl der Brei-
te 32, sowie ber ein Ausgangssignal col_ctrl der Breite 48. Zunchst werden da-
von jeweils nur die ersten vier Bits verwendet und die brigen auf Null gesetzt.
Diese Signale entsprechen den Steuersignalen fr die Displayadressierung auf dem
Demoboard.
Das Signal col_ctrl<j> ist auf High, solange der Pixelcounter der entsprechen-
den Spalte noch nicht auf Null heruntergezhlt wurde, ansonsten entsprechend auf
Low.
Das Signal row_ctrl<i> ist auf High, wenn gerade die i-te Zeile des Bildes abge-
arbeitet wird. Alle anderen Zeilensignale (row_ctrl) sind dabei auf Low.
2. Zudem existiert das Ausgangssignal dis_ctrl wie in Aufgabe 1 beschrieben.
3. Die Pinbelegung wurde wie in Abbildung 6.6 zu sehen durchgefhrt. Sie knnen
dazu einfach die Datei pwm.ucf aus dem angegebenen Verzeichnis kopieren. Falls
Sie andere Bezeichnungen fr Ihre Signale verwendet haben, mssen Sie die Datei
gegebenenfalls anpassen.
berprfen Sie die Funktionalitt mithilfe einer Testbench. Anschlieend soll der VHDL-
Code synthetisiert und auf das FPGA des Demoboards berspielt werden. Die genaue
Vorgehensweise dafr ist in Abschnitt 6.7 erklrt und wird Ihnen auch von Ihrem Betreuer
gezeigt.
Falls Sie fr die Simulation den Wert von t
lsb
herabgesetzt haben, denken Sie daran,
ihn vor dem Aufspielen auf das Board wieder zurckzusetzen.
Praktikum am Lehrstuhl fr Mikroelektronik 107
6 Das Demo-Board Universitt des Saarlandes
6.6.3 Aufgabe 3 Erweiterung der Displaygre
Erweitern Sie Ihren VHDL-Code so, dass Sie in der Lage sind, eine pulsweitenmodulierte
Singleline-Adressierung fr ein Display der Grsse 48 32 (48 Spalten und 32 Zeilen)
zu realisieren.
1. berlegen Sie sich zunchst, welche weiteren Instanzen von welchen Komponenten
ntig sind und welche Signale Sie erweitern bzw. neu anlegen mssen.
1
2. Berechnen Sie die Zeit t
lsb
fr ein Helligkeitsinkrement angepasst auf die neuen
Parameter in Tabelle 6.1. Die Dauer der Discharge-Phase knnen Sie in dieser Be-
trachtung auer Acht lassen.
Displaygre Framerate Farbtiefe
48 32 100 Hz 5 Bit
Tabelle 6.1: Parameter des Demoboards.
3. Laden Sie aus dem Verzeichnis
D:\Praktikum_Mikroelektronik\Bilder OLED
ein Bild Ihrer Wahl in den ROM Ihrer Implementation.
4. berprfen Sie erneut anhand einer Testbench, ob die Zeilen- bzw. Spaltenkontroll-
signale die richtigen Pegel im entsprechenden Zustand besitzen.
5. Synthetisieren Sie anschlieend Ihren Code und laden Sie diesen auf das FPGA.
Auf dem Display sollten Sie nun das von Ihnen ausgewhlte Bild sehen.
Falls Sie fr die Simulation den Wert von t
lsb
herabgesetzt haben, denken Sie daran,
ihn vor dem Aufspielen auf das Board wieder zurckzusetzen.
1
In Versuch III, Aufgabe 2 haben Sie den Multiplexer auf eine Breite von 49 ausgelegt. Warum ist Ihnen
das nun hilfreich?
108 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.7 Programmieren des groen Boards frs OLED-Display
6.7 Programmieren des groen Boards frs
OLED-Display
1. Starten Sie die Software iMPACT
2. Whlen Sie in dem daraufhin erscheinenden Fenster den Punkt create a new pro-
ject (Abb. 6.7).
Abbildung 6.7: Anlegen eines neuen Projektes
Sollte dieses Fenster nicht erscheinen, knnen Sie es ffnen ber den Menpunkt
File New. Eine eventuelle Nachfrage, ob das vorhandene Projekt gespeichert
werden soll, knnen Sie verneinen.
3. Whlen Sie in dem darauffolgenden Dialog den Punkt Prepare a PROM le aus
und besttigen Sie mit der Schaltche Next (Abb.6.8).
Abbildung 6.8: Auswahl des Punktes Prepare a PROM le
Praktikum am Lehrstuhl fr Mikroelektronik 109
6 Das Demo-Board Universitt des Saarlandes
4. Belassen Sie die Einstellungen in der nchsten Dialogseite und klicken Sie auf
Next.
5. Whlen Sie nun im Drop-Down-Men das PROM xcf04s aus, fgen Sie es mit
Add der Liste hinzu und klicken Sie auf Next (Abb. 6.9).
Abbildung 6.9: Auswahl des PROMs
6. Klicken Sie in der nchsten Dialogseite auf Finish und besttigen Sie die erschei-
nende Meldung mit OK.
7. Whlen Sie in dem Dateiauswahl-Dialog Ihren synthetisierten Code aus. Wenn Sie
sich an die Notation des Skripts gehalten haben, sollte dies die Datei pwm.bit
sein.
8. Die Frage Would you like to add another device le? beantworten Sie bitte mit
No.
9. Besttigen Sie die nchste Meldung mit OK.
110 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.7 Programmieren des groen Boards frs OLED-Display
10. Klicken Sie anschlieend doppelt auf den Eintrag Generate File (Abb. 6.10).
Abbildung 6.10: Erzeugen der Datei
11. Sie mssen nun mit dem Assistenten wieder von vorne anfangen. Klicken Sie dazu
auf File New. In der Nachfrage, ob Sie speichern wollen, klicken Sie auf
No.
12. Whlen Sie erneut den Punkt create a new project (Abb. 6.7).
13. Klicken Sie in dem darauffolgenden Dialog den ersten Punkt Congure devices
using Boundary-Scan an und besttigen Sie mit der Schaltche Next (Abb. 6.11).
Abbildung 6.11: Auswahl des Punktes Congure devices using Boundary-Scan
Praktikum am Lehrstuhl fr Mikroelektronik 111
6 Das Demo-Board Universitt des Saarlandes
14. In dem Dateiauswahl-Dialog klicken Sie bitte auf Bypass (Abb. 6.12).
Abbildung 6.12: Bypass bei der Dateiauswahl
15. In dem erscheinenden Dateiauswahl-Dialog whlen Sie die Datei Untitled.mcs.
Das ist jene, die Sie vorhin aus der Datei pwm.bit erstellt haben.
16. Klicken Sie mit der rechten Maustaste auf xc18v04 und whlen Sie im erschei-
nenden Kontextmen den Eintrag Program... (Abb. 6.13).
Abbildung 6.13: Starten des Programmiervorgangs
112 Praktikum am Lehrstuhl fr Mikroelektronik
Universitt des Saarlandes 6.7 Programmieren des groen Boards frs OLED-Display
17. Als Einstellungen verwenden Sie jene aus Abbildung 6.14.
Abbildung 6.14: Programmiereinstellungen fr das groe Board.
Mit einem Klick auf OK startet der Programmiervorgang. Sollte danach die Mel-
dung ProgramFailed erscheinen, versuchen Sie es bitte erneut (ab Punkt 16 dieser
Anleitung).
18. Wenn Sie das Programm iMPACT wieder schlieen, brauchen (und sollten) Sie Ihr
Projekt nicht zu speichern.
Praktikum am Lehrstuhl fr Mikroelektronik 113
Literatur- und Quellenverzeichnis
[1] C. W. Tang and S. A. VanSlyke. Organic electroluminescent diodes. http://
link.aip.org/link/?APPLAB/51/913/1, 1987. [Online; letzter Zugriff
am 24.06.2012].
[2] Digilent. Digilent Inc. http://www.digilentinc.com/Products/
Detail.cfm?Prod=S3BOARD&Nav1=Products&Nav2=Programmable.
[Online; letzter Zugriff am 24.06.2012].
[3] Howstuffworks.com. Passiv-matrix / aktiv-matrix oled. http:
//electronics.howstuffworks.com/oled3.htm, 2005. [Online;
letzter Zugriff am 24.06.2012].
[4] Jayesh Bharathan and Yang Yang. Polymer electroluminescent devices processed by
inkjet printing: I. polymer light-emitting logo. http://link.aip.org/link/
?APPLAB/72/2660/1, 1998. [Online; letzter Zugriff am 24.06.2012].
[5] LED-Info. Leuchtdiode (light emitting diode - led). http://www.
led-info.de/grundlagen/leuchtdioden.html. [Online; letzter Zu-
griff am 24.06.2012].
[6] Science of Spectroscopy. Oled diagramm. http://www.
scienceofspectroscopy.info/edit/index.php?title=OLED.
[Online; letzter Zugriff am 09.05.2008; Link nicht mehr existent].
[7] Prof.Dr.-Ing. Wolfram H. Glauert. VHDL, VHSIC-Hardware Description Lan-
guage, volume 1. Lehrstuhl fr Rechnergesttzten Schaltungsentwurf, Universitt
Erlangen-Nrnberg, Cauerstr.6, 91058 Erlangen, 2001.
[8] SAMSUNG. Foto von Smartphone Galaxy S II LTE. http://images.
samsung.com/is/image/samsung/de_GT-I9210DAAVD2_002_
Right-Angle?$Download-Source$. [Online; letzter Zugriff am
23.06.2012].
Praktikum am Lehrstuhl fr Mikroelektronik 115
Literatur- und Quellenverzeichnis Universitt des Saarlandes
[9] Joerg Schneider. Xilinx Spartan-3 FPGA Architektur. http://www.
jsch-online.de/index.php. [Online; letzter Zugriff am 01.06.2008; Inhalt
anscheinend nicht mehr online].
[10] T. R. Hebner, C. C. Wu, D. Marcy, M. H. Lu, and J. C. Sturm. Ink-jet printing of
doped polymers for organic light emitting devices. http://link.aip.org/
link/?APPLAB/72/519/1, 1998. [Online; letzter Zugriff am 24.06.2012].
[11] Teccentral. Schnitt durch den aufbau eines tft-displays.
http://www.teccentral.de/artikel/artikel_400_
2-Fujitsu-Siemens-SCENICVIEW-P19-2-19%E2%80%
9C-TFT-Monitor.html. [Online; letzter Zugriff am 13.05.2008; Link
nicht mehr existent!].
[12] U. Tietze und CH. Schenk. Halbleiter Schaltungstechnik, volume 12. Springer
Verlag Berlin, 2002.
[13] Wikipedia. Histogram equalization. http://en.wikipedia.org/w/
index.php?title=Histogram_equalization&oldid=496059806.
[Online; letzter Zugriff am 23.06.2012].
116 Praktikum am Lehrstuhl fr Mikroelektronik