1_2_Einführung V101

Transcription

1_2_Einführung V101
Hochschule Karlsruhe
Fakultät Elektro- und Informationstechnik
Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Skriptum
zur
Vorlesung
Mikrocontroller-Systeme
Mikrocontroller
1.1 Ziele der Vorlesung
Seite 2 von 33
Inhalt:
Literatur zur Vorlesung
Vorwort
1
Einführung
1.1
Ziele der Vorlesung
1.2
Blick in die Historie und Begriffsdefinitionen
1.3
Gegenüberstellung: Programmierbares Logiksystem / festverdrahtetes
Logiksystem
2
Darstellung und Speicherung von Information
2.1
Informationseinheiten und ihre Interpretation
2.2
Dualzahlensystem
2.3
BCD-Zahlensystem
2.4
Halbleiterspeicher und BUS-System
3
Architektur eines Mikrocomputersystems, Beispiel: 80x86
3.1
Funktionselemente und Arbeitsweise
3.2
Befehlsbearbeitungsphasen
3.3
Intelligente Peripheriebausteine, Beispiel: Portbaustein
4
Architektur eines Mikrocontrollers, Beispiel: C517
4.1
Funktionselemente eines Mikrocontrollers
4.2
Aufbau eines Mikrocomputersystems mit dem C517
4.3
Programmiermodell des C517
5
Hilfsmittel zur Erstellung und Test von Assemblerprogrammen
6
Befehlssatz des Mikrocontrollers C517
6.1
Befehlstypen, Maschinencode, Laufzeiten
6.2
Die Befehlsgruppen im Einzelnen
7
Programmiertechnik in Assembler
7.1
Assembler-Symbolik, Segmente
7.2
Lineare Programme, Interationen
7.3
Unterprogrammtechnik
7.4
Interrupts
8
Mikrocomputer-Systemarchitekturen
8.1
Adressierung von Systemkomponenten
8.2
Multi-Master-Systeme
8.3
Timer / Counter
8.4
Schnittstellen und Schnittstellen-Bausteine
9
Optimierungsstrategien
9.1
CISC-/RISC-Architektur
9.2
Queue, Cache, Pipelining und Harvard-Architektur
10
Auswahlkriterien für Mikroprozessoren
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.1 Ziele der Vorlesung
Seite 3 von 33
Literatur zur Vorlesung
Allgemeine Literatur:
Flik, Thomas, Liebig, Hans: Mikroprozessortechnik, 7. Auflage, Springer 2005
Beierlein, Hagenbruch: Taschenbuch Mikroprozessortechnik, Fachbuchberlag
Leipzig 1999 / 3. erw. Auflage: 2004
Schweizer, Wunsch, Fadini: Mikrorechner, Architektur und Programmierung,
Viehweg 1987
Osborne, Adam: Einführung in die Mikrocomputertechnik, te-wi 1982
Speziell zu Mikrocontrollern:
Schaaf, Bernd-Dieter, Mikrocomputertechnik, Hanser-Verlag, 1999
Schmitt, v. Wendorff, Westerholz: Embedded-Control-Architekturen, HanserVerlag 1999
R. Johannis / N. Papadopoulos: MC-Tools 5: Handbuch des 80C517,
Feger+Co, Hardware+Software Verlags OHG, Traunreut, 1995
V. Keim, G. Schnell: 8051 Mikrocontroller-Praktikum, Franzis-Verlag 1996
Walter, Jürgen: Mikrocomputertechnik mit der 8051-Controller-Familie,
Springer 1994
Bermbach, Rainer: Embedded Controller, Hanser-Verlag, 2001
SIEMENS C500 User's Manual (im Intranet der FH verfügbar)
Speziell zum 8086/88:
Rector, Russel und Alexy, George: Das 8086/8088-Buch, te-wi 1983
Wohak, Bertram: 8086 Assembler-Programmierung, iwt 1987
Thies, K.-D.: Der 8086/80286-Assembler, te-wi 1985
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.1 Ziele der Vorlesung
Seite 4 von 33
Vorwort
Dies ist das Skriptum der Vorlesung "Mikrocontroller" (E2B231) im
Studiengang Energie- und Automatisierungstechnik. Es soll nicht den
Besuch der Vorlesung ersetzen und erfordert bei der praktischen Arbeit
im Labor die Verwendung von weitergehenden technischen
Unterlagen, wie Befehlsbeschreibungen, Adressraum-Aufteilungen,
Registerstrukturen usw.
Das Labor "Mikrocontroller" wird parallel zur Vorlesung angeboten;
es beginnt in der zweiten Semesterhälfte. Da die Arbeit im Labor
Grundkenntnisse bereits voraussetzt, ist die Vorlesung - und auch das
Skriptum - so aufgebaut, dass relativ schnell Umfeld,
Programmiermodell und Programmier-Hilfsmittel speziell des im
Labor verwendeten Prozessors behandelt werden können (Kapitel 5).
Ab dem siebten Kapitel wird der Betrachtungskreis dann wieder
erweitert.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.1 Ziele der Vorlesung
Seite 5 von 33
1 Einführung
1.1 Ziele der Vorlesung
o Arbeitsweise und Art der Programmierung von Mikrorechnersystemen
verstehen
o Vor- und Nachteile verschiedener Mikrorechnerarchitekturen kennen lernen
o Praktisches Arbeiten mit einem speziellen Prozessor (SIEMENS C517,
entsprechend einer 8051-Architektur)
o Problemstellungen selbständig lösen können durch:
ƒ Auswahl eines geeigneten Prozessortyps
ƒ Auswahl der zugehörigen Komponenten
ƒ Entwurf geeigneter Programmstrukturen
ƒ Programmieren und Testen in der jeweiligen Hardware-Umgebung
1.2 Blick in die Historie und Begriffsdefinitionen
•
Die folgende Abbildung zeigt einige, wichtige Entwicklungsschritte von den
Anfängen der Rechner bis zu einem heutigen Mikroprozessor
Abbildung 1-1: Historische Entwicklung der Digitalrechner
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.2 Blick in die Historie und Begriffsdefinitionen
Seite 6 von 33
Zentraleinheit (CPU)
Register
Rechenwerk
Steuerwerk
BUS-Steuerung
BUS-System
Speicher für Programm
und Daten
Ein- /
Ausgabekomponenten
Abbildung 1-2: Prinzipieller Aufbau eines Rechners
•
In Abbildung 1-2 ist der prinzipielle Aufbau eines digitalen Rechners dargestellt
mit seinen wesentlichen Kompomenten:
o CPU (central processing unit), die zentrale Verarbeitungseinheit; sie
wird gelegentlich auch einfach als "Prozessor" bezeichnet. Hier wird
ein Programm Befehl für Befehl abgearbeitet.
Zur Umsetzung der einzelnen Befehle verfügt die CPU über ein
Steuerwerk, das jeden einzelnen Befehl in zeitlich
aufeinanderfolgende, interne Bearbeitungsschritte umsetzt.
Handelt es sich dabei um Befehle für arithmetische oder logische
Verknüpfungen von Operanden, wird zur Befehlsbearbeitung das
Rechenwerk benützt. Die Operanden, die im Rahmen der
Befehlsbearbeitung benötigt werden, stammen entweder aus internen
Speicherplätzen, den Registern, oder aus externen Speicherplätzen.
Diese externen Speicherplätze sind über ein BUS-System an die CPU
angeschlossen; für die Datenübertragung über diesen - oft auch von
anderen Komponenten gemeinsam genutzten - Datenpfad besitzt die
CPU eine eigene BUS-Steuerung.
o BUS-System: verbindet die CPU mit allen anderen Komponenten
des Rechners. Über das BUS-System können sowohl Daten von den
angeschlossenen Komponenten zur CPU transportiert werden
(Beispiel: die einzelnen Befehle sowie externe Operanden), als auch
umgekehrt Daten von der CPU zu den externen Komponenten
übertragen werden (Beispiel: ein Rechenergebnis in den externen
Speicher). Darüber hinaus gibt es oft auch die Möglichkeit, dass
externe Komponenten selbst - ohne Teilnahme der CPU - gegenseitig
Daten austauschen. Die Koordinierung von Übertragungsrichtung
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.2 Blick in die Historie und Begriffsdefinitionen
Seite 7 von 33
(wer ist Sender - wer ist Empfänger) und der zeitliche Ablauf wird
über Steuersignale geregelt.
o Speicher: Enthält die Programme für die CPU sowie die Daten
(Variable und Konstante), sofern sie nicht von den Ein-/Ausgaben
stammen.
o Ein-/Ausgabekomponenten (I/O-Devices): Stellt die Schnittstelle
des Rechners zur Aussenwelt dar. Das Spektrum dieser
Komponenten ist breit gestreut und charakterisiert letztlich die
Anwendungsfunktion des Rechners: vom einfachen IC "Portbaustein"
(siehe Kapitel 3.3), an dem lediglich wenige, digitale Signale
angeschlossen werden, deren Eingangs-Signalzustände in der CPU
ausgewertet und zu Ausgangs-Signalzuständen führen (SteuerungsRechner), bis hin zu kompletten, vorverarbeitenden Komponenten wie
z.B. Modems, Tastaturen, Displays usw.
Begriffsdefinitionen:
•
Großrechner: Anwendung für Wissenschaft (Genomanalyse, Wettersimulation)
Banken, Versicherungen und Militär; Hersteller z.B. Intel, HP, NEC. An an der
Spitze der TOP TEN weltweit steht z.Zt. der "Earth Simulator" (NEC) mit ca. 35
TFlops.
•
Minicomputer, heute: Mainframe, Server-Anwendungen (Beispiel:IBM z990Serie, Prozessor: Eigenentwicklung 9x9x2 cm, 3,2 Milliarden Transistoren, 9000
MIPS).
•
Mikrocomputer(-system): z.B. Personal Computer (PC); die zentrale
Recheneinheit (CPU) eines Mikrocomputers ist der Mikroprozessor.
•
Mikroprozessor: Ein Chip, der für sich alleine allerdings noch nicht arbeitsfähig
ist; er benötigt mindestens Speicher- und Ein-/Ausgabe-Bausteine als weitere ICs.
•
Mikrocontroller: Ein komplettes Mikrocomputersystem auf einem IC (SOC:
system on a chip)
•
Controller allgemein: (BUS-Controller, Interrupt-Controller, E/A-Controller,
DMA-Controller): Funktionseinheiten, die Teilaufgaben in einem Rechnersystem
selbständig durchführen; sie sind nicht programmierbar, ihre Arbeitsweise ist aber
oft in vielfältiger Weise veränderbar dadurch, dass man Steuer-Parameter in
Steuerwort-Register einschreibt.
•
Embedded Control: Überbegriff über alle Anwendungen, bei denen ein
Mikrocontroller (oder auch ein ganzes Mikrocomputersystem) "eingebettet" in ein
Gerät ist; damit tritt dieses Gerät äußerlich nicht mehr als Rechner in Erscheinung.
Mikroprozessor
Mikrocontroller
Embedded
Control
Der im Gerät verborgene Mikrocontroller ermöglicht jedoch eine enorme Vielfalt
an Funktionen, sodass man heute von einer "2. Industriellen Revolution" spricht,
ausglöst durch den Einsatz dezentraler Intelligenz in Form von Mikrocontrollern.
•
Thema der Vorlesung: Mikrocomputer und (Schwerpunkt:) Mikrocontroller
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.2 Blick in die Historie und Begriffsdefinitionen
Seite 8 von 33
Anwendungsbeispiele werden in der Vorlesung vorgestellt:
Personal Computer PC
Speicherprogrammierbare Steuerung (SPS)
Mikrocomputersystem für Embedded Control
ABS, ESP usw.
Smart card usw.
•
Die Stückzahl-Verteilung zwischen der Welt der PC-Prozessoren (dominiert durch
INTEL) und der Prozessoren für Embedded Control-Anwendungen zeigt für das
Jahr 1998 die Abb. 1-3. Deutlich sichtbar: im Embedded Control-Bereich spielen
die PC-Prozessoren ("x86-Architektur", siehe Kapitel 3) keine Rolle.
Abbildung 1-3: Stückzahlenvergleich Embedded Control / PC
(32-Bit-Prozessoren im Jahr 1997, Quelle: Elektronik 25/1998)
Wie schnell sich die Verteilung der Stückzahlen zwischen den PC- und Embedded
Control-Prozessoren seit 1997 verändert hat, zeigt die folgende Abbildung.
Embedded-Anwendungen
600
Prozessoren in Millionen Stück
•
PC
400
200
1996
1998
2000
2002
Jahr
Abbildung 1-4: Stückzahlentwicklung Embedded Control / PC
(Quelle: Elektronik 1/2000)
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
1.2 Blick in die Historie und Begriffsdefinitionen
Auch die Verteilung der Stückzahlen innerhalb der Mikrocontroller selbst ist sehr
ungleich:
Verarbeitungsbreite
4 Bit
8 Bit
16 Bit
32 Bit
•
Seite 9 von 33
Stückzahl (1997)
1250 Millionen
1500 "
400 "
185 "
Dabei wird lediglich der 4-Bit-Sektor kleiner, alle anderen Sektoren vergrößern
sich schnell; sogar der 32-Bit-Sektor zeigt bereits ein Jahr später (1998) folgende
Gesamtstückzahl:
Gesamtwachstum:
um 25 % auf 236 Mio Einheiten
ARM-Prozessor: +400%
ARM: Advanced RISC Machines
(England),
ARM-Lizenznehmer:
Seiko, Epson, Hewlett-Packard,
Toshiba
Abbildung 1-5: 32-Bit-Embedded Mikrocontroller 1998
(Quelle: Microprozessor-Report 1/99)
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.3 Gegenüberstellung: Programmierbares
Seite 10 von 33
1.3 Gegenüberstellung: Programmierbares Logiksystem /
festverdrahtetes Logiksystem
•
In Abb. 1-2 wurde bereits der prinzipielle Aufbau eines Rechners dargestellt.
Dieser stellt - allgemein formuliert - ein "programmierbares Logiksystem" dar,
dessen Funktion durch ein Programm festgelegt wird. Dabei kann dieses
Programm entweder jederzeit änderbar / nachladbar sein (typisch: PC); damit ist
dann auch die Funktion dieses Systems änderbar, oder das Programm ist
unveränderlich (typisch: Embedded Control).
Eingangsdaten
Schaltung
("Hardware")
Ausgangsdaten
Programm
("Software")
Abbildung 1-6: Programmierbares Logiksystem
•
Ein Logiksystem, das bezüglich der Ein- und Ausgangsdaten dieselbe Funktion
hat, kann aber auch wie folgt aussehen:
Eingangsdaten
Schaltung
("Hardware")
Ausgangsdaten
Schaltplan
Abbildung 1-7: Festverdrahtetes Logiksystem
•
Die Funktion dieses Logiksystems wird nicht durch ein Programm, sondern durch
die Verschaltung von einzelnen Logikbausteinen festgelegt - also durch einen
Schaltplan ("hard wired").
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.3 Gegenüberstellung: Programmierbares
Seite 11 von 33
Beispiel 1:
Das binäre Ausgangssignal c soll über eine UND-Funktion aus den
beiden binären Eingangssignalen a, b erzeugt werden
Realisierung mit einem programmierbaren Logiksystem:
Signale a, b werden im Logiksystem (Rechner) auf Variable abgebildet
z.B. in einem C-Programm:
int a, b;
// Annahme: als binäre Variable nehmen sie
//nur die Werte 0 oder 1 an
c = a && b;
// Programmzeile zur Bildung der
// Ausgangsvariablen c
Realisierung mit einem festverdrahteten Logiksystem:
Signale a, b steuern je nach ihrem Zustand zwei elektronische Schalter
("Gatter") in die beiden Zustände "geöffnet" / "geschlossen":
a
b
c
Abbildung 1-8: UND-Funktion "hardwired" realisiert
In Abb. 1-8 ist bezüglich der Ein- und Ausgangsgrößen dieselbe
Logikfunktion in Hardware realisiert, wie im C-Programm.
Diese Gatter bzw. daraus aufgebaute, als integrierte Schaltkreise in
Hardware realisierte, logische Grundfunktionen ermöglichen es,
beliebig komplexe Funktionen zu realisieren.
a
b
a
&
c
=1
b
c
Antivalenz-Funktion
(Exklusiv-ODER)
UND-Funktion
a
b
>=1
c
ODER-Funktion
Abbildung 1-9: Logikfunktionen (Auswahl)
Beispiel 2:
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
1.3 Gegenüberstellung: Programmierbares
Seite 12 von 33
Zwei INT-Zahlen a, b sollen addiert werde; Summe soll in S abgelegt
werden.
Realisierung mit einem programmierbaren Logiksystem:
S = a + b;
// C-Programm
Realisierung mit einem festverdrahteten Logiksystem:
(hier reduziert auf zwei Ein-Bit-Zahlen unter Verwendung der
Logikfunktionen aus Abb. 1-9)
Abbildung 1-10: Volladdierer, hard wired
•
Hier ist bereits sichtbar, dass letztlich jede beliebige Funktion
entweder programmiert
oder festberdrahtet
gelöst werden kann.
Merkmal
Arbeitsweise
Laufzeiten
Komplexität
der Aufgabe
sonstiges
Festverdrahtete Lösung
Parallele Arbeitsweise
("für jedes Signal eine
eigenes Teil der
Hardware"):
verschiedene Funktionen
können gleichzeitig
ablaufen
extrem kurz (Schaltzeiten
der Gatter)
Komplexität schlägt sich
in der Chipfläche nieder
Programmierte Lösung
Serielle, eine Hardware
(die CPU) für die
Verarbeitung aller
Signale
Vergleich:
"hard wired"Lösung
gegenüber
programmierter
Lösung
relativ langsamer
Komplexität der
Aufgabe wirkt sich in
der Länge des
Programms aus
idealer Know-HowSchutz
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
1.3 Gegenüberstellung: Programmierbares
Seite 13 von 33
Praktische Realisierungen:
o ASIC (Application Specific IC): Entwurf durch den Kunden
mittels CAD-System, Herstellung durch spezialisierte
Halbleiterhersteller: Funktion durch die Herstellung festgelegt.
Hohe Entwicklungskosten / lange Entwicklungszeiten / keine
Möglichkeit, nachträglich Fehler zu beseitigen: Einsatz nur bei
hohen Stückzahlen sinnvoll.
ASIC
o FPGA (Field Programmable Gate Array) und PLD
(Programmable Logic Device): ICs mit vorgefertigten logischen
Elementen, die vom Kunden "verschaltet" werden.
FPGA,
PLD
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.1 Informationseinheiten und ihre Interpretation
Seite 14 von 33
2 Darstellung und Speicherung von Information
2.1 Informationseinheiten und ihre Interpretation
Definitionen:
•
Bit, engl.: binary digit, Binäres Signal, trägt nur zwei verschiedene Informationen
•
Mehrere Informationen mittels einzelner Bits darzustellen erfordert Codierung
(=Zuordnung von Informationen zu Code-Wörtern); damit lassen sich digitale
Signale darstellen.
•
Ein Code besteht im allgemeinen Fall aus:
m Elementen ("Stellen"), jedes Element kann
u verschiedene Zustände annehmen
•
Code
Anzahl N der Informationen, die mit einem Code von m Stellen dargestellt werden
können:
N= u
•
Bit
m
In der Mikrocontrollertechnik übliche Stellen-Anzahlen bei u = 2:
Anzahl der
Stellen m
4
8
16
32
Anzahl der
darstellbaren
Informationen
16
256
65 636
4,295 109
Bezeichnung
Nibble
Byte
Word *)
Double Word *)
10
20
30
1024
1.048.576
1.073.741.824
1K
1M
1G
Nibble,
Byte,
Wort,
Double Word
*) Hinweis:
Die Bezeichnung "Double Word" wird nicht einheitlich verwendet;
herrührend von Großrechnern werden auch 32 Bit als "Word"
bezeichnet.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.1 Informationseinheiten und ihre Interpretation
Seite 15 von 33
Beispiel für ein Codiersystem: Für die Darstellung von druckbaren
Zeichen (A....Z, a...z, 0...9) wird häufig eine Codierung mit 7 Bit verwendet
Diese nennt sich "ASCII-Tabelle" (nach American Standard Code for
Information Interchange) und ist nachfolgend dargestellt:
Abbildung 2-1: Codierung von Textzeichen mit 7-Bit-ASCII
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
2.1 Informationseinheiten und ihre Interpretation
Seite 16 von 33
Codes werden im Folgenden als "Kästchengrafik" dargestellt:
a3
a2
a1
a0
MSB
und
LSB
LSB: least significant bit
MSB: most significant bit
Beispiel:
8-Bit-Code, Inhalt stellt z.B. das ASCII-Zeichen 'A' dar.
•
a7
a6
a5
a4
a3
a2
a1
a0
0
1
0
0
0
0
0
1
Zur verkürzten Darstellung von Bit-Codes auf Papier oder am Bildschirm
verwendet man meist das hexadezimale Zahlensystem; dabei entsprechen jeweils 4
Bit eines Codes einer hexadezimalen Stelle:
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.2 Dualzahlensystem
Seite 17 von 33
Hexadez.
Zahlensystem
Abbildung 2-2: Hexadezimales Zahlensystem
Beispiel:
Das oben dargestellte Bitmuster (Code) des ASCII-Zeichens 'A' hat den
hexadezimalen Wert: 41 hex.
Allerdings kann dasselbe Bitmuster auch positive, ganze Dezimalzahl
mit dem Wert: 65 dez. aufgefasst werden; Bitmuster haben von sich aus
also keine festgelegte Bedeutung! Es ist immer notwendig, das
zugrundeliegende Codiersystem zu kennen. Als häufig verwendete
Codiersysteme werden im Folgenden Codiersysteme für Zahlen näher
beleuchtet.
2.2 Dualzahlensystem
•
Die Darstellung von Zahlen wird im Folgenden als Codierung aufgefasst. Dabei
wird jeder Zahlenwert einem Binärcode (u=2) zugeordnet.
•
Wegen der Ablage/Verarbeitung in einem Rechner muss grundsätzlich von einem
Code mit einer bekannten, konstanten Anzahl von Elementen ausgegangen
werden, also einer festen "Codelänge".
Bildungsgesetz für reelle Zahlen:
Z = ....a3 u3 + a2 u2 + a1 u1 + a0 u0 + a-1 u-1 + a-2 u-2 ....
a: Stellen
u: Basis
Z: Wert der Zahl
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
2.2 Dualzahlensystem
Seite 18 von 33
Zur Codierung von Zahlen benötigt man also neben der Basis u die Angabe,
welches "Stellensystem" im Code verwendet wird
Beispiel aus einem Dezimal-Zahlensystem mit m=4 Stellen:
Anzahl der möglichen Zahlen:
N = um = 104 = 10 000
Stellensystem sei:
Z = a3 u3 + a2u2 + a1u1 + a0u0
Beispiel:
Code:
7.103 + 3.102 + 5.101 + 1.100
7351
Zahlenwert Z ist also 7351 dezimal.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
2.2 Dualzahlensystem
Seite 19 von 33
Die bekannten Codierungen des Dezimalsystems (u=10) sowie die Rechenregeln
können analog in ein Dualzahlsystem (u=2) über tragen werden.
Beispiel aus einem Dual-Zahlensystem mit m=4 Stellen:
Anzahl der möglichen Zahlen:
N = um = 24 = 16
Stellensystem sei:
Z = a3 u3 + a2u2 + a1u1 + a0u0
1.23 + 0.22 + 1.21 + 1.20
Beispiel:
Code:
1011
Zahlenwert Z ist also 11 dezimal.
•
Die Codes von Dualzahlen werden im Folgenden wieder als "Kästchengrafik"
dargestellt
Alle Codes eines 4-Bit-Dualzahlsystems am Beispiel des obigen
Stellensystems:
a3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
a2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
a1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
a0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1
1
Wert als Dezimalzahl
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.2 Dualzahlensystem
Beispiel aus einem Dual-Zahlensystem mit m=4 Stellen:
Seite 20 von 33
Gebrochene
Zahlen
Stellensystem für reelle Zahlen:
Z = a1u1 + a0u0 + a-1u-1 + a-2u-2
Code:
a1 a0 a-1 a-2
1 0 1 1
Zahlenwert Z ist also 2,75 dezimal
•
Zur Erinnerung: einige Beispiele zu den Rechenregeln für Dualzahlen:
Beispiel zur Addition:
a3 a2 a1 a0
1 1 0 1
1 0 0 1
1 0 0 1 0 1 1 0
Beispiele zu
den Rechenregeln
1. Operand (Wert 13 dez.)
2. Operand (Wert 9 dez)
Übertragszeile
Ergebnis
Hinweis: Hier tritt ein Übertrag in die Stelle 24 auf; falls diese nicht
vorhanden ist (feste Codelänge!), muss das Ergebnis in
diesem Zahlensystem als falsch betrachtet werden.
Beispiel zur Subtraktion:
a3 a2 a1 a0
1 1 0 1
1 0 1 1
0 0 1 0 0 0 1 0
1. Operand
2. Operand
"Borgen"-zeile
Ergebnis
Beispiel zur Multiplikation mit 2n ( =Linksschieben um n Stellen):
a3 a2 a1 a0
0 0 1 0
* 2
2
=
a3 a2 a1 a0
1 0 0 0
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.2 Dualzahlensystem
Seite 21 von 33
Beispiel zur Division durch 2n (=Rechtsschieben um n Stellen):
a1 a0 a-1 a-2
1 1 0 0
/ 2
2
a1 a0 a-1 a-2
0 0 1 1
=
Hinweis: Bitte beachten Sie das Stellensystem! Das Ergebnis ist
dezimal: 0.75. Was wäre bei einer Division durch 24 das
Ergebnis?
Beispiel zur Umrechnung dezimal .--> dual ("Horner-Schema"):
Die Dezimalzahl hat den Wert 11
11 / 2 = 5 Rest 1----> a0 = 1
5 / 2 = 2 Rest 1 ----> a1 = 1
2 / 2 = 1 Rest 0 ----> a2 = 0
1 / 2 = 0 Rest 1 ----> a3 = 1
Das Ergebnis ist also:
•
a3 a2 a1 a0
1 0 1 1
Bisher wurden nur positive Zahlen als Codes dargestellt. Zur Codierung von
Vorzeichen-behafteten Zahlen gibt es mehrere Möglichkeiten:
Codierung
von pos. und
neg. Zahlen
a) Codierung mit einem Vorzeichenbit und einer Betragszahl, Definition
Vorzeichenbit = 0: Zahl ist positiv,
Vorzeichenbit = 1: Zahl ist negativ
Beispiel Codelänge 4 Bit:
Vorzeichenbit a2 a1 a0
1
0 1 1
0
0 1 1
0
0 0 0
1
0 0 0
Wert dezimal:
-3
+3
+0
-0
•
Vorteil dieses Systems: Codes für Beträge von pos. und neg. Zahlen sind gleich
•
Nachteil dieses Systems: Zwei Codes für Betrag 0 --> Sonderbehandlung beim
Rechnen !
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Vorzeichen
und Betrag
V 1.00
Mikrocontroller
2.2 Dualzahlensystem
Seite 22 von 33
b) Codierung negativer Zahlen als Zweierkomplement
•
Zweierkomplement
(ZK)
Definition des Zweierkomplements:
Das Zweierkomplement einer Zahl (aus einem dualen Stellensystem mit n
Stellen) ist die Ergänzung zur Höchstzahl 2n
•
Regel zur Bildung des Zweierkomplements:
Aus dem Code der Zahl das Einerkomplement bilden (aus 0 wird 1 und
umgekehrt) und eine 1 dazuaddieren.
•
Einfache Regel zur Bildung des Zweierkomplements:
Den Code der Zahl von rechts beginnend abschreiben bis inklusive der ersten
"1", alle anderen Bits invertieren.
•
ZKBildungsregeln
In diesem System ist das führende Bit ("MSB, most significant bit") zwar als
Vorzeichen zu werten, es ist jedoch Bestandteil der Zahl; d.h. um aus einer
negativen Dualzahl die positive Zahl zu ermitteln, kann man nicht einfach das
Vorzeichenbit weglassen und nur die niederwertigen Bits betrachten (siehe im
folgenden Beispiel die letzte Zeile).
Beispiele zur Zweierkomplementbildung:
VZ a2 a1 a0 Wert dez.
0 0 0 0
0
0 0 0 1
+1
0 0 1 0
+2
0 1 1 1
+7
1 1 1 1
-1
•
--> ZK --> VZ a2 a1 a0 Wert dez.
0
--> ZK --> 0 0 0 0
1
1
1
1
-1
--> ZK -->
-2
--> ZK --> 1 1 1 0
-7
--> ZK --> 1 0 0 1
+1
--> ZK --> 0 0 0 1
Vorteil dieses Systems: Die Regeln der Dualzahlrechnung lassen sich ohne
Sonderbehandlung der "0" anwenden.
Beispiel: Addition von zwei Dualzahlen
VZ a2 a1 a0
0 1 1 0
1 0 0 1
0 0 0 0 1 1 1 1
•
1. Operand,
2. Operand,
Übertragszeile
Ergebnis,
Wert: +6 dez.
Wert: -7 dez.
Wert -1 dez.
Die Codierung von Zahlen kann grafisch an einem Zahlenstrahl dargestellt werden.
Dabei werden die Grenzen des Zahlenstrahls immer durch das zu Grunde gelegte
Stellensystem, also die Codelänge, vorgegeben. Bei allen Rechenoperationen muss
diese Grenze berücksichtigt bzw. überwacht werden.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
•
2.2 Dualzahlensystem
Seite 23 von 33
Wird beim Rechnen die Grenze des Zahlenstrahls überschritten, ist das Ergebnis
der Rechenoperation falsch - zumindest bei den in der Mikrocontrollerwelt
verwendeten Rechnern.
Beispiele für Zahlenstrahl-Darstellung in verschiedenen
Codiersystemen:
Codelänge 8 Bit, negative Zahlen im Zweierkomplement
Overflow = 1
Overflow = 1
0000 0000
1000 0000
1111 1111
0000 0001
-128 d
0111 1111
+127 d
0d
Codelänge 8 Bit, nur positive Zahlen
Carry = 1
Carry = 1
1000 0000
0000 0000
0d
0111 1111
1000 0001
128 d
1111 1111
255 d
Codelänge 8 Bit, 7 Betragszahl, 1 Bit Vorzeichen
1000 0000
0000 0000
+0d
0111 1111
1000 0001
-0d
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
1111 1111
- 127 d
V 1.00
Mikrocontroller
2.3 BCD-Zahlensystem
Seite 24 von 33
2.3 BCD-Zahlensystem
•
"Binär codiertes Dezimalsystem": Beibehaltung des dezimalen Stellensystems,
lediglich die einzelnen Ziffern werden als Dualzahlen codiert.
BCDCodierung
Beispiel für Bildung einer BCD-Zahl aus einer Dezimalzahl:
Dezimalzahl
1
0
0
1
*
102
0
0
1
1
*
101
1
0
0
0
102
101
100
9
3
8
100
•
Unzulässige
Achtung: nur Codes von 0000 bis 1001 (entsprechend Ziffer 0 bis 9) sind zulässig,
BCD-Codes
alle Codes von 1010 bis 1111 sind unzulässig!
•
"Gepackte" BCD-Codes: hier werden 2 BCD-Ziffern in einem Byte codiert
•
"Ungepackte" BCD-Codes: hier wird für die Codierung einer BCD-Ziffer ein Byte
verwendet
•
Vorteil der BCD-Codierung: einfache Umcodierung dezimal--> BCD (z.B. durch
einen mechanischer Zifferneinsteller per Verdrahtung)
•
Nachteil der BCD-Codierung: Rechnen ist - sofern nicht von einem Rechner mit
BCD-Arithmetik unterstützt - schwieriger, da nach jeder Operation die Codierung
korrigiert werden muss
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Gepackte BCD
Ungepackte
BCD
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
Seite 25 von 33
2.4 Halbleiterspeicher und BUS-System
•
Nach der Betrachtung von Bitmustern, in denen - je nach Codiersystem unterschiedliche Informationen dargestellt werden, soll im Folgenden die
Speicherung solcher Informationen in einem Gedankenexperiment entwickelt
werden. Allerdings wird hier nur die prinzipielle Funktion dargestellt, eine
genauere technische Beschreibung findet sich in /Bermbach Seite 29 ff/.
•
Ausgangspunkt: einfachste Form eines Halbleiterspeichers für 1 Bit:
Zustand:
logische
"0"
Zustand:
logische
"1"
Abbildung 2-3: Ein-Bit-Speicher als Festwertspeicher (Read Only Memory,
ROM)
•
Read Only
Memory
ROM
Dieser Ein-Bit-Speicher wird mit einem Ansteuersignal verbunden, sodass der
jeweilige logische Zustand des Speichers über eine zweite Signalleitung als
Leseleitung ausgelesen werden kann:
Leseleitung
a0
1-BitSpeicher
Ansteuerung
Abbildung 2-4: Ein-Bit-Speicherzelle mit Ansteuer- und Lesesignal
•
Fügt man weitere Bitspeicher dazu, benötigt man für jeden Speicher eine eigene
Leseleitung; das Ansteuersignal ist für alle gemeinsam:
Leseleitung
a1
a0
1-BitSpeicher
Abbildung 2-5: Zwei-Bit-Speicher
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
•
Ergänzt man die Speicherzeile z.B. auf 8 Bit, so kann man diese Zeile parallel
auslesen über die 8 Leseleitungen: diese werden als Datenbus (DB) bezeichnet
•
Ergänzt man eine zweite Speicherzeile, benötigt diese ein eigenes Ansteuersignal.
Wird dieses aktiviert, sorgen (hier nicht weiter betrachtete) sogenannte Decoder
dafür, dass dann nur die Bitspeicher der zweiten Speicherzeile mit den DatenbusLeitungen verbunden werden
Seite 26 von 33
Datenbus
(DB)
Datenbus
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
1-BitSpeicher
Abbildung 2-6: Speicher mit zwei Byte
•
Wird die Anzahl der Speicherzeilen z.B. auf 8 erhöht, benötigt man zur Auswahl
der einzelnen Zeile zwar 8 Ansteuersignale, diese können aber aus drei Signalen
(A0, A1, A2) ganz einfach dekodiert werden: sind alle drei Signale Null, ist die
Zeile Nr. 0 anzusteuern; ist A1=A2=0 aber A0=1, so ist die Zeile Nr. 1 anzusteuern
usw. Mit 3 Signalen (A0, A1, A2) können 23 = 8 Zeilen ausgewählt d.h. adressiert
werden - die Signalzustände kodieren also als Dualzahl betrachtet die ZeilenNummer. Die Signale werden zusammengefasst als "Adreßbus" bezeichnet.
A2
A1
Adreßbus
(ADB)
A0
Datenbus
Adressbus
AdressDecoder
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
a7
a6
a5
a4
a3
a2
a1
a0
Speichermatrix
Abbildung 2-7: Schematischer Aufbau eines Speichers
•
Die "Breite" (=Anzahl Signalleitungen) des Datenbus' bestimmt also, wieviele Bits
parallel gelesen (oder geschrieben, siehe RAM) werden können.
•
Die "Breite" des Adressbus' bestimmt, wieviele Speicherzeilen (unabhängig von
deren Breite!) adressiert werden können. Dies wird im Folgenden, da nicht nur
Speicher als Teilnehmer am DB-/ADB auftreten können, allgemein als
"Adressraum" bezeichnet.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Adressraum:
Anzahl der
adressierbaren
Teilnehmer
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
•
Reale Speicherchips stellen also eine Matrix aus einzelnen Bit-Speichern zur
Verfügung. Die Größe solcher Chips ist aus dem Aufdruck abzulesen, angegeben
wird der Inhalt z.B. in KBit bzw. MBit; oft wird dabei auch die Organisationsform
mitangegeben, z.B. 128K x 8 Bit für einen byteweise organisierten Speicher mit
128 K Bits.
•
Der Adressbus eines Mikrocomputersystems spannt als Systemgröße einen
Adressraum auf, der jedoch - wie das nachfolgende Beispiel zeigt - nicht
vollständig "gefüllt" sein muss (mit Speicher, E-/A-Bausteinen usw.), und an dem
auch nicht nur Teilnehmer mit der gleichen "Breite" (z.B. 16-Bit-Breite, gemischt
mit 8-Bit-Breite) angeschlossen sein müssen.
Adressen
(Hexadez.)
15
7
Seite 27 von 33
Adressraum
und
Teilnehmer
0
0000 H
1FFF H
nicht belegt
Adressraum
des Systems
AFFF H
byteweise
organisiert
B0FF H
FFFF H
Abbildung 2-8: Adressraum eines Mikrocomputersystems (Beispiel)
•
Im Folgenden wird - wie oben gezeigt - das bereits eingeführte "Kästchenschema"
auf die Darstellung von Adressräumen und Speicher erweitert: außen werden die
Adressen in hexadezimaler Darstellung angegeben, oben die jeweilige Breite des
Teilnehmers in der Bit-Wertigkeit.
•
Informationen - bisher als Bitmuster ebenfalls in Kästchenform dargestellt können 4-Bit-Größe / 8-Bit-Größe / 16-Bit-Größe usw. besitzen und müssen
natürlich im Speicher eines Rechners abgelegt werden können. Ist die
Speicherbreite des Rechners genauso groß, wie die Breite der zu speichernden
Information, kann auf jedem Speicherplatz genau eine Information abgelegt werde.
•
Ist allerdings die Breite der zu speichernden Information größer als die Breite des
Speichers, muss die Information verteilt auf mehrere Adressen abgelegt werden.
•
Für diese Ablage existieren in der Praxis zwei verschiedene Verfahren (siehe
Abbildung auf der folgenden Seite):
1. "Little Endian": der niederwertige Teil der Information wird auf der
niederen Speicheradresse abgelegt, der höherwertige Teil auf
der höheren Speicheradresse
2. "Big Endian": der höherwertige Teil der Information wird auf der
niederen Speicheradresse abgelegt, der niederwertige Teil auf
der höheren Speicheradresse.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Little Endian
Big Endian
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
Seite 28 von 33
•
Die Ablage von Informationen verschiedener Größen (Byte, Wort, Doppelwort,
linke Seite von Abb. 2-9) ist für ein System, das nach "Little Endian" arbeitet, ist in
der rechten oberen Seite dargestellt; die Ablage von Byte/Wort/Doppelwort in
einem "Big Endian"-System ist in der rechten unteren Seite dargestellt
•
Little Endian wird u.a. von INTEL bevorzugt, Big Endian von Motorola, Siemens,
Sun.
7
ADB
und
DB
7A
D2
0
7A
C1
D2
A0
B1
C2
D3
31
C2
B1
15
Little
Endian
Little Endian
04 H
05 H
06 H
C1
7
D3
Adressen
00 H
01 H
02 H
03 H
ADB
und
DB
A0
7
0
0
7A
D2
C1
D3
C2
B1
A0
Adressen
00 H
01 H
02 H
03 H
Big
Endian
Big Endian
04 H
05 H
06 H
Abbildung 2-9: Datenablage im Speicher nach Little/Big Endian
•
Die Information, ob das einzelne Speicherbit eine "0" oder "1" beinhaltet, kann
bereits bei der Herstellung der Integrierten Schaltkreise durch entsprechende
Gestaltung der Belichtungsmasken festgelegt werden: "Maskenprogrammierte
Read Only Memory". Problem: keine nachträgliche Änderung möglich; wegen
Grundaufwand in der Herstellung nur bei großen Stückzahlen sinnvoll.
•
In der Praxis werden häufiger "Programmable Read Only Memory" (PROM)
eingesetzt: diese besitzen "fusible links" (siehe Abb. 2-3), die mit einer speziellen
Programmierspannung "durchgebrannt" werden können; in der Regel allerdings
nur einmal, daher die Bezeichnung "One Time Programmable" (OTP).
•
Für die Testphase eines Programms sinnvoll: immer wieder löschbare, Nur-LeseSpeicher, die "Erasable Programmable Read Only Memory" (EPROM). Hier wird
für die Speicherung eines Bit eine Ladung verwendet, die auf ein isoliertes Gate
eines speziellen Feldeffekt-Transistors (FET) aufgebracht wird. Zum Löschen
besitzen EPROM-Chips ein Quarzfenster. Bestrahlt man den Chip mit UV-Licht,
wird durch erhöhte Ladungsträgerzahl die gespeicherte Ladung nach ca. 20
Minuten abgebaut, die gespeichert Information ist gelöscht
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
ROM:
maskenprogr.
PROM,
OTP
EPROM
V 1.00
Mikrocontroller
•
2.4 Halbleiterspeicher und BUS-System
Wegen des Quarzfensters, das ein Keramikgehäuse bedingt (teuer) und die weitere
Miniaturisierung des Gehäuses verhindert, sowie wegen der umständlichen
Handhabung beim Löschen werden EPROMs heute weitgehend ersetzt durch
"Electrical Erasable Read Only Memory" (EEPROM): ähnliche Technologie wie
EPROM, jedoch kann das "Floating Gate" des FET elektrisch entladen werden.
Damit können also - ohne die Speicherchips auszubauen - einzelne Speicherzeilen
umprogrammiert werden. Allerdings ist der Schaltungsaufwand zur Ansteuerung
der einzelnen Speicherbits hoch: die Kapazität der EEPROMs ist grundsätzlich
kleiner als bei ROM und EPROM. Das im laufenden Betrieb mögliche
Einschreiben neuer Informationen in das EEPROM ist wegen der erforderlichen
Umprogrammierzeit (z.B. 0,2 bis 1 ms pro Byte) beschränkt. Moderne EEPROMs
erzeugen die Programmierspannung, die wie bei dem EPROM gegenüber den
normalen Betriebsspannungen erhöht ist, intern.
•
Das "Flash EPROM" ist eine Weiterentwicklung des EEPROMs, es erlaubt ein
blockweises oder sogar chipweises Löschen der Inhalte in < 1 Sekunde. Damit ist
dieses Speicherprinzip in die Nähe eines echten "Schreib-/Lesespeichers" gerückt.
Allerdings muss dann - wegen der maximal zulässigen Anzahl von
Umprogrammiervorgängen (derzeit: ca. 100 000) - sichergestellt werden, dass der
Speicher sozusagen gleichmäßig abgenutzt wird.
•
Speicher, die jederzeit und mit der maximalen Geschwindigkeit, die die jeweilige
Halbleiter-Technologie ermöglicht, neu beschrieben werden können, sind die
"Random Access Memory" (RAM, Speicher mit wahlfreiem Zugriff).
•
Seite 29 von 33
EEPROM
Flash-EPROM
RAM
Die Informationsspeicherung beruht beim statischen RAM auf zwei
gegengekoppelten FET-Transistoren ("Flip-Flop"): ein Transistor ist
durchgesteuert und hält dadurch den anderen im gesperrten Zustand. Soll die damit
statisches
gespeicherte Information umgekehrt werden, muss man den gesperrten Transistor
RAM, SRAM
in den durchgeschalteten Zustand bringen - dadurch wird der bisher
durchgeschaltetet Transistor dann gesperrt ("Bistabile Kippstufe"). Zur
Speicherung eines Bits werden also zwei Transistoren benötigt. Das
Prinzipschaltbild eines solchen Bitspeichers ist in der nachfolgenden Abbildung
dargestellt.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
Seite 30 von 33
Zeilen-Anwahlleitung
Abbildung 2-10: Prinzipieller Aufbau einer statischen RAM-Zelle
•
T1, T2 bilden das Flipflop; zum Auslesen des Zustandes müssen T3, T4 über die
Zeilen-Anwahlleitung durchgeschaltet werden, worauf der Zustand an der
Datenleitung Di erscheint (invertiert nochmal an /Di ) Das Schreiben erfolgt
ebenfalls mit T3, T4 und einem entsprechenden Potential an Di .
•
SRAM zeichnen sich durch höchste Schreib-/Lesegeschwindigkeit und minimalen
Stromverbrauch aus.
•
Der Platzbedarf einer RAM-Zelle kann von 6 Schaltelementen auf 2 verkleinert
werden, wenn man die Information über das einfache Aufladen eines Kondensators
speichert: Dynamisches RAM (DRAM).
SRAM
DRAM
Abbildung 2-11: Prinzipieller Aufbau einer dynamischen RAM-Zelle
•
Problem: die RCSP-Zeitkonstante ist sehr klein, der Inhalt der Speicherzelle muss
ständig durch Auslesen+Wiedereinschreiben aufgefrischt ("Refresh") werden.
Dazu besitzen diese Chips eine interne Refresh-Logik (Zeitabstände: 1 -20 ms).
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
•
In Abb. 2-12 sind RAM- und ROM-Speicher abschließend als Blockschaltbilder
dargestellt.
•
Zur Interpretation von Blockschaltbildern in der Mikrorechnerwelt:
Seite 31 von 33
Dünne Pfeile in Blockschaltbildern stellen Einzelsignale dar,
Blockpfeile stellen BUS-Signale, also eine Vielzahl von Einzelsignalen, dar.
Blockschaltbilder
Abbildung 2-12: Speicher als Blockschaltbild
•
•
•
Jeder Speicherbaustein besitzt als Einzelsignal ein Chipselect (CS). Mit diesem
Signal wird der Baustein aktiviert; ist das Signal nicht aktiv, "hört" der interne
Dekoder des Bausteins nicht am Adressbus mit. Das CS-Signal (gelegentlich auch
als Chip enable CE bezeichnet) ermöglicht damit, mehrere, kleine Speicher an
einen Adressbus mit einem wesentlich größeren Adressraum anzuschließen.
Im Blockschaltbild des RAM-Bausteins ist gegenüber dem ROM zusätzlich ein
Lese-/Schreibsignal sichtbar: dies schaltet die Richtung des
Informationstransports über den Datenbus um.
Der RAM-Baustein wird über interne Verstärker an die einzelnen Leitungen des
Datenbus' angeschlossen; diese müssen in beide Richtungen (lesen/schreiben)
arbeiten können; man nennt sie deshalb"bidirektionale BUS-Treiber". Zur
Entkopplung von den BUS-Leitungen werden meist "Tristate"-BUS-Treiber
verwendet: diese haben gegenüber dem BUS-Signal nicht nur die Zustände "low" /
"high", sondern auch den Zustand "hochohmig". Damit werden auch die SignalAnstiegsgeschwindigkeiten verbessert (gegenüber dem "Open Collector"Busanschlussverfahren). Mit einem Signale "Output enable" (OE, oben nicht
dargestellt) können die Ausgangstreiber deaktiviert werden.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
Steuersignale:
Chipselect, CS
Chip enable
CE
Read/Write
BUS-Treiber
Tristate
Output enable
OE
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
•
Neben den eigentlichen DB-/ADB-Leitungen gehören zu einem vollständigen
BUS-System also noch eine Reihe von Steuersignalen; diese fasst man unter dem
Begriff "Steuerbus" (Control BUS) zusammen
•
Das BUS-System verbindet die Teilnehmer eines Mikrocomputersystems, die
Daten parallel miteinander austauschen. Diese Teilnehmer können am BUS aktiv
sein (also lesen und schreiben): "BUS-Master". Oder sie nehmen passiv am BUS
teil, können also nur ausgelesen oder beschrieben werden: "BUS-Slave".
•
Im einfachsten Fall gibt es im Mikrocomputersystem einen Master, den
Mikroprozessor, und mehrere Slaves, z.B. Speicherbausteine.
•
Der Informationsaustausch über ein BUS-System muss grundsätzlich immer über
ein genau festgelegtes Verfahren, ein BUS-Protokoll, auch BUS-handshake
genannt, erfolgen. Möglichkeiten:
Seite 32 von 33
Steuerbus
BUS-System
BUS-Master
BUS-Slave
BUSProtokolle
1. Synchrones BUS-Protokoll
2. Semi-Synchrones BUS-Protokoll
3. Asynchrones BUS-Protokoll (wird nicht weiter betrachtet)
•
Genauso wie alle Mikroprozessoren von einem Takt gesteuert arbeiten, wird auch
die zeitliche Abfolge des Informationsaustausches über den BUS von einem Takt
gesteuert (muss nicht derjenige des Prozessors sein!).
Zu 1.: Synchron, d.h. alle Teilnehmer haben gleiches Zeitverhalten
T1
T2
Synchrones
BUS-Protokoll
Takt
ADB
DB
/RD
/WR
Abbildung 2-13: BUS-Zugriff (lesend) für synchrones Protokoll
Erklärungen:
T1, T2:
BUS-Takte (pro 1 Takt oft mehrere
Oszillator-Takte)
Dünne Striche:
Einzelsignale, Doppelstriche: BUS-Leitungen
kreuzende BUS-Striche: Einschwingzeit der Signale
Schrägstrich:
vor einem Einzelsignal (z.B. /RD) bedeutet es,
dass das Signal "low aktiv" ist, d.h. es ist dann
aktiv, wenn sein Zustand "low" ist.
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00
Mikrocontroller
2.4 Halbleiterspeicher und BUS-System
Seite 33 von 33
Zeitlicher Verlauf der Signale:
1. Der Prozessor (Master) legt die Adresse als Signalzustände auf die
einzelnen ADB-Leitungen, dort bleiben sie für T1 und T2 dauerhaft.
Gleichzeitig teilt der Prozessor den Lesewunsch mit, indem er das
Read-Signal /RD auf "low" stellt. Der Datenbus ist in T1 noch in
seinem Tristate-Zustand
2. Der angesprochene (adressierte) Speicher muss in T2 den
Speicherinhalt, also das adressierte Datum, auf die DB-Leitungen
aufschalten. Der Speicher arbeitet also synchron zum Takt.
3. An der positiven Flanke von /RD (am Ende von T2) übernimmt der
Prozessor die Signalzustände vom DB in einen internen Puffer
(Register). Das Write-Signal /WR ist die ganze Zeit inaktiv.
Zu 2. Semi-synchron, d.h. es gibt langsamere Teilnehmer
T1
T2
TW
BUS-Timing
Timing mit
einem
Waitstate
Takt
ADB
DB
/RD
/WR
/READY
Abbildung 2-14: BUS-Zugriff (schreibend) für semi-synchrones Protokoll
Zeitlicher Verlauf der Signale:
1. Beginn ist wie im synchronen Beispiel. Der Prozessor teilt seinen
Schreibwunsch durch ein aktives WRITE-Signal /WR mit und legt das
zu schreibende Datum in T1 auf den DB. Allerdings liegt z.B. die
adressierte RAM-Speicherstelle in einem langsamen Speicher. Dieses
Verhalten erfordert ein zusätzliches Steuersignal /Ready, das in T1
und T2 noch nicht aktiviert ist.
2. Der Prozessor wartet auf das Ready, indem er einen "Waitstate"
einlegt (hier können im Prinzip unendlich viele Waitstates eingelegt
werden). Der Speicher arbeitet also nicht synchron zum Takt.
3. In TW ist der Speicher bereit und signalisiert dies durch die
Aktivierung von /READY
4. Am Ende von TW schreibt der Prozessor mit der positiven Flanke des
/WR-Signals
HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik
Dr. J. Hülsemann
V 1.00