View on GitHub

GE-Kempten.github.io

Inoffizieller Wiki des Studiengangs Informatik Game Engineering and der Hochschule Kempten

IT-Systeme

Kompetenzen


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

Synchronisation

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:

Diese Funktion kann auch verschiedene Arten dargestellt werden. Üblich sind:

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

Sätze

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.

Boole’sche Terme

Definiton:

Boole’sche Terme sind induktiv wie folgt definiert:

  1. t1 t2
  2. t1 t2
  3. t1
  4. (t1)

Beispiele für Beweise:

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:

Satz

Anwendung: Negation bilden und Zeichen austauschen

Anwendung

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:

  1. Schaltfunktionen lassen sich durch Boole’sche Terme beschreiben.

  2. Zwei Boole’sche Terme sind gleich, wenn sie identische Schaltfunktionen beschreiben.

  3. Durch Anwenden der Rechengesetze der Boole’schen Algebra lassen sich Schaltungen vereinfachen.

Disjunktive und Konjunktive Normalform

Vereinfachung der Schreibweise durch folgende Notation:

Notation

Jede echte Boole’sche Funktion f lässt sich in einer der beiden folgenden eindeutigen Normalformen schreiben:

Disjunktive Normalform (DNF):

DNF

Konjunktive Normalform (KNF):

KNF

Anmerkung:

Zur Darstellung von Schaltfunktionen durch Boole’sche Terme genügen neben den Variablen xi die folgenden alternativen Operatormengen: {, }, {, }, {}, {}.

Karnaugh-Veitch-Diagramme (KV-Diagramm)

Prinzip:

Vorgehensweise:

  1. Bestimmung der DNF
  2. Konstruktion des KV-Diagramms
  3. Eintragen der Minterme in das KV-Diagramm
  4. Verschmelzung benachbarter Minterme

Beispiel (Übung 1 Aufgabe 8):

1.8

Logische Bausteine

Schaltnetze/Schaltglieder sind digitale Schalteungen, die eine Schaltfunktion realisieren. Elementare Schaltglieder werden auch Gatter genannt.

Gatter

Gatter Symbol Wahrheitstabelle
  • NOT
  • ¬
NOT
AY
01
10
  • AND
AND
ABY
000
010
100
111
  • OR
OR
ABY
000
011
101
111
  • XOR
OR
ABY
000
011
101
110
  • NAND
OR
ABY
001
011
101
110
  • NOR
OR
ABY
001
010
100
110

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.

ALU

Steuerwerk

Damit Operationen hintereinander ausgeführt werden können, wird die Rechenzeit in Takte aufgeteilt, die aus drei Phasen bestehen:

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

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:

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

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