IT-Systeme
- Hauptseite
- Übung 1
- Selbsttest Schaltfunktionen
- Selbsttest Logische Bausteine
- Selbsttest Programmierbare Systeme
- Selbsttest Assembler
- Selbsttest Peripherie
- Selbsttest PC
Kompetenzen
- Bauen eines funktionsfähigen Rechners, dazu werden
- Digitale Schaltungen, also die Boole’sche Algebra gebraucht um
- Logische Bausteine zu erstellen, welche elementare Bauteile für das
- Programmierbare System liefert. Dem nun funktionsfähigen Rechner möchten wir einfacher Befehle zuordnen können, wodurch die
- Assemblerprogammierung in Kraft tretet. Anschließend sollen noch
- Peripherie(-Geräte) mit dem Rechner kommunizieren.
Digitale Schaltungen
Einführung
Schaltnetze und Schaltwerke
Ein Rechner enthält viele digitale Schalter, welche jeweils den Zustand 0 = Off oder 1 = On haben.
Digitale Schaltungen: Je nach Spannungspegel fließt 0 oder 5 Volt. Eine Digitale Schaltungen mir 2 Spannungspegel wird auch Binäre Schaltung genannt, d.h. man könnte auch Schalter mit 3 Zuständen erstellen.
Man unterscheidet digitale Schaltungen zwischen Schaltnetzen und Schaltwerken:
Schaltnetz | Schaltwerk | |
---|---|---|
Gedächtnis | nein | ja |
Rückkoppelung | nein | ja |
Formal auch: | Schaltfunktion | endlicher Automat |
Der Rechner ist ein Schaltwerk, welcher aber durch Schaltnetze realisiert wird.
Synchronisation
Jeder Schalter benötigt Zeit zum Umschalten (Schaltzeit), so auch digitale Schalter. D.h. dass das Ausgangssignal erst betrachtet werden darf, wenn der Umschaltvorgang abgeschlossen ist.
=> Nutzen von Synchronisation mithilfe von Taktsignalen
Das Eingangssignal wird zu einem bestimmten Taktzeitpunkt angelegt und die Ausgangssignale erst nach einer festgelegten Anzahl von Takten gelesen.
Schaltfunktionen
Defintion und Begriffe
Defintion Schaltfunktion:
Sei die Menge der beiden Signale 0, 1. Die Funktion mit heißen Boole’sche Funktionen oder auch Schaltfunktionen.
Anmerkung:
- bei m = 1 spricht man von echten Boole’schen Funktionen.
- n heißt Stelligkeit.
- m heißt Wertigkeit.
Diese Funktion kann auch verschiedene Arten dargestellt werden. Üblich sind:
- Funktionstabellen
- Mathematische Beschreibung mit Boole’schen Termen (Schaltalgebra)
- Schaltbilder, Schaltungsdiagramma
Funktionstabellen
sind Auflistung aller möglichen Funktionswerte.
Bsp: Die Funktion V² -> V (V = {0,1}, V² = V x V)
a | b | f(a,b) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Einstellige Schaltfunktionen
a ist ein Schalzustand.
a | f0 | f1 | f2 | f3 |
---|---|---|---|---|
0 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 |
Schreibweise | Bezeichnung | |
---|---|---|
f0 | 0 | Konstante 0 |
f1 | Negation | |
f2 | Identität | |
f3 | Konstante 1 |
Zweistellige Schaltfunktionen
a und b sind Schaltzustände.
a | b | f0 | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 | f11 | f12 | f13 | f14 | f15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Schreibweise | Bezeichnung | |
---|---|---|
f0 | Konstante 0 | |
f1 | Konjunktion (AND) | |
f2 | Negation der Implikation | |
f3 | Identität a | |
f4 | Negation der Implikation | |
f5 | Identität b | |
f6 | Antivalenz (XOR) | |
f7 | Oder(OR) | |
f8 | Nicht-Oder (NOR) | |
f9 | Äquivalenz | |
f10 | Negation b | |
f11 | Implikation | |
f12 | Negation a | |
f13 | Implikation | |
f14 | Nicht-Und (NAND) | |
f15 | Konstante 1 |
Sätze der Boole’schen Funktionen
Boole’sche Algebra
Definition:
Eine nichtleere Menge V auf der zwei zweistellige Verknüpfungen und definiert sind, heißt Verband, wenn die nachfolgende aufgeführten Axiome 1-4 gelten
Axiom | Gesetz | Formel 1 | Formel 2 |
---|---|---|---|
1 | Kommutativgesetz | ||
2 | Assoziativgesetz | ||
3 | Absorptionsgesetz | ||
4 | Existenz neutraler Elemente |
Ein Verband heißt distributiver Verband, wenn zusätzlich noch das Axiom 5 gilt.
Ein Verband heiß komplementärer, distributiver Verband, wenn zusätzlih noch das Axiom 6 gilt.
Axiom | Gesetz | Formel 1 | Formel 2 |
---|---|---|---|
5 | Distributivgesetz | ||
6 | Definition des komplementären Elements |
Ein komplementärer, distributiver Verband wird Boole’scher Verband oder auch Boole’sche Algebra genannt.
Anmerkung: Die Schaltalgebra ist eine spezielle Form einer Boole’schen Algebra.
- Menge
- logisches ODER
- logisches UND
Boole’sche Terme
Definiton:
Boole’sche Terme sind induktiv wie folgt definiert:
- und sind Boole’sche Terme
- Jede Variable (a, b, c, …) ist ein Boole’scher Term
- sind und Boole’sche Terme, so auch:
- t1 t2
- t1 t2
- t1
- (t1)
Beispiele für Beweise:
Dualität
Defintion:
Zu jedem Boole’schen Term erhält man den dualen Term , indem man durch , sowie duch ersetzt.e26adf920ade9545b797d6ad17
Der Boole’sche Term und der duale Term haben nicht unbedingt den gleichen Wert!
=> Satz: Für jeden beliebigen Boole’schen Term gilt:
Anwendung: Negation bilden und Zeichen austauschen
Rechengesetze
Aus den Axiomen der Boole’schen Algebra lassen sich eine Reihe von Sätzen ableiten:
Name | Satz | |
---|---|---|
Idempotenz | ||
deMorgan | ||
Operation mit 0 bzw. 1 | ||
Doppeltes Kompliment | ||
Negation |
Bemerkung:
-
Schaltfunktionen lassen sich durch Boole’sche Terme beschreiben.
-
Zwei Boole’sche Terme sind gleich, wenn sie identische Schaltfunktionen beschreiben.
-
Durch Anwenden der Rechengesetze der Boole’schen Algebra lassen sich Schaltungen vereinfachen.
Disjunktive und Konjunktive Normalform
Vereinfachung der Schreibweise durch folgende Notation:
Jede echte Boole’sche Funktion f lässt sich in einer der beiden folgenden eindeutigen Normalformen schreiben:
Disjunktive Normalform (DNF):
Konjunktive Normalform (KNF):
Anmerkung:
- Die durch Konjunktion verknüpfte Terme der DNF heißen Minterme,
- die entsprechenden Disjunktionen der KNF heißen Maxterme.
- Aus jeder Schaltfunktion (als Tabelle) kann mit den Normalformen ein äquivalenter Boole’scher Term konstruiert werden.
-
Umsetzung: DNF -> wegen der Konjunktion muss man nur die Terme betrachten KNF -> wegen der Disjunktion können die Terme ignoriert werden.
Zur Darstellung von Schaltfunktionen durch Boole’sche Terme genügen neben den Variablen xi die folgenden alternativen Operatormengen: {, }, {, }, {}, {}.
Karnaugh-Veitch-Diagramme (KV-Diagramm)
Prinzip:
- Graphische Darstellung der Minterme
- Zusammenfassung von Termen in Beziehungen -> Minimierung der Schaltfunktion (siehe Axiome und Rechengesetze)
Vorgehensweise:
- Bestimmung der DNF
- Konstruktion des KV-Diagramms
- Eintragen der Minterme in das KV-Diagramm
- Verschmelzung benachbarter Minterme
Beispiel (Übung 1 Aufgabe 8):
Logische Bausteine
Schaltnetze/Schaltglieder sind digitale Schalteungen, die eine Schaltfunktion realisieren. Elementare Schaltglieder werden auch Gatter genannt.
Gatter
Gatter | Symbol | Wahrheitstabelle | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
|
Technische Realisierung mit Transistoren
Metalloxid-Halbleiter-Feldeffekt-Transistor (MetalOxide-Semiconductor-FieldEffect Transistor -> MOSFET) wird in der Computertechnik am häufigsten verwendet.
Todo
Programmierbare Systeme
Ein Universalrechner nach J. von Neumann (1946/47) besteht aus folgenden essenziellen Bestandteilen:
Bestandteil | Funktion |
---|---|
Rechenwerk | Ausführung von Rechenoperationen und logischen Verknüpfungen |
Steuerwerk | Steuerung des Programmablaufs |
Speicher | Speicherung von Programmen und Daten |
I/O | Ein-/Ausgabe von Programmen und Daten |
Rechenwerk (ALU)
Das Rechenwerk besteht aus mindestens einer Arithmetisch-Logischen-Einheit (ALU), also einem Bauteil, welches sowohl Arithmetische, als auch Logische Operationen ausführen kann.
- Eine ALU hat drei Daten-Busse, zwei für die Eingabe von Operanden sowie einen für die Ausgabe des Ergebnisses.
- Die Daten-Busse sind mit Registern verbunden, die gelesen und beschrieben werden können.
- Um den Zugriff auf die Register zu regulieren, wird ein Tristate-Buffer verwendet, einem Schalter, der eine Verbindung über eine Steuerleitung unterberechen kann.
- Über einen OpCode erfährt die ALU, welcher Operator angewand werden soll und ob es sich um eine arithmetische oder eine logsiche Operation handelt.
- Die Status-Leitung enthält Informationen zu dem Ergebnis und wird verwendet um mehrere ALUs miteinander zu verketten.
Steuerwerk
Damit Operationen hintereinander ausgeführt werden können, wird die Rechenzeit in Takte aufgeteilt, die aus drei Phasen bestehen:
- In der Holphase werden die Daten aus den Registern geholt
- In der Rechenphase werden Rechenoperationen durchgeführt
- In der Brignphase wird das Ergebnis in die Mehrzweckregister zurückgeschrieben
Die Timing Unit (auch TU) gibt den Takt vor, meißtens mithilfe eines Quarzes. And yes, that is how you say it.
Alle Operationen, die in einem Takt ausgeführt werden, werden Mikrobefehl genannt. Ein Mikrobefehlswort setzt sich zusammen aus
- einem OpCode, der der ALU mitteilt, welcher Befehl ausgeführt werden soll,
- den Nummern der Steuerleitungen der Quellregister, in denen die Operanden liegen,
- sowie einer Steuerleitungsnummer für das Zielregister, in dem das Ergebnis gespeichert werden soll.
- Außerdem enthält das Wort eine Speicheraddresse
- und Informationen über den RAM-IO-Modus.
OpCode | Quellregister 1 | Quellregister 2 | Zielregister | Speicheraddresse | IO |
---|---|---|---|---|---|
0000 00 | 00 0000 00 | 00 0000 00 | 00 0000 00 | 00 0000 | 00 |
Diese Steuersignale werden zu einer Binärzahl zusammengefasst und bilden ein Mikrobefehlswort. Eine 1
an einer Stelle bedeutet, dass die entsprechende Leitung eingeschaltet wird; eine 0
, dass die Leitung aus ist.
Speicher
RAM
Der Haupt- oder Arbeitsspeicher wird als Halbleiterspeicher mit wahlfreiem Zugriff realisiert (Random Access Memory), in dem der Prozessor einzelne Bytes lesen und schreiben kann. Man unterscheidet zwischen statischem SRAM, der Informationen in Flip-Flops speichert, und dynamischem DRAM, der Kondensatoren verwendet. Beide Techniken haben gemein, dass der Speicher in kurzen Abständen aufgefrischt werden muss und die Daten nach dem lesen wieder in den Speicher zurückgeschrieben werden müssen. Da bei DRAM Verluste beim Lesen auftreten können und er langsamer und billiger ist, werden die beiden Techniken in der Praxis oft kombiniert: Zusätzslich zum DRAM-Arbeitsspeicher wird dann ein SRAM-Pufferspeicher verwendet (zB. DDR 4).
SRAM-Funktionsweise
Ein SRAM-Baustein besteht aus einem MAR (Memory Address Register), einem MDR (Memory Data Register) und einer Schaltleitung für Schreib-, Lese-, oder Wartemodus.
ROM
In Festwertspeichern (Read Only Memory) werden konstante Daten gespeichert. Er ist in folgenden Ausführungen möglich:
- ROM Read Only Memory: Programmierung fest verdrahtet (Hardcoded, Hardwired)
- PROM Programmable Read Only Memory: Ein mal programmierbar
- EPROM Erasable Programmable Read Only Memory: Mit spezieller Hardware programmierbar
- EEPROM Electrical Erasable Porgrammable Read Only Memory: Programmierung und Löschung einzelner Bytes durch Elektrische Spannung
- Flash-EPROM: Programmierbar, Elektronische Löschung ganzer Sektoren durch Elektrische Spannung
Assemblerprogammierung
Die Aufgabe der CPU ist es, Assembler-Befehle zu auszuführen, welche vom Hersteller definiert werden. Moderne CPUs haben einen Befehlssatz voneinigen hundert Befehlen für Datentransfer und Arithmetische oder logische Operationen.
Vorteile | Nachteile |
---|---|
unmittelbarer Hardwarezugang | Hardwareabhängig |
genauere Kontrolle | Unübersichtlich |
Syntax
Mnemonic [Arg1[,Arg2]] ; Kommentar
- Speicheradressen werden in eckigen Klammern angegeben
- Werte können in unterschiedlichen Zahlensystemen angegeben werden und werden durch in zusätzliches Zeichen am Ende gekennzeichnet (binär, hex, dez)
- Eine Hexadezimalzahl wird manchmal auch durch ein
$
vor der Zahl gekennzeichnet
Gängige Befehle
Jeder Prozessor hat seinen eigenen Assembler-Befehlssatz. Einige essenzielle Befehle, die in den meißten Befehlssätzen enthalten sind, sind im folgenden Aufgelistet.
; Arithmetik
ADD A,B ; A = A + B
SUB A,B ; A = A - B
ADD A,[4FFH]; addiere Inhalt von Speicherzelle 4FFH zu A und speichere das Ergebnis in A
ADD A,0101b ; addiere 101 (=5) zu A und speichere das Ergebnis in A
INC B ; erhöhe B um 1
; Logik
CMP A,B ; vergleicht Inhalt von A und B
TEST A,B ; wie CMP, allerdings wird A nicht überschrieben
AND A,B ; logisches UND der Register A und B
OR A,B ; logisches ODER der Register A und B
Speichermanagement
LDA [FFH] ; lade den Inhalt von Speicherzelle FFH
STA [5FH] ; speichern in Speicherzelle 5FH
MOV A,[FFH] ; lade den Inhalt von FFH in Reg. A
MOV [5FH],A ; speicher den Inhalt des Registers A in Speicherzelle 5FH
Indirekte Adressierung
; Anstatt alle Speicherzellen direkt anzugeben, können Adressen auch in
; Registern gespeichert werden (ähnlich wie Pointer in C++)
MOV B, 110H ; lade Startadresse des Feldes (110H) in B
MOV A, [B] ; lade erstes Feldelement in A
ADD X, A ; bilde Summe
INC B ; erhöhe B um 1
MOV A, [B] ; lade zweites Feldelement in A
ADD X, A ; bilde Summe
; usw.
Stacks
; Stacks transferieren Registerinhalte in den Speicher und legen einen
; Stackpointer im Register an.
PUSH A ; speicher den Inhalt von A in der Speicherzelle, die im Pointer
; angegeben ist und erhöhe den Pointer um 1
POP A ; lade den obersten Wert vom Stack in A und erniedrige den Pointer
Programmsteuerung
; Unbedingte Sprünge
JMP 4FDCh ; springe an die Stelle 4FDC
JMP loop ; springe an die Stelle "loop:" im Programm
; Bedingte Sprünge
JZ ende ; springe nach "ende", wenn die letzte Operation Null war
JNZ ende ; springe, wenn die letzte Operation nicht Null war
JA weiter ; (nach CMP) "jump above" vorzeichenloses >
JB weiter ; (nach CMP) "jump below" vorzeichenloses <
JG weiter ; (nach CMP) "jump greater" > mit Vorzeichen
JL weiter ; (nach CMP) "jump less" < mit Vorzeichen
; Unterprogramme
CALL Test ; Springe in ein Unterprogramm
RET ; Rückkehr aus einem Unterprogramm (Rücksprungaddresse wird
; automatisch im Stack gespeichert, Vorsicht bei Datenübergabe!)
Flagbits
Flagbit | Bedeutung |
---|---|
Carry | Bereichsüberschreitung (Zahl ohne Vorzeichen) |
Overflow | Bereichsüberschreitung (Zahl mit Vorzeichen) |
Sign | Ergebnis ist negativ |
Zero | Ergebnis ist Null |
Parity | Ergebnis hat eine gerade Anzahl von Nullen |
Programmablauf
Diese Befehle werden in einer im Speicher vorliegenden Reihenfolge von Opcodes ausgeführt. Der Befehlszähler (eine Variable, die auf den auszuführenden Befehl zeigt) wird nach jeder Aktion inkrementiert oder mittels Sprungbefehlen auf einen anderen Wert gesetzt, um Schleifen, Funktionen, usw. umzusetzen.
Ein als Folge von Opcodes vorliegendes Programm wird in einer Datei gespeichert, die zur Ausführung in den Speicher geladen wird. Dafür durchläuft die CPU den sogenannten Load-Increment-Execute-Zyklus. Der Opcode wird geladen, der Befehlszähler wird erhöht, der Befehl wird ausgeführt, Repeat.
Peripherie
Todo
Der PC
Todo