13
Hochschule Karlsruhe Fakultät Elektro- und Informationstechnik Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann Inhalt: 3 Architektur eines Mikrocomputersystems, Beispiel: 80x86 ...................... 2 3.1 Funktionselemente und Arbeitsweise ............................................................. 2 3.2 Befehlsbearbeitungsphasen ............................................................................. 6 3.3 Peripheriebausteine, Beispiel: Portbaustein .................................................. 11 Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur eines Mikrocomputersystems am Beispiel 80x86

Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Embed Size (px)

Citation preview

Page 1: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Hochschule Karlsruhe Fakultät Elektro- und Informationstechnik Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

Inhalt:

3 Architektur eines Mikrocomputersystems, Beispiel: 80x86 ......................2 3.1 Funktionselemente und Arbeitsweise .............................................................2 3.2 Befehlsbearbeitungsphasen .............................................................................6 3.3 Peripheriebausteine, Beispiel: Portbaustein ..................................................11

Skriptum „Mikrocontroller-Systeme“

Kapitel 3:

Architektur eines

Mikrocomputersystems am Beispiel 80x86

Page 2: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.1 Funktionselemente und Arbeitsweise Seite 2 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

3 Architektur eines Mikrocomputersystems, Beispiel: 80x86

Vorbemerkung: Den im Folgenden als Beispiel verwendeten Mikroprozessor "8086" (INTEL) und seine in den letzten 25 Jahren daraus abgeleiteten Prozessoren mit einer "80x86"-Architektur bezeichnet man als "Standardprozessor", da er mit immer kompatibel weiterentwickeltem Befehlssatz für allgemeine Aufgaben verwendet wird. Diese Bezeichnung wird auch für Prozessortypen anderer Hersteller verwendet (z.B. Motorola), die ebenfalls eine jahrzehntelang weiterentwickelte Familie bilden.

3.1 Funktionselemente und Arbeitsweise

• Anhand einer einfachen Aufgabe wird im Folgenden die prinzipielle Arbeitsweise eines Mikroprozessors entwickelt. Dabei sollen die wichtigsten Funktionselemente, die der Mikroprozessor dazu benötigt, vorgestellt werden.

Beispiel: Es soll ein Programm entwickelt werden, das zwei Zahlen (Datentyp: INT) addiert und die Summe abspeichert. In 'C' wäre die Formulierung: ..... int ANNA, BERTA, CAESAR; CAESAR = ANNA + BERTA;

• Der C-Compiler übersetzt dieses Programm in einen "Maschinencode" (Operation Code OPCODE): dies ist eine Ansammlung von Befehlen, die der Mikroprozessor, der das Programm ausführen soll, direkt "versteht". Hierbei handelt es sich um eine 1:n-Übersetzung; eine Zeile der Hochsprache entspricht n Zeilen im Maschinencode.

• Diese Maschinencodes bestehen aus Bitmustern, die im Speicher eines Mikrocomputersystems abgelegt werden. In diesen Bitmustern sind neben den Maschinenbefehlen auch die Operanden (im oberen Beispiel: die Werte der Variablen ANNA, BERTA, CAESAR) verschlüsselt.

• Der Mikroprozessor holt nun Befehl nach Befehl aus dem Speicher, führt die Addition aus, und transportiert das Ergebnis wieder in den Speicher. Damit ist diese eine 'C'-Programmzeile bearbeitet.

Maschinen-code Operation Code, OPCODE

Page 3: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.1 Funktionselemente und Arbeitsweise Seite 3 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

• Die Hersteller der Mikroprozessoren haben nicht nur die Bitmuster der Befehle, die der Prozessor beherrscht, definiert, sondern auch zu jedem Maschinencode eine für den Menschen leicht merkbare Bezeichnung ("Mnemonik") festgelegt. Mit dieser lesbaren Form der Maschinenbefehle, den sogenannten "Assemblerbefehlen", kann man ein Programm für einen Mikroprozessor direkt - also ohne Compiler - erstellen.

Beispiel für einen Assemblerbefehl: MOV A , ANNA ; Transferbefehl, kopiert die Größe rechts vom

Komma in die Größe links vom Komma; die Menmonik für diesen Befehl ist also "MOV"

• Ein solches Assembler-Programm kann man dann per Hand mit der Hilfe einer Übersetzungstabelle in die zugehörigen Bitmuster (bzw. deren hexadezimaler Darstellung) übersetzen - da allerdings dieses "Zusammensuchen" (engl.: to assemble) eine für den Menschen langwierige und fehlerträchtige Arbeit darstellt, überlässt man diese einem Programm das sich "ASSEMBLER" nennt.

• Der Assembler übersetzt also Assembler-Befehle 1:1 in Maschinenbefehle

• Im Folgenden ist dies am obigen Additionsbeispiel schematisch dargestellt:

High Level Language (HLL)

"C"

CAESAR = ANNA + BERTA; 1 : n

Der

ASSEMBLER

0110 1001

1110 0110

0010 1010

0101 1011

Maschinencode (OPCODE) des Prozessors 8086

C-Compiler

MOV AX , ANNA

MOV BX , BERTA

ADD AX , BX

MOV CAESAR , AX

Assembler-Sprache des Prozessors

8086 0110 1001

1110 0110

0010 1010

0101 1011

1 : 1

Abbildung 3-1: C, Assembler und OPCODE

Assembler-Befehle

Der ASSEMBLER

Page 4: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.1 Funktionselemente und Arbeitsweise Seite 4 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

Fortsetzung des Beispiels: Das Programm wird jetzt abgelegt im Speicher eines Mikrocomputersystems. Dabei wird angenommen, dass es Befehl für Befehl auf Speicherplätzen eines ROMs, beginnend mit der Adresse 00000 H, platziert wird, während im Adressraum des Systems (ab den Adressen 003A0 H) RAM-Speicher vorhanden ist, in dem die Variablen (ANNA, BERTA, CAESAR) gespeichert sind.

Abbildung 3-2: Mikroprozessor 8086 und Speicher (Prinzipdarstellung)

• Der Mikroprozessor adressiert über den Adressbus den ersten Befehl, liest diesen über den Datenbus ein und übergibt den OPCODE des Befehls der Befehlsausführungs-Steuerung

• Die Befehlsausführungs-Steuerung steuert die internen Abläufe des Prozessors. Für die Bearbeitung eines Befehls werden - je nach Prozessortyp - ein oder mehrere Takte benötigt.

Beispiel: Der Befehl MOV AX , ANNA wird im 8086 in 10 Takten abgearbeitet. Diese sind notwendig, um die Adresse des Operanden "ANNA" auszugeben, diesen einzulesen, und über die internen Datenwege zum Ablageort "AX" zu kopieren.

• Für die Prozessor-interne Ablage von Daten hat jeder Prozessor "Register": dies sind RAM-Speicherzellen, auf die mit der maximalen Arbeitsgeschwindigkeit zugegriffen werden kann. Aus Platzgründen ist ihre Anzahl immer wesentlich kleiner, als im externen Adressraum. Sie werden über symbolische Namen angesprochen, deren Mnemonik vom Hersteller in der Assemblersprache bereits festgelegt wurden (z.B. "AX, BX,...").

Befehlsausf.-Steuerung

Register

Page 5: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.1 Funktionselemente und Arbeitsweise Seite 5 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

• Die eigentliche Bearbeitung von Daten im Rahmen einer Befehlsbearbeitung findet im "Operationswerk" des Prozessors statt. Die in Registern gespeicherten Operanden eines Befehls werden hier arithmetisch / logisch verknüpft. Das Ergebnis muss dann anschließend mit weiteren Befehlen versorgt werden.

Beispiel: Wenn mit der Befehlsfolge MOV AX,ANNA MOV BX, BERTA die beiden Operanden in den Registern AX und BX intern im Prozessor vorliegen, können mit dem Befehlen ADD AX, BX die beiden Operanden addiert werden. Auch dieser Befehl folgt der Regel: Funktion Zieloperand , Quelloperand Die Summe wird also im Register AX abgelegt; der alte Inhalt von AX wird dabei überschrieben (der Inhalt von BX bleibt erhalten). Die Summe muss jetzt "entsorgt" werden, dies geschieht mit dem Befehl: MOV CAESAR , AX ; hier wird die Summe im ; externen Speicher ; abgelegt.

möglich wäre auch: MOV CX , AX ; hier wird die Summe in , einem Register abgelegt.

• Die Grundaufgabe eines jeden Prozessors ist damit bereits sichtbar geworden:

Befehl holen ("Fetch") Befehl ausführen ("Execute")

• Diese Aufgabe führt der Mikroprozessor zyklisch aus - sobald er mit Strom versorgt wird und das RESET-Signal deaktiviert ist (nach dem RESET beginnt der Prozessor von sich aus bei einer vom Hersteller vorgegebenen Startadresse, meist die 0000H)

• Jeder Befehl ist in seiner Bearbeitung in immer wiederkehrende Befehlsbearbeitungsphasen unterteilt, die auch als Zyklen der Befehlsbearbeitung bezeichnet werden.

Operations-werk Operanden Quelloperand, Zieloperand

Mindest- Zyklen der Befehlsbearb.

Page 6: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.2 Befehlsbearbeitungsphasen Seite 6 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

3.2 Befehlsbearbeitungsphasen

• Im Folgenden werden die einzelnen Befehlszyklen näher betrachtet; dabei werden weitere Funktionselemente des Mikroprozessors sichtbar werden.

• Der Befehls-Hol-Vorgang (Fetch, OPCODE-Fetch) ist nichts anderes als ein Lesen einer Speicherzelle, deren Inhalt einen Befehlscode (OPCODE) darstellt. Dazu muss die Adresse dieser Speicherzelle zuvor auf den Adressbus gelegt werden. Der Prozessor verwaltet die Adresse des nächsten, auszuführenden Befehls in einem Register, dem Befehlszähler (IP, Instruction Pointer oder PC, Program Counter). "Befehl adressieren" ist damit gleichbedeutend mit "IP mit dem Adressbus verbinden" (und über den Steuerbus das Lesesignal zum Speicher aktivieren). Am Ende eines jeden Befehls berechnet die Befehlsausführungs-Steuerung die Adresse des nächsten Befehls.

• Stellt der Speicher den Befehlscode über den Datenbus zur Verfügung, wird er von dort in ein internes Befehlsregister übernommen. Die Befehlsausführungs-Steuerung decodiert das Bitmuster des Befehls und führt die Befehlsausführung (Execute) durch.

Beispiel: Der Befehl INC AX inkrementiert das Register AX (Inhalt wird um 1 erhöht) Bei diesem Befehl ist nach dem Fetch nur der Execute-Zylus notwendig

• Benötigt der Befehl allerdings externe Operanden, müssen diese eingelesen oder auch zurückgeschrieben werden; dazu werden als weitere Befehlszyklen Read und Write benötigt.

Beispiele: Der Befehl MOV AX , ANNA führt nach dem Fetch einen Read-Zyklus für die Speichervariable ANNA aus. Der Befehl MOV CAESAR , AX führt nach dem Fetch einen Write-Zyklus auf die Speichervariable CAESAR aus

Fetch IP: Instruction Pointer = PC: Program Counter Execute

Read Write

Page 7: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.2 Befehlsbearbeitungsphasen Seite 7 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

• Weitere Kombinationsmöglichkeiten zeigt Abb. 3-3: hier wird auch deutlich, warum die Anzahl der für einen Befehl benötigten Takte stark unterschiedlich sein kann.

Abbildung 3-3: Kombinationsmöglichkeiten von Befehlszyklen

• Die Adresse des nächsten, auszuführenden Befehls muss am Ende einer jeden Befehlsbearbeitung berechnet werden, da die einzelnen Befehle unterschiedliche Größe haben: z.B. 1-Byte-Befehle, 2-Byte-Befehle usw. Wären alle Befehle von gleicher Größe, könnte die Befehlsausführungssteuerung einfach den Instruction Pointer inkrementieren. Sprünge, Unterprogrammaufrufe und Interrupts (siehe Kap. 7 und 8) führen jedoch immer zu einem Eintrag der Sprungziel-Adresse in den IP.

• Das Blockschaltbild eines 8086-Mikroprozessors in Abb. 3-4 zeigt - neben den bereits betrachteten Funktionselementen - das Operationswerk etwas detaillierter.

Page 8: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.2 Befehlsbearbeitungsphasen Seite 8 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

Abbildung 3-4: Aufbau des Mikroprozessors 8086

• Das Operationswerk besteht aus einer Anzahl von Registern, in denen Operanden zwischengespeichert werden, bevor sie einer ALU (Arithmetical Logical Unit) zugeführt werden. Diese ALU führt die Verknüpfung der Operanden durch (d.h. Addition / Subtraktion / Multipl. / Division / Logische Verknüpfungen / Schiebenfunktionen).

• Die Verknüpfungsergebnisse werden - je nach Befehlstyp - über den internen BUS in Registern oder externen Speichern abgelegt.

• Je nach Befehl werden Anzeige-Bits (Flags) gesetzt, die in einem speziellen Register (Program Status Word PSW) zusammengefasst sind (in der Abb. als "Kennzeichen-FlipFlop" bezeichnet). Flags haben zwei grundsätzlich verschiedene Wirkungsrichtungen:

vom Prozessor zum Programm (Anzeigefunktion) oder vom Programm zum Prozessor (Steuerfunktion)

• Flags mit anzeigender Bedeutung werden vom Mikroprozessor während der Befehlsbearbeitung beeinflusst und können programmtechnisch ausgewertet werden (z.B. durch bedingte Sprünge). Beispiele für solche Flags:

Carry (Funktion: siehe Kapitel 2) Overflow (Funktion: siehe Kapitel 2) Parity: zeigt an, ob Ergebnis gerade/ungerade Anzahl von "1" hat (genaue Definition ist Prozessor-abhängig) Auxiliary Carry: Übertrag bzw. Borgen von Bit 23 nach Bit 24 Zero: Zeigt an, ob Ergebnis =0 ist Sign: Zeigt an, ob MSB = 1 ist

ALU Flags: im PSW Flags als Anzeigen

Page 9: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.2 Befehlsbearbeitungsphasen Seite 9 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

• Flags mit steuernder Bedeutung (Control Flags) werden im Programm gesetzt oder rückgesetzt. Der Prozessor wertet die Zustände dieser Flags bei der weiteren Programmbearbeitung aus und ändert sein Verhalten entsprechend. Beispiele für steuernde Flags:

Interrupt Enable: Wirkt wie ein Schalter, der die Interruptbearbeitung sperrt oder freigibt (siehe Kapitel 8.2). Trap: nach jeder Befehlsausführung führt der Prozessor einen Sprung in ein bestimmtes Programm aus (dient zur Einzelschrittbearbeitung)

Hinweise: 1. Nicht jeder Prozessortyp verwendet alle hier genannten Flags 2. Einzelne Flags können - abhängig vom jeweiligen Befehl - in einem Prozessor völlig unterschiedliche Bedeutung haben (siehe Operationsliste)

• Gerade Mikrocontroller haben meist eine Vielzahl von Steuerflags für die auf dem Chip integrierten Bausteine. Diese sind - wie auch die Anzeigenflags - in byte- oder wortgroßen Registern zusammengefasst.

• Deshalb muss man auch bei den Registern eines Prozessors unterscheiden zwischen:

Universalregister (Scratch Pad): werden als interne, beliebig auswechselbare Zwischenspeicher für Daten vom Programmierer benutzt (z.B. AX, BX...)

Pointer-Register: werden vom Prozessor benutzt, können aber vom Programmierer beeinflusst werden, wie z.B. Instruction Pointer, Stackpointer (siehe Kapitel 7.3)und weitere Zeigerregister. Diese Register werden vom Programm initialisiert und anschließend vom Prozessor benutzt und manche sogar selbständig verwaltet (IP), sind also nicht geeignet zur Zwischenspeicherung von Anwender-Daten.

Spezial-Funktions-Register (SFR): beinhalten Status- und Steuerflags

• In Abb. 3-4 ist eines der Register besonders gekennzeichnet als "Akkumulator", auch Akku bzw. im Befehl als AX bezeichnet. Die Sonderstellung dieses Registers bei vielen, einfachen Mikroprozessoren hat historische Gründe: die einfachste Architektur eines Mikroprozessors hatte eine starre "Verschaltung" der ALU mit einem speziellen Register, eben diesem "Akku".

• Wie die folgende Abbildung zeigt, werden die zwei Operanden für eine arithmetische oder logische Verknüpfung der ALU grundsätzlich von zwei Registern aus zugeführt. Das eine dieser Register ist unveränderlich mit der ALU verbunden: diese ist der Akku. Das andere Register kann aus den Universalregistern beliebig ausgewählt werden. Darüber hinaus wird das Ergebnis, das die ALU berechnet, zwangsweise wieder zurückgeschrieben in den Akku. Dieses Merkmal eines Mikroprozessors nennt man "Akkumulator-Architektur" oder kurz "Akku-Maschine".

• Oft haben Mikroprozessoren dieses Architekturmerkmal in abgeschwächter Form - wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU aus beliebigen Universal-Registern stammen, einige wenige Befehle erfordern aber dann doch den Akku als einen der beiden Operanden.

Flags zum Steuern Bedeutung der Flags: immer im Prozessor-Handbuch nachschlagen! Register-Typen: Universal-Register Pointer-Register Special Function Register SFR Akku

Architektur-merkmale: AKKU-Maschine

Page 10: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.2 Befehlsbearbeitungsphasen Seite 10 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

ALU

AKKU

beliebiges Register Abbildung 3-5: Prinzip der "Akkumaschine"

• Ein weiteres Architekturmerkmal des bislang betrachteten 8086 zeigt sich, wenn man in Abb. 3-3 die Befehlskombinationen untersucht auf die Verwendung von externen Speicherzellen als Operanden (ANNA, BERTA, CAESAR): man kann zwar eine externe Variable in ein Register kopieren (und umgekehrt), man kann sogar eine externe Variable zu einem Register addieren und das Ergebnis wieder an dieselbe externe Variable zurückschreiben; man kann aber nicht zwei verschiedene, externe Variablen in einem Befehl verwenden.

Beispiel für nicht zulässige Operanden-Kombinationen (8086): MOV ANNA , BERTA ADD CAESAR , BERTA

• Dieses Architekturmerkmal des 8086 nennt man "Einadressmaschine": in einem Befehl kann nur ein Operand direkt aus dem Speicher kommen.

• Derartige Architekturmerkmale eines Prozessors kann man im Allgemeinen direkt aus seinem Blockschaltbild ablesen (wie z.B. auch die Anzahl der im Prozessor vorhandenen Universalregister). Sie sind ein erstes Entscheidungskriterium bei der Auswahl eines Prozessors für eine bestimmte Aufgaben.

Architektur-merkmal: Einadress-maschine

Page 11: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.3 Peripheriebausteine, Beispiel: Portbaustein Seite 11 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

3.3 Peripheriebausteine, Beispiel: Portbaustein • Mit den bisher betrachteten Komponenten lässt sich zwar ein funktionierendes

Mikrocomputersystem aufbauen, das aus dem (Standard-)Prozessor sowie Programm- und Datenspeicher besteht, die durch ein BUS-System miteinander verbunden sind. Dieses System könnte aber lediglich - ganz sinnlos - vorhandene Daten im Speicher bearbeiten: es fehlt eine Verbindung (Schnittstelle, Interface) zur Außenwelt (Peripherie), über die digitale Informationen bitweise übertragen werden können.

• Die einfachste Möglichkeit der Ankopplung eines Mikrocomputersystems an die Peripherie besteht in der direkten Verbindung der Datenbusleitungen (über Bidirektionale Bustreiber) mit Halbleiter-Zwischenspeichern (Latches). Über eine solche Schnittstelle können digitale Informationen parallel übertragen werden (Parallel-Interface) Diese direke Busankopplung wird hier nicht weiter betrachtet.

• Flexibler und damit an beliebige Prozessoren anpassbar sind programmierbare, parallele Schnittstellenbausteine (PPI, Programmable Peripheral Interface), auch "Portbaustein" genannt (Beispiel: siehe Abbildung auf der folgenden Seite).

• Dieser Typ von "intelligenten" Bausteinen, die Vorverarbeitungsleistung für den Mikroprozessor erbringen, nennt man auch "Controller", hier I/O-Controller.

• Prinzip: Der Mikroprozessor schreibt ein Byte über den Datenbus z.B. in das Register "A" (=Port A) des Portbausteins. Anschließend wird dann dieses Bitmuster dauerhaft als Signalzustand an den PINs des 8255 ausgegeben: das Port A wirkt also wie ein Ausgang des Mikrocomputersystems. Umgekehrt können z.B. an den PINs des Port "B" acht Signale angelegt werden, deren Signalzustände als "0" oder "1" im Register des Port "B" erscheinen und von dort über den Datenbus vom Prozessor eingelesen werden können: dann wirkt das Port "B" als Eingang des Mikrocomputersystems

• Ob ein Port eines E/A-Bausteins als Eingang oder als Ausgang funktioniert, muss dem Baustein nach dem Einschalten (also nach der Deaktivierung des RESET-Signals) mitgeteilt werden; deshalb: "Programmierbarer" E/A-Baustein. Zu diesem Zweck hat der Baustein neben den eigentlichen Port-Registern (hier: A, B, C) ein weiteres Register, das "Steuerwort-Register" (control word). Hier muss vom Mikroprozessor ein Bitmuster eingeschrieben werden, das die Funktion des PPI festlegt. Welcher Betriebsmodus ein PPI beherrscht, muss dem Manual des jeweiligen Bausteins entnommen werden

Beispiel: Der 8255 kennt drei Betriebsarten: - Ein-/Ausgabe über die drei Ports, diese sind dabei unabhängig voneinander als E- bzw. A-Kanäle verwendbar. - Port A und B werden als parallele Eingabe bzw. Ausgabeschnitt- stelle benutzt; die zur Kommunikation erforderlichen Handshake Signale werden über Port C geführt. - usw. Hinweis: Nach einem RESET ist das Steuerwortregister gelöscht, alle Port-PINs nehmen den Zustand "1" an

Interface: Schnittstelle zwischen System und Peripherie Latch Parallel-Interface PPI Port-Baustein I/O-Controller Steuerwort-Register des Portbausteins RESET des PPI-Bausteins

Page 12: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.3 Peripheriebausteine, Beispiel: Portbaustein Seite 12 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

Abbildung 3-6: Programmierbarer E/A-Baustein (Intel 8255)

Erklärung: Do - D7: Datenbus /RD: Lese-Steuersignal ("low-aktiv") /WR: Schreibsignal A0, A1: Adressleitungen, Bit 0 und Bit 1 des Adressbus' RESET: Rücksetzsignal /CS: Chip-Select Hinweis: Mit A0, A1 können die internen Register A, B, C und control wort adressiert werden; jedoch muss zusätzlich ein externer Adressdekoder die höheren Adressleitungen auswerten, um über /CS den Baustein dann zu aktivieren, wenn seine Gesamt-Adresse (z.B. A0 - A15) auf dem Adressbus anliegt.

• Für den Anschluss eines E/A-Bausteins an ein Mikrocomputersystem existieren zwei verschiedene Verfahren:

"Memory Mapped" "I / O Mapped"

Page 13: Skriptum „Mikrocontroller-Systeme“ Kapitel 3: Architektur ...geju0001/Mikrocontroller-Skript/3... · wie z.B. der 8086 -, dann können zwar meist beide Operanden für die ALU

Mikrocontroller 3.3 Peripheriebausteine, Beispiel: Portbaustein Seite 13 von 13

HS Karlsruhe, Studiengang Energie- und Automatisierungstechnik Dr. J. Hülsemann

V 1.00

• Bindet man einen Port-Bausteins über den Datenbus und den Adressbus in ein Mikrocomputersystem ein, also auf die gleiche Weise wie einen Speicherbaustein, nennt man das Verfahen "Memory Mapped" ("Speicherbezogene Ein-/Ausgabe").

Abbildung 3-7: Adressierung eines E/A-Bausteins im System, "Memory Mapped"

Erklärung: In der Abbildung ist der für die Dekodierung der Adressleitungen A2-A15 (Annahme: ADB mit 16 Adressleitungen) benötigte, externe Adressdekoder sichtbar, der für den Portbaustein das Chipselect-Signal bildet.

• Aus der Sicht des Programms spricht man bei der "Memory Mapped"-Adressierung die Register des Portbausteins schreibend und lesend unter ihren Adressen an, genauso als wären es Speicherzellen.

• Vorteil des Memory Mapped: alle Befehle des Prozessors - auch solche, die "Read+Execute+Write" benötigen (siehe Abbildung 3-3) - können auch für diese E/A-Register verwendet werden.

• Nachteil: die E/A-Größen verkleinern den Adressraum des Prozessors. Zugriffe auf Peripherie sind im Programm nicht direkt als solche zu erkennen.

• Das "I / O Mapped I / O"-Verfahren ("Isolierte Ein-/Ausgabe") bindet zwar den E/A-Baustein an den gemeinsamen Daten- und Adressbus des Systems an, sodass eigentlich eine Adressüberlappung zwischen dem "I/O"- und dem "Memory"-Adressraum entsteht, jedoch wird über eine zusätzliche Steuerleitung zwischen Memory-Zugriffen und I/O-Zugriffen unterschieden.

Memory Mapped I/O

I/O Mapped I/O