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