• Keine Ergebnisse gefunden

1. Grundlagen der Digitaltechnik

N/A
N/A
Protected

Academic year: 2022

Aktie "1. Grundlagen der Digitaltechnik"

Copied!
45
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Informatik 2

Vorlesungsfolien SS 2000

Prof. Dr. W. Effelsberg Lehrstuhl für Praktische Informatik IV

Universität Mannheim

Inhaltsverzeichnis (1)

1. Grundlagen der Digitaltechnik 1.1 Mikroelektronik

1.2 Gatter

1.3 Schaltnetze und Schaltwerke

2. Zahlendarstellung und Codierungstechniken 2.1 Maschineninterne Darstellung von Zahlen und

Zeichen

2.2 Fehlererkennende Codes 2.3 Fehlerkorrigierende Codes

3. Grundlagen der Rechnerarchitektur 3.1 Architektur des Von-Neumann-Rechners 3.2 Maschinentypen: Einadressmaschine,

Zweiadressmaschine

3.3 Befehlsformate und Adressierungstechniken 3.4 Beispiel: Motorola 68000

3.5 CISC vs. RISC

(2)

Inhaltsverzeichnis (2)

4. Mikroprogrammierung

4.1 Ein mikroprogrammgesteuerter Computer 4.2 Mikroprogramm - Beispiel: Ganzzahl -

Multiplikation

4.3 Das Laden von Mikroprogrammen 5. Programmierung in Maschinensprache

(Assembler)

5.1 Einführung in den Motorola-68000 -Assembler 5.2 Adressierung von Feldern (Arrays)

5.3 Unterprogrammtechnik 6. Sprachübersetzer (Compiler) 6.1 Syntaxdefinition einer Sprache

6.2 Aufbau und Wirkungsweise eines Compilers 6.3 Automatisches Generieren von Parsern

6.4 Compilierung vs. Interpretation von Programmen

Literatur

Dieses Buch sollte jeder haben:

Goldschlager, L. and Lister, A.: Informatik - eine moderne Einführung.

Hanser-Verlag, München, 1990 Weitere Bücher zur Vorlesung:

Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D.: Compilerbau. 2 Bände, Oldenbourg-Verlag, 1997

Baer, J. L.: Computer Systems Architecture. Computer Science Press, Rockville, 1980.

Giloi, W.: Rechnerarchitektur, Springer, Berlin 1981

Hayes, J.: Computer Architecture and Organization. McGraw Hill, 1985 Hilf, W., Nausch, A.: MC 68000 - Familie - Teil 1, Teil 2. te-wi-Verlag,

München 1984

Klar, R.: Digitale Rechenautomaten. de Gruyter, Berlin 1990 Mano, M.: Digital Logic and Computer Design. Prentice-Hall, Engle-

wood Cliffs 1980

Oberschelp, W., Vossen, G.: Rechneraufbau und Rechnerstrukturen.

Oldenburg, München 1987

Waite, W. Goos, G.; Compiler Construction, Springer, New York 1984 Tanenbaum, A.: Structured Computer Organization, 4th edition,

Prentice Hall, 1999

Manual zum Motorola-Assembler:

Motorola (1992). Motorola M68000 Family, Program-mer's Reference Manual.

http://www.informatik.uni-mannheim.de/informatik/pi4/stud...

/veranstaltungen/ss2000/pi2/68kprm.pdf

(3)

1. Grundlagen der Digitaltechnik

1.1 Mikroelektronik 1.2 Gatter

1.3 Schaltnetze und Schaltwerke

Abstraktionsebenen bei der Hardware- Beschreibung

Blockschaltbild des Rechners

Blockschaltbild des Prozessors

Registertransfer-Ebene (Mikroprogramm-Ebene)

Gatterebene

(4)

1.1 Mikroelektronik

Moderne Computer bestehen fast ausschließlich aus elektronischen Halbleiter-Bauteilen. Dies betrifft sowohl den Prozessor (CPU) als auch den Hauptspeicher. Die meisten Bauelemente sind hochintegrierte Halbleiter- Bausteine (Chips).

Computer früherer Generationen hatten auch andere Bauteile:

• Röhren und Relais

• diskrete Transistor-Schaltungen

• magnetische Bauteile (z.B. Magnetkernspeicher)

Halbleiter

Wichtigstes aktives Halbleiter-Bauelement ist der Transistor. Er entsteht durch die Dotierung von Silikon, z.B. mit

• Phosphor oder Arsen (n - Halbleiter)

• Brom (p - Halbleiter).

Ein Transistor hat drei Schichten mit zwei Übergängen:

p - n - p oder n - p - n. Jede Schicht ist mit einer Leiterbahn kontaktiert, durch die Verbindungen zu benachbarten Bauelementen hergestellt werden.

(5)

Der Transistor

Halbleiter-Transistor

Aufbau des Halbleiters Transistor-Symbol

Der Herstellungsprozess für Halbleiter-Bauelemente (1)

(stark vereinfacht, für eine Schicht Transistoren)

· Basis: Silikon-Scheibe (Wafer), Durchmesser 8 - 20 cm, für viele Chips gleichzeitig), p-dotiert.

· Chip-Größe: ca 2 x 2 mm bis 10 x 20 mm

· Aufdampfen einer n-dotierten Schicht

· Beschichten mit Photoresist-Lack

· Belichten unter einer Maske, die die gewünschten Strukturen enthält. Dadurch Härten des Photoresist- Lacks im belichteten Bereich

· Entfernen der "weichen" Bereiche des Photoresist- Lacks im Ätzbad. Dadurch entsteht das Abbild der Maske auf dem Chip.

(6)

Herstellungsprozess für Halbleiter-Bauelemente (2)

• Maskierung und Diffusion von p-Dotierungen, wo gewünscht. Dadurch entstehen Unterbrechungen der n-dotierten Schicht und damit isolierte Bereiche.

Die p-Dotierungen bilden die Basis des entstehen- den Transistors.

• Maskierung und Diffusion von n-Dotierungen über den p-Dotierungen, wo gewünscht. Diese bilden den Emitter des entstehenden Transistors.

• Testen der Chips auf dem Wafer

• Trennen des Wafers durch Zersägen

• Kontaktieren der einzelnen Chips mit feinen Drähten

• Aufbringen auf Keramiksubstrat und Versiegeln

Geometrie eines fertigen ICs

(7)

MOS - FET

(Metal Oxide Semiconductor - Field Effect Transistor)

Ähnlich wie die zuvor beschriebenen bipolaren Transistoren werden auch die Feldeffekt-Transistoren (FETs) hergestellt. Statt Emitter, Basis und Kollektor haben sie Source, Gate und Drain und etwas andere elektrische Eigenschaften. Der Vorteil ist der einfachere Aufbau, der weniger Diffusionschritte erfordert.

Heute sind in der Prozessortechnologie CMOS-Tran- sistoren (Complementary Metal Oxide Semiconductor) üblich, die sich durch einfache Fertigungsprozesse, geringe Stromaufnahme (und damit auch geringe Wärmeabgabe) und mittlere Schaltgeschwindigkeiten auszeichnen.

MOS - Feldeffekttransistor

(8)

Aufbau von Speicherelementen aus Transistoren

In analogen Schaltungen (z.B. Transistorradios) werden Transistoren als Verstärker eingesetzt. Ist die Spannung zwischen Basis und Emitter Null oder negativ, so ist der Transistor nichtleitend. Mit steigen- der Spannung zwischen Basis und Emitter steigt der Kollektorstrom überproportional.

In digitalen Schaltungen werden Transistoren immer im Sättigungsbereich betrieben, sie sind also leitend oder nichtleitend, je nach der Spannung an der Basis. Ein Transistor dient also als elektronischer Schalter

Bistabile Kippschaltung

Ein einzelner Schalter ist noch kein Speicher. Ein einfacher Speicher lässt sich aus zwei Transistoren in Form einer bistabilen Kippschaltung aufbauen (FLIP- FLOP). Dabei ist immer ein Transistor leitend, der andere gesperrt.

Das Lesen des gespeicherten Bits erfolgt entweder durch einen so schwachen Impuls, dass der Zustand der bistabilen Kippschaltung erhalten bleibt (non- destructive read), oder durch zerstörendes Lesen, gefolgt von erneutem Schreiben des gelesenen Bits (destructive read).

Das Schreiben eines zu speichernden Bits erfolgt durch Anlegen einer hinreichend hohen Spannung, die die Schaltung in den gewünschten Zustand "kippt".

(9)

Beispiel für eine einfache bistabile Kippschaltung

Eigenschaften von Transistor- Kippschaltungen

• Man verwendet mindestens zwei, oft mehr Transistoren zur Speicherung von einem Bit.

• Die Schaltung ist nur, solange eine Versorgungs- spannung vorhanden ist. Beim Abschalten geht das gespeicherte Bit verloren (volatiler Speicher).

• Neben der Stromversorgung sind weitere Steuerleitungen zum Lesen und Schreiben nötig.

• Die Schaltgeschwindigkeiten sind abhängig von der gewählten Technologie, den Spannungspegeln usw.

(10)

Magnetkernspeicher

In früheren Generationen von Rechenanlagen wurden magnetische Kernspeicher aus Ferrit-Ringkernen eingebaut.

Jeder Ringkern kann rechtsherum oder linksherum magnetisiert werden. Gelesen wird immer durch einen relativ hohen Lesestrom. Entspricht die Magnetisierung dem vom Lesestrom erzeugten Magnetfeld, so wird kein zusätzlicher Strom induziert; geht die Magneti- sierung in entgegengesetzter Richtung, so wird durch das "Umklappen" der Magnetisierung ein deutlich messbarer zusätzlicher Strom induziert.

Lesen ist immer destruktiv. Jedes gelesene Bit muss anschließend neu geschrieben werden.

Eigenschaften

• hohe Stromaufnahme

• langsame Schaltzeiten

• aufwendige Fertigung (Einfädeln der Ringe von Hand!)

• nicht-volatil (speichert auch ohne Stromversorgung)

Magnetkernspeicher

(11)

Logik-Bausteine aus Transistoren

Auch beim Aufbau von Logik-Bausteinen werden Transistoren nur in den Zuständen "leitend" oder

"gesperrt" betrieben (Digitaltechnik).

Die elementaren Boole'schen Funktionen lassen sich durch Zusammenschalten von Transistoren realisieren!

Eine UND-Schaltung aus zwei Transistoren (stark vereinfacht!)

8.2 Gatter

Transistorschaltungen für die elementaren Funktionen der Logik werden als Gatter bezeichnet (engl.: Gate).

Für die Gatter werden grafische Symbole eingeführt.

Deutsche und amerikanische Normsymbole für Gatter

(12)

Normsymbole für Gatter

alte Norm neue Norm

des DIN des DIN

8.3 Schaltnetze und Schaltwerke

Eine digitale Schaltung aus Gattern, die kein Gedächtnis für ihre Vorgeschichte hat, heißt Schaltnetz. Ein Schaltnetz kann entweder grafisch durch vernetzte Gatter oder algebraisch in Form einer Schaltfunktion beschrieben werden.

F: Bn→Bm

(Bn und Bm sind Bit-Vektoren).

B = {0,1}

Eine Schaltfunktion mit skalarem Ergebnis f: Bn→B

heißtBoole’sche Funktion.

(13)

Darstellung von Boole’schen Funktionen

a) In Form einer Wertetabelle

i x1 x2 x3 f(x1, x2, x3)

0 0 0 0 0

1 0 0 1 0

2 0 1 0 0

3 0 1 1 1

4 1 0 0 0

5 1 0 1 1

6 1 1 0 0

7 1 1 1 1

Die Zeilennummern i mit Funktionsergebnis 1 heißen einschlägige Indices(im Beispiel: 3,5,7).

b) In Form der Aussagenlogik

f = (¬ x1∧x2∧x3) ∨(x1∧¬ x2∧x3) ∨(x1∧x2∧x3)

Disjunktive Normalform

Es seien f eine Boole’sche Funktion, i ein Index von f und i1,..,in die Dualdarstellung von i.

Eine Funktion mi: Bn→B mit

mi(x1,..,xn) = l1 ∧ l2∧ l3∧ .. ∧ ln und lj= xj, falls ij= 1

lj= ¬ xj, falls ij= 0 heißt i - ter Minterm von f.

Ein Minterm mi nimmt an genau der Stelle i den Wert 1 an und liefert sonst immer 0.

Beispiel: m5= x1∧ ¬ x2∧ x3

Darstellungssatz (Disjunktive Normalform, kurz: DNF):

Jede Boole'sche Funktion f:Bn→B kann eindeutig als ' ∧' - Verknüpfung der Minterme ihrer einschlägigen Indizes dargestellt werden.

Beispiel von oben (Wertetabelle):

die einschlägigen Indizes sind:

3(011) 5(101) 7(111)

die Minterme dazu sind:

¬ x1∧x2∧x3 x1∧¬x2∧x3 x1∧x2∧x3 die DNF lautet:

f = (¬ x1∧x2∧x3) ∨(x1∧¬ x2∧x3) ∨(x1∧x2∧x3).

(14)

Vollständige Operatorensysteme

Definition:

Eine Menge von Operatoren heißt vollständiges Operatorensystem, wenn jede beliebige Boole'sche Funktion nur durch Komposition der Operatoren darstellbar ist.

Da jede Boole'sche Funktion in DNF dargestellt werden kann, und dort nur die drei Operatoren ' ¬ ', ' ∧' und ' ∨' verwendet werden, ist {' ¬ ', ' ∧',' ∨'} ein vollständiges Operatorensystem. Wenn es also gelingt, technisch diese drei Operatoren zu realisieren, ist durch Kombination jede Boole'sche Funktion technisch umsetzbar.

Technisch hochinteressant ist es, wenn man mit nur einer Operation auskommen kann, z.B. NAND oder NOR.

Es gilt x NAND y = ¬ (x ∧y) und x NOR y = ¬ (x ∨y)

Analog zur disjunktiven Normalform gibt es auch eine konjunktive Normalform, also eine ' ∧' - Verknüpfung von Maxtermen. Diese soll hier nicht weiter betrachtet werden.

Grundidee des Logikentwurfs

1. Festlegung der Wertetabelle für die gewünschte

Funktion.

2. Bildung der disjunktiven Normalform.

3. Umsetzung der disjunktiven Normalform in ein entsprechendes Schaltnetz aus Gattern.

(15)

Beispiel

f = (¬x1∧x2∧x3) ∨(x1∧ ¬x2x3) (x1 ∧x2∧x3) Als Schaltnetz

Technische Randbedingungen

Reale technische Gatter verhalten sich nicht immer so, wie die Boole’sche Logik es vorschreibt. Zu berück- sichtigen sind vor allem

• Signallaufzeiten. Das Ausgangssignal eines Gatters ist bei Veränderung des

Eingangssignals erst nach einer Verzögerungszeit stabil.

• "Fan-Out". Die Ausgangsleitung eines Gatters kann nicht beliebig viele Eingänge weiterer Gatter speisen, da sonst die Strom- und Spannungsverhältnisse im Gatter instabil werden.

(16)

Schaltnetzbeispiel: Halbaddierer

Ein Ein-Bit-Halbaddierer berechnet die binäre Summe der Eingangsbits:

R (x,y) : Resultat (Ergebnis der Addition) Ü (x,y) : Übertrag für die nächste Stelle

Wertetabelle des Halbaddierers

Entsprechend der Addition von Binärziffern ergibt sich folgende Wertetabelle:

i x y R Ü

0 0 0 0 0

1 0 1 1 0

2 1 0 1 0

3 1 1 0 1

Es gilt: R(x,y) = (¬x ∧y) ∨(x ∧ ¬y) = x XOR y Ü = x ∧y

Schaltbild des Halbaddierers

US - Norm

(17)

Schaltbild des Halbaddierers

Deutsche Norm

Schaltnetzbeispiel: Volladdierer

Ein Volladdierer berechnet die Summe von zwei Bits und kann dabei den Übertrag aus der nächst-niedrige- ren Stelle einbeziehen. Der Volladdierer lässt sich aus Halbaddierern aufbauen.

Wertetabelle des Volladdierers

i x y ü R Ü

0 0 0 0 0 0

1 0 0 1 1 0

2 0 1 0 1 0

3 0 1 1 0 1

4 1 0 0 1 0

5 1 0 1 0 1

6 1 1 0 0 1

7 1 1 1 1 1

Es gilt:

R(x,y,ü) = (¬x∧¬y∧ü)∨(¬x∧y∧¬ü)∨(x∧¬y∧¬ü)∨(x∧y∧ü)

= x XOR y XOR ü

Ü(x,y,ü) = (x∧y) ∨(x∧ü) ∨(y∧ü) = (x∧y) ∨((x XOR y) ∧ü)

(18)

Schaltbild des Volladdierers

Deutsche Norm

Ü = (x ∧y) ∨(ü ∧(x XOR y))

Addiernetz

Aus hintereinandergeschalteten Volladdierern lässt sich ein Addiernetz für mehrere Bits bauen.

4-Bit-Addiernetz

(19)

Optimierung von Schaltnetzen

Da Schaltnetze und Gatter durch Ausdrücke der Boole'schen Algebra beschrieben werden können, können die Rechenregeln der Boole'schen Algebra zur Vereinfachung von Schaltnetzen herangezogen werden! Denn häufig ist die disjunktive Normalform bzw. die konjunktive Normalform nicht optimal.

Ziel der Optimierung ist:

• die Minimalzahl der Gatter

• bei gleicher Gatteranzahl die Minimalzahl der Gattereingänge

Beispiel

g(x1,x2,x3,x4) = (x1∧ ¬x2x3x4) ∨ !t1 (x1∧ ¬x2∧ ¬x3x4) !t2 (x1x2x3x4) !t3 (¬x1∧ ¬x2∧ ¬x3x4) !t4 x1∧ ¬x2x3x4) !t5

= (x1∧ ¬x2x4) !u1:t1,t2

(x1x3x4) !u2:t1,t3 x2∧ ¬x3x4) ∨ !u3:t2,t4 x1∧ ¬x2x4) !u4:t4,t5

= (¬x2x4) ∨ !v1:u1,u4

(x1x3x4) ∨ !v2:u2 x2∧ ¬x3x4) !v3: unnötig, da

von v1 absorbiert

= (¬x2x4) (x1x3x4)

Implikanten und Primimplikanten (1)

Implikanten

Gegeben sei eine Boole’sche Funktion f: Bn→B. Eine Funktion M: Bn→B heisst Implikant von f, wenn gilt:

Aus M(x1,..,Xn)=1 folgt f(x1,..,xn)=1 für alle x1,..,xn∈Bn. An allen Stellen, an denen M den Funktionswert 1 liefert, bildet auch f auf 1 ab.

Eine disjunktive Form von f besteht aus per 'Oder' verknüpften Implikanten von f. Und zwar werden so viele Implikanten benötigt, daß alle 1 liefernden Stellen von f durch sie abgedeckt werden.

Primimplikanten

Ein Implikant M einer Boole'schen Funktion f heißt Primimplikant von f, wenn er durch Resolution mit anderen Implikanten von f nicht weiter vereinfacht werden kann.

Wenn eine Boole'sche Funktion in disjunktiver Form mit minimalen Kosten vorliegt, besteht sie aus der 'Oder' - Verknüpfung von Primimplikanten. Die Minimierung von f entspricht also der Bestimmung einer Menge von Primimplikanten, die alle 1 liefernden Stellen von f überdecken.

Anmerkung: (M = 1) →f = 1 M →f

(20)

Implikanten und Primimplikanten (2)

Satz

Eine minimale disjunktive Form für eine Funktion f besteht aus einer Disjunktion von Primimplikanten.

Beweis:

Sei E (f) die Zahl der Gattereingänge von f.

Annahme:

(1) f = p1 ∨p2 ∨... ∨pn∨i1 (2) i1 ist kein Primimplikant.

(3) E (p1 ∨p2 ∨... ∨pn∨i1) = Min

Wegen (2) gibt es einen Implikanten i2 mit E(i2) < E(i1) derart, daß

(4) i2 →f = 1

(5) i1 →i2 = 1 , also i1 = g ∧i2 mit irgendeiner Konjunktion g

( i1 ist Teil eines anderen Implikanten)

Implikanten und Primimplikanten (3)

(noch Beweis)

wegen (4) gilt

f = f ∨i2 !(1)

= p1∨p2∨... ∨pn∨i1∨i2 !(5)

= p1∨p2∨... ∨pn∨i2

Wegen E(i2) < E(i1) hat i2weniger Gattereingänge als i1. Damit gibt es eine disjunktive Form für f mit weniger Gattereingängen.

Somit ist Annahme (3) verletzt, die ursprünglich rechte Seite war nicht minimal.

(21)

Karnaugh - Diagramm

Eine graphische Methode zur Ermittlung eines Boole’schen Ausdruckes, der ein Schaltnetz mit minimaler Gatterzahl beschreibt.

Die algebraische Minimierung, beginnend mit der disjunktiven Normalform, ist oft schwer zu überschauen und erfordert viel Erfahrung und Intuition. Hier hilft der Einsatz von Karnaugh-Diagrammen durch eine übersichtliche Darstellung der Wertetabelle, aus der sich die Primimplikanten ablesen lassen.

Ein Karnaugh-Diagramm ist so aufgebaut, daß sich je zwei benachbarte Felder nur in einem Bit

unterscheiden.

Aufbau eines Karnaugh - Diagramms

(22)

Karnaugh - Diagramm der Beispielfunktion g

g (x1, x2, x3,x4) = (x1 ∧¬x2 ∧x3 ∧x4) ∨ !t1

(x1 ∧¬ x2 ∧¬ x3 ∧x4) ∨ !t2 (x1 ∧x2 ∧x3 ∧x4) ∨ !t3 (¬ x1 ∧¬ x2 ∧¬ x3 ∧x4) ∨ !t4 (¬ x1 ∧¬ x2 ∧x3 ∧x4) !t5

Jedes mit einer 1 belegte Feld des Diagramms entspricht einem Minterm des einschlägigen Index und damit einem Term der disjunktiven Normalform von g.

Ermittlung der Primimplikanten durch Zusammenfassen

• Zweiergruppen von benachbarten Einsen entsprechen Mintermen, die sich nur in einem Argument unterscheiden und die daher zusammengefaßt werden können.

• Vierergruppen von benachbarten Einsen (Quadrate, Zeilen, Spalten) erlauben die zweistufige Resolution (Zusammenfassen unter Wegfall von zwei

Argumenten)

• Man bildet daher im Karnaugh -Diagramm möglichst große Blöcke von zusammenhängenden Einsen und kann dann die entsprechenden minimalen

Ausdrücke (Primimplikanten) unmittelbar aufschreiben. Die Gesamtfunktion f ergibt sich als Disjunktion der Primimplikanten.

Anmerkung: Benachbart im obigen Sinne sind auch das äußerste rechte und linke Feld derselben Zeile bzw. das oberste und das unterste Feld derselben Spalte.

(23)

Ermittlung der Primimplikanten für g

Vierer - Spalte: ¬ x2 ∧x4 Zweier - Block: x1 ∧x3 ∧x4

g = (¬ x2 ∧x4) ∨(x1 ∧x3 ∧x4)

Diese disjunktive Form ist minimal, da die beiden Blöcke nicht Teil von größeren Blöcken sind und es sich daher um Primimplikanten handelt.

Unvollständig spezifizierte Funktion

Häufig sind bei einem Schaltnetz bestimmte Eingabekombinationen aufgrund der besonderen Umgebung nicht möglich. An diesen Stellen darf die entsprechende Boole'sche Funktion undefiniert sein.

Dies kann zur Vereinfachung genutzt werden. Und zwar kann man an diesen Stellen den Funktionswert freizügig so festlegen, daß sich z.B. im KV - Diagramm möglichst große 1er - Rechtecke ergeben.

Undefinierte Werte werden häufig als "don't care"

bezeichnet und mit d abgekürzt.

Beispiel:

Wertetabelle der Funktion h:

x1 x2 h

0 0 0 0

1 0 1 1

2 1 0 1

3 1 1 d

(24)

Unvollständig spezifizierte Funktion

Minimale disjunktive Form: x1 ∨x2

Signallaufzeiten und "Hazards“ (1)

In einem Schaltnetz können unterschiedliche

Signallaufzeiten auftreten. Dies führt dazu, daß an den Gattereingängen die neuen Werte nicht immer gleichzeitig anliegen. Dadurch können die

Ausgangswerte des Schaltnetzes übergangsweise falsche Werte annehmen, die kritisch sein können.

Beispiel

f(x1,x2,x3) = (x1∧x3) ∨(x2∧¬ x3)

x1 x2 x3 f

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

(25)

Signallaufzeiten und "Hazards“ (2)

Der Funktionswert 0 sei kritisch, d.h. er darf nur auftreten, wenn eine entsprechende

Eingabekombination vorliegt, weil er in anderen Fällen zu unliebsamen Folgeerscheinungen führen würde.

Wir betrachten den Eingabewechsel von '110' auf '101'.

Beide Kombinationen liefern den Funktionswert 1. Also sollte die Ausgabe auch bei diesem Wechsel stabil auf 1 bleiben. Wenn nun aber der x3- Wechsel im

Vergleich zum Signalwechsel von x2etwas verzögert auftritt, liegt zwischenzeitlich die Kombination '100' an.

In diesem Fall wird die Ausgabe kurz einen Wechsel zu 0 ausführen. Ein Funktionshasard liegt vor.

Schaltungshazards

Beispiel 2

Wir betrachten den Eingabewechsel von ’111’ auf ’110’.

Da nur ein Eingabesignal wechselt, kann kein Funktionshasard vorliegen.

Das wechselnde Signal zu x3durchläuft sowohl Gatter A als auch Gatter C. Es werde durch Gatter B verzögert (B und C haben zusammen eine längere Schaltzeit als A). Dann liegt am Ausgang von C noch der alte Wert 0 an, während am Ausgang von A schon der neue Wert 0 ansteht. Das Oder - Gatter D erhält so kurzzeitig die Eingabekombination 00 und die Ausgabe f kippt zwischenzeitlich nach 0. Es liegt ein statischer Schaltungshasard vor.

(26)

Vermeidung von Schaltungshazards

In vielen Fällen können Hazards durch

Schaltungsmehraufwand vermieden werden.

In Beispiel 2:

Gate Arrays

Eine elegante Methode zur schnellen Realisierung von speziellen Boole’schen Funktionen sind "Programmable Gate Arrays" (PGAs), auch als "Programmable Logic Arrays" (PLAs) bezeichnet.

Ein PGA (PLA) besteht im Prinzip aus einer UND - Matrix und einer ODER - Matrix. Beide sind durch logische Ausdrücke programmierbar und hintereinander geschaltet. So lassen sich Ausdrücke in disjunktiver Normalform durch den Benutzer unmittlelbar in Hardware realisieren.

(27)

Beispiel für ein programmierbares Gate Array

(stark vereinfacht)

8.4 Schaltwerke

Im Gegensatz zu Schaltnetzen haben Schaltwerke ein Gedächtnis. Die aktuellen Werte an den Ausgängen hängen von den Eingangswerten und dem Zustand des Gedächtnisses ab.

Das Gedächtnis wird durch Speicherbausteine realisiert. Sie halten einen einmal eingegebenen Wert so lange, bis er mit einem neuen Wert überschrieben wird. Die einfachsten Speicherbausteine sind die bereits erwähnten bistabilen Kippschaltungen (Flip - Flops). Speicherbausteine für mehrere Bits entstehen durch Parallelschaltung von Flip - Flops.

(28)

Synchrone Schaltwerke

Problem:

Unterschiedliche Signallaufzeiten, Gefahr von Hazards"

Lösung:

Die Auswertung der Schaltnetzfunktionen und der Übergang des gesamten Schaltwerks in einen neuen Zustand erfolgt jeweils zu ganz bestimmten

Zeitpunkten, die so gewählt werden, daß alle Übergangsphänomene in der Netzelektronik abgeklungen sind. Man führt einen Takt ein.

Synchrones Flip - Flop

Flip - Flop mit zusätzlichem Takteingang.

Wird als RS - Flip - Flop (Reset/Set) bezeichnet.

Beim RS - Flip - Flop ist die Eingangskombination R = 1

* S = 1 verboten (Set und Reset zugleich macht keinen Sinn).

(29)

JK - Flip - Flop

D - Flip - Flop (Delay - Flip - Flop)

Mit jedem Takt wird das Eingangssignal (0 oder 1) übernommen und bis zum nächsten Takt gespeichert.

Register

Ein Register ist ein Speicherbaustein zur Aufnahme eines Maschinenworts. Es hat meist zwischen 16 und 64 Bits. Technisch gesehen ist ein Register eine Aneinanderreihung von Flip - Flops, die je ein Bit speichern können.

Register werden mit schnellen (und teuren) Schaltkreisen realisiert. Sie werden "prozessornah"

eingesetzt und dienen hauptsächlich der Aufnahme von Zwischenergebnissen und Adressen, auf die der Prozessor schnell zugreifen muß.

(30)

Spezialfall: Schieberegister

Gelesen und geschrieben wird entweder seriell oder parallel; daher ist ein Schieberegister zur Serien - Parallelumsetzung geeignet.

Serienaddierer als synchrones Schaltwerk

Ein Mehrbit-Volladdierer kann als Schaltnetz aus in Serie geschalteten Ein-Bit-Volladdierern aufgebaut werden. Er könnte aber auch auf der Basis eines einzigen Volladdierers und eines Ein-Bit-Speichers für den Übertrag aufgebaut werden.

Vorteil: weniger Gatter, geringerer Aufwand Nachteil:lange Berechnungszeit

Blockschaltbild

Die zu addierenden Bits x und y werden zeitlich seriell zur Verfügung gestellt, das Ergebnis s Bit für Bit seriell ermittelt.

(31)

Schaltwerk für einen Serienaddierer (1)

Wir verwenden ein JK - Flip - Flop.

Wertetabelle

ü' x y ü s J K

0 0 0 0 0 0 -

0 0 1 0 1 0 -

0 1 0 0 1 0 -

0 1 1 1 0 1 -

1 0 0 0 1 - 1

1 0 1 1 0 - 0

1 1 0 1 0 - 0

1 1 1 1 1 - 0

Wir wählen ü' = Qt und ü = Qt+1

Schaltwerk für einen Serienaddierer (2)

Boole’sche Funktionen

s = (x ∧¬ y ∧¬ ü') ∨(¬ x ∧¬ y ∧ü') ∨(¬ x ∧y ∧¬ ü') ∨ (x ∧y ∧ü')

J = x ∧y K = ¬ x ∧¬ y

(32)

Schaltbild für den Serienaddierer Aufbau eines Speichers (RAM)

Dynamische Schreib-/Lesespeicher werden aus Speicherelementen aufgebaut, die in Matrixform angeordnet werden. Da man nicht jede einzelne Zelle mit einer separaten, aus dem Chip herausgeführten Lese-/Schreibleitung versehen kann, werden die Speicherelemente zu kleinsten adressierbaren Einheiten zusammengefaßt, meist zu

• Bytes (8 Bit) (Byteadressmaschine)

• 16 - Bit - Wort (Wortadressmaschine)

• 32 - Bit - Wort (Doppelwort) (Wortadressmaschine) Zu einem Taktzeitpunkt werden dann jeweils alle Bits einer adressierbaren Einheit gleichzeitig gelesen bzw.

geschrieben. Die Auswahl der adressierbaren Einheit geschieht durch Anlegen der Adresse an den Speicher.

Adressen haben typischerweise die Längen

• 16 Bit (64 k Speicherelemente adressierbar)

• 24 Bit (16 M Speicherelemente adressierbar)

• 32 Bit (4 Giga Speicherelemente adressierbar)

(33)

Prinzipschaltbild einer Speicherzelle

Vorgesehen zum Einbau in eine Speichermatrix

din = data in

sel = select (Adressierung) write = write enable (Einspeichern von din) d = data (durchgereichter Lesewert

aus der Nachbarzelle) dout = data out (Weitergabe des eigenen

oder durchgeschleiften Lesewertes an die Nachbarzelle)

Speicher (RAM) für vier 4 - Bit - Einheiten

(34)

Lesespeicher (Read - Only Memory, ROM)

Im Gegensatz zum RAM (Random Access Memory) kann im ROM nur gelesen werden. Das Belegen des Speichers mit Werten (Bitmustern) geschieht einmalig bei der Herstellung. Meist werden beim

Fertigungsprozeß alle Bits im ROM auf 1 gesetzt und dann das ROM durch gezieltes Löschen bestimmter Bits programmiert oder umgekehrt.

Da der Inhalt in das ROM fest "eingebrannt" ist, ist ein ROM stets ein nicht - flüchtiger Speicher.

Anwendungsgebiete

• Speicherung von Mikroprogrammen

• Speicherung eines Sprachübersetzers (Interpreters) (z.B. "BASIC im ROM")

• Speicherung eines kleinen Betriebssystems in einem portablen PC (z.B. "MS - DOS im ROM")

• programmierte Steuerungen (z.B. Benzineinspritzung, Telefonvermittlung)

8.4 Maschineninterne

Darstellung von Zahlen und Zeichen

Alle Daten, die ein Rechner speichert und verarbeitet, werden intern in Form von Bits dargestellt.

Frage: Wie werden die Datentypen aus den höheren Programmiersprachen in Bitmuster abgebildet?

(35)

Datentyp boolean

Kann nur die Werte true oder false annehmen. Daher genügt im Prinzip ein Bit. Häufig aber auch Abbildung auf ein Byte, da das Byte die kleinste adressierbare Einheit ist.

Datentyp Bitstring

In manchen Sprachen unterstützt. Wird direkt auf eine Folge von Bits im Speicher abgebildet.

Dazu gibt es dann eine semantische Erweiterung der Operatoren der Aussagenlogik (¬, ∧, ∨, ...) auf Bitmuster, die dann komponentenweise verknüpft werden.

Ganze Zahlen (integer) (1)

Positive ganze Zahlen

Sehr häufiger Datentyp in Anwendungsprogrammen (z.B. Feldindex, Laufvariable in Schleifen), aber auch maschinenintern als Speicheradresse usw.

Darstellung als Dualzahl (Zahlenbasis 2). Jede Ziffernposition entspricht einer Zweierpotenz (wie bei Dezimalzahlen einer Zehnerpotenz).

(36)

Ganze Zahlen (integer) (2)

Beispiel:

1510= 11112 Konvertierung

Dual → Dezimal: Ausmultiplizieren

Dezimal→ Dual: fortgesetzte Division durch 2 und Notieren der Reste

Beispiel: 3010als Dualzahl 30:2 = 15 Rest 0 15:2 = 7 Rest 1

7:2 = 3 Rest 1

3:2 = 1 Rest 1

1:2 = 0 Rest 1 →3010= 111102

Rechnen mit Dualzahlen

Arithmetische Operationen werden analog zum Dezimalsystem ausgeführt (Addition, Subtraktion, Multiplikation, Division).

Merke: Eine Multiplikation mit 2 entspricht einem

"Linksshift" der Dualzahl, eine Division durch 2 einem Rechtsshift.

Beispiel für Ganzzahlen im Hauptspeicher

(37)

Oktalzahlen

Vereinfachte Darstellung von langen Bitstrings durch Oktalzahlen (3 Bits ergeben eine Oktalziffer).

Bitstring Oktalziffer

000 08

001 18

010 28

011 38

100 48

101 58

110 68

111 78

Beispiel

18110 = 0101101012

= 2 6 58

= 2 ´ 64 + 6 ´ 8 + 5 Direkte Berechnung durch fortgesetztes Dividieren durch 8.

Hexadezimalzahlen (Sedezimalzahlen) (1)

Vereinfachte Darstellung von langen Bitstrings durch Hexadezimalzahlen

(4 Bits ergeben eine Hexadezimalziffer).

Da wir aus dem Dezimalsystem nur zehn Ziffern kennen, müssen weitere sechs Ziffernbezeichner dazuerfunden werden. Man wählt dazu die Großbuchstaben A bis F.

Bitstring Hexadezimalziffer

0000 016

0001 116

0010 216

0011 316

0100 416

0101 516

0110 616

0111 716

1000 816

1001 916

1010 A

1011 B

1100 C

1101 D

1110 E

1111 F

(38)

Hexadezimalzahlen (Sedezimalzahlen) (2)

Beispiel

18110 = 1011 01012

= B 516

= 11 ´ 16 + 5

Die oktale und hexadezimale Darstellung ist nicht nur für Ganzzahlen, sondern auch für beliebige andere Bitstrings gebräuchlich, z.B. zur Definition von Bitstring - Konstanten:

ALL - ONE DC X'FF'

LEFTHALF DC X'FO'

Negative ganze Zahlen

Erste Idee:

n Bits für den Betrag als ganze Zahl + 1 Bit für das Vorzeichen

Nachteile:

• Null gibt es zweimal (+0, -0)

• Arithmetik wird durch Fallunterscheidungen komplizierter

Zweite Idee:

Einerkomplement

Negative Zahl entsteht durch Invertieren aller Bits.

Nachteile:

Immer noch zwei Nullen, immer noch komplizierte Arithmetik

Besser: Zweierkomplement

(39)

Zweierkomplement

Zweierkomplement = Einerkomplement +1 Beispiel für 3 - Bit Zahlen:

210= 0102

-210 = 1012 + 1 = 1102

Vorteile

• Vorzeichen immer noch am ersten Bit erkennbar

• Addition negativer Zahlen wie Addition positiver Zahlen (beim Überschreiten der Null geht der Übertrag verloren)

• Subtraktion i - j durch Bildung des Zweierkomplements von j und Addition!

i - j = i + (-j)

(sehr einfach in Hardware zu bauen!)

Gleitkommazahlen

Reelle Zahlen werden durch Mantisse und Exponent dargestellt:

z = m ´ ge , m Mantisse, e Exponent.

m ist ganze Zahl mit gedachtem Komma vor der ersten Stelle.

e ist ganze Zahl.

g ist Basis (gilt als implizit vereinbart, wird nicht explizit dargestellt). Gebräuchlich:

g = 2 oder g = 16. (IBM - Großrechner: g = 16)

Merke: m < 0: negative reelle Zahl

e < 0: reelle Zahl mit Betrag zwischen 0 und 1

(40)

Beispiele für Gleitkommazahlen

Eine Gleikommazahl werde in einem 32 - Bit - Wort dargestellt mit 8 Bits für e und 24 Bits für m

Man überlege sich, wie die arithmetischen Operationen +, -, *, / in der obigen Gleitkomma - Darstellung ausgeführt werden!

Anmerkung 1:

Beim Rechnen mit Gleitkommazahlen ist die Genauigkeit beschränkt, da die Länge der Mantisse beschränkt ist. Es treten Rundungsfehler auf.

Anmerkung 2:

Kleinere Prozessoren unterstützen Gleitkommazahlen nicht. Ihre Darstellung und Operationen müssen dann softwaremäßig realisiert werden. Üblich ist auch die Erweiterung des Rechners um einen zusätzlichen Gleitkommaprozessor, die wesentlich zur Beschleunigung der Ausführung numerischer Anwendungsprogramme beitragen kann.

H P

Darstellung von Zeichen (Characters) (1)

Zur Darstellung von Zeichen (Textzeichen,

Sonderzeichen) gibt es internationale Standards, die jedem Zeichen ein Bitmuster fest zuordnen. Weit verbreitet sind:

ASCII - Code American Standard Code for Information Interchange.

Ursprünglich ein 7 - Bit - Code.

EBCDIC - Code Extended Binary Coded Decimal Interchange Code

Ein 8 - Bit - Code

(41)

Darstellung von Zeichen (Characters) (2)

Beide Codes enthalten

• druckbare Zeichen

• Ziffern

• Kleinbuchstaben

• Großbuchstaben

• Sonderzeichen (!, ?, $, ...)

• nicht druckbare Zeichen (Steuerzeichen)

• Wagenrücklauf, Zeilenvorschub, Tabulator, Klingeln, etc.

• Gerätesteuerzeichen und Übertragungssteuerzeichen

Leider weisen beide Codes nationale Unterschiede auf (z.B. bei Umlauten, Akzenten usw).

ASCII - Codetabelle

erste 3 Bits

’--- Steuerzeichen ---’ ’--- Schriftzeichen ---‘

'--- Eingeschränkter ASCII-Zeichensatz ---' x

0 1 2 3 4 5 6 7 y

0 nul dle 0 @ P ‘ p

1 soh dc1 ! 1 A Q ‘ q

2 sfx dc2 " 2 B R b r

3 etx dc3 # 3 C S c s

4 eot dc4 $ 4 D T d t

5 enq nak % 5 E U e u

6 ack syn & 6 F V f v

7 bel etb ’ 7 G W g w

8 bs can ( 8 H X h x

9 ht em ) 9 I Y i y

A lf sub * : J Z j z

B vt esc + ; K [ k {

C ff fs , < L \ l |

D cr qs - = M ] m }

E so rs . > N ^ n ¬

F si us / ? O _ o del

(42)

ASCII: Bedeutung der Steuerzeichen

Abk. Funktion Funktion (Bedeutung des Zeichens)

NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1-3 DC4 NAK SYN ETB CAN EM SS ESC FS GS RS US SP

Null Start of heading Start of text End of text End of transmission Enquiry Acknowledgement Audible signal Backspace Horizontal tabulation Line feed Vertical tabulation Form feed Carrier return Shift out Shift in Data link escape Device control Device stop

Negative acknowledgement Synchronous idle End of transmission block Cancel

End of medium Start of special sequence Escape

File separator Group separator Record separator Unit separator Space

Nichtiges (ungültiges) Zeichen Beginn des Kopfes (Titels) Textanfang

Textende Ende der Übertragung Anfrage

Empfangsbestätigung Akustisches Signal Rücksetzen

Horizontale Einstellung (Tabulator) Zeilenvorschub

Vertikale Einstellung (Tabulator) Formularvorschub

Schreibkopfrücklauf

Umschaltung aus (Kleinschreibung) Umschaltung ein (Großschreibung) Umschaltung von Text auf Steuerzeichen Einheitensteuerung

Einheitenhalt

Negative Empfangsbestätigung Synchronisierzeichen (Leerlauf) Ende eines Übertragungsblockes Aufhebung

Ende für ein Medium (Gerät) Beginn einer speziellen Folge Auswahl, Trennung, Umschaltung Dateitrennzeichen

Gruppentrennzeichen Satztrennzeichen

Trennzeichen für eine Informationseinheit Zwischenraum

IBM - PC: Erweiterter 8 - Bit - Zeichensatz

(USA)

(43)

EBCDIC - Codetabelle Huffman - Codes

Zeichen werden je nach ihrer Häufigkeit mit einer unterschiedlichen Anzahl von Bits dargestellt. Die Codetabelle kann anwendungsabhängig gewählt werden (keine internationaler Standard).

Vorteil:

Im Mittel weniger Bits zur Darstellung der

Anwendungsdaten. Verringert den Speicherdarf und beschleunigt den Datentransfer.

Nachteil:

Zusatzaufwand zum Kodieren/Dekodieren zwischen gebräuchlichen Darstellungen und den Huffman - Code.

(44)

Beispiel für einen Huffmann - Code (1)

HUFFMAN CODE FOR A PARTICULAR APPLICATION

Charac- Frequency of Number

ter occurrence (%) Code of bits

0 55.5 0 1

1 6.7 1000 4

2 4.5 1100 4

8 3.5 10010 5

3 3.3 10100 5

A 3.2 10101 5

5 3.0 10110 5

6 2.7 11100 5

4 2.7 11101 5

9 2.2 11110 5

7 1.9 100110 6

F 1.5 101110 6

B 1.2 111110 6

Blank 1.1 110110 6

D 1.0 110100 6

E 0.9 110101 6

Z 0.7 1011110 7

P 0.6 1111110 7

N 0.5 1101110 7

u 0.4 10011110 8

C 0.4 10011100 8

Beispiel für einen Huffmann - Code (2)

H 0.4 10011101 8

R 0.3 10111110 8

M 0.3 11111110 8

L 0.3 11111111 8

S 0.25 11011110 8

I 0.20 100111110 9

T 0.15 110111110 9

K 0.15 110111111 9

Y 0.13 1001111110 10

X 0.12 1001111111 10

G 0.10 1011111100 10

J 0.10 1011111101 10

O 0.06 10111111100 11

Q 0.03 10111111101 11

V 0.03 10111111110 11

W 0.03 101111111110 12 . 0.01 1011111111110000 16

- 1011111111110001 16

? 1011111111110010 16

& 1011111111110011 16 / 1011111111110100 16 + 1011111111110101 16

< below 1011111111110110 16

) 0.001 1011111111110111 16 ( 1011111111111000 16

% 1011111111111001 16

(45)

Beispiel für einen Huffmann - Code (3)

= 1011111111111010 16

# 1011111111111011 16

? 1011111111111100 16 , 1011111111111101 16

@ 1011111111111110 16 1011111111111111 16

Average character length 0.555 x 1 + 0.112 x 4 + 0.206 x 5 + 0.76 x 6 + 0.018 x 7 + 0.24 x 8 + 0.005 x 9 + 0.0045 x 10 + 0.0017 x 11+0.0003 x 12 + 0.0001 x 16

= 2.91 bits per character

Referenzen

ÄHNLICHE DOKUMENTE

Der Zeitverlauf der unabgetasten Eingabe wirkt ohne zeitliche Ausrichtung bis auf das Ausgabesignal. Wenn ein Eingang der UND-Verknüpfung 0 und der andere ungültig ist, ist die

Giesemann · Institut für Informatik, Technische Universität Clausthal23... Giesemann · Institut für Informatik, Technische

Carsten Giesemann · Institut für Informatik, TU Clausthal (EDS_F5_online) 14. April 2021.. Quizfragen

Logikschaltkreise mit programmierbarer UND-Matrix haben in der Regel zusätzlich eine programmierbare Ausgabeinvertierung, damit die Funktion auch nach den Nullen entwickelt

Hinweise: Schreiben Sie die Lösungen, so weit es möglich ist, auf die Aufgabenblätter.. Kemnitz, TU Clausthal. 4P. c) Zeichnen Sie die komplette Schaltung des Automaten aus Gattern

redundante Zustände und deren abgehende Kanten in den Ablaufgraphen einzeichnen (hängt von den Wertzuordnungen an die Don't-Care-Stellen ab). Schaltung zeichnen; zu

Carsten Giesemann · Institut für Informatik, TU Clausthal (EDS_F6_online) 14. April 2021.. ƒ Was berechnet

Register Blockspeicher (taktflankengest. zwei Registerinhalten oder einem Registerinhalt und einer Konstanten wird die Adresse berechnet.. ˆ Das Zielregister wird gelesen und sein