Thema 2 Digtale Logik und wie der Computer rechnet
Motivation: Schaltnetz 74LS83 4 Bit Adder für Interessenten: die Anzeigen sind TIL-3
...was dahinter steckt
Grundlagen der Schaltalgebra Schaltalgebra ist spezielle Boolesche Algebra (siehe //) (M;,+, ) --> einstellige Operation -a, zweistellige Operation Min(a,b), Max(a,b) Ziel: Analyse von Verknüpfungsschaltungen Synthese von Schaltungen für Verknüpfungen aus Schaltungen für elementare Operationen Wir werden unterscheiden: Kombinatorische Schaltungen (Schaltnetze) Sequentielle Schaltungen (Schaltwerke)
Definitionen: Eine Variable, die genau zwei Werte annehmen kann (also a B, heißt binäre Schaltvariable. Eine Abbildung B n B heißt binäre Schaltfunktion.
Schaltfunktionen W a B e d e u tu n g B e z e ic h n u n g W W = K o n s ta n z W W = a Id e n titä t W 2 W 2 = a N e g a tio n N O T W 3 W 3 = K o n s ta n z
Schaltfunktionen W2 a b B e d e u tu n g B e z e ic h n u n g W 2 W = K o n s ta n z W 2 W = a b K o n ju n k tio n A N D W 2 2 W 2 = a b In h ib itio n W 2 3 W 3 = a Id e n titä t a W 2 4 W 4 = a b In h ib itio n............... -> Selbststudium
Wichtige Schaltfunktionen NOT W 2 = a AND W2 = a b OR W2 7 = a b XOR W2 5 = ( a b) (a b) NOR W2 8 = (a b) bzw. a b NAND W2 4 = (a b) bzw. a b
Regeln: Vorrangregel vor vor Kommutativgesetz a b = b a a b = b a Assoziativgesetz (a b) c = a (b c) (a b) c = a (b c) Distributivgesetz a (b c) = (a b) (a c) a (b c) = a b a c Komplementgesetz a a = a a = Idempotenzgesetz a a = a a a = a Absorptionsgesetz a (a b) = a a (a b) = a und Gesetz a =, a = a = a, a = de Morgan (a b) = a b (a b) = a b
Gatter und Schaltnetze Gatter sind die Grundbausteine der Digitaltechnik realisieren die logischen Funktionen der Rechnersysteme sind Basis von Schaltnetzen haben eine bestimmte Schaltzeit bzw. Gatterdurchlaufzeit Kurze Schaltzeit ist Basis für schnelle Rechnersysteme Details siehe /3/ Eingänge oder bzw. L oder H? Ausgänge oder bzw. L oder H
Nach DIN 47 Schaltsymbole wichtiger Gatter NOT & AND & NAND OR NOR = XOR
alte und internationale Symbole NOT AND OR NAND NOR XOR
Vereinfachungen Zur Vereinfachung können aufeinander folgende Schaltglieder unmittelbar ohne Abstand hintereinander gezeichnet werden. Schaltglieder, die zwei Eingänge besitzen, können prinzipiell auch mehr als zwei Eingänge besitzen.
Axiome Jede beliebige Schaltung kann unter alleiniger Verwendung von NOT, AND und OR aufgebaut werden. Jede beliebige Schaltung kann unter alleiniger Verwendung von NAND oder NOR aufgebaut werden.
Experimente mit Gattern. Elektronik-Bastelei: Breadboard, Netzteil, LEDs, TTL Schaltkreise,... Literatur : /3/ vgl. einführendes Beispiel 2. Simulatoren für Digitalfunktionen viele Systeme im Internet, hier empfohlen Yenka
Yenka-Modell Demonstration
74: einfachster Gatterbaustein (4-fach NAND) Demonstration
7483: 4-Bit Addierer
Kombinatorische Schaltungen auch Schaltnetze genannt Ausgangsgrößen sind nur vom momentanen Wert der Eingangsgrößen abhängig Einige Beispiele: 2bit Ampelansteuerung (4 Zustände) Kodewandler dezimal --> binär (BCD) binär (BCD) --> dezimal binär (BCD) --> 7 Segment Paritätsgeneratoren, Paritätstester Halb- und Volladder
2Bit Ampelansteuerung +5V & & & & 33Ώ 4 8 74LS 7
Yenka-Modell Demonstration
2Bit Ampelansteuerung Aufgabenstellung: Die Ampelphasen ROT ROT-GELB GRÜN GELB sollen mit zwei Bit gesteuert werden E E2 Rot Ge Gn
Ampel noch mal konkret... & & & +5V & & & +5V & 33Ώ & 33Ώ & & & +5V & & & +5V & 33Ώ & 33Ώ
Decoder: Beispiel - BCD zu 7-Segment a f b g e c d Mögliche Anzeige für..5
Tabelle... 2 3 2 2 2 2 a b c d e f g...synthese?
74HC45
drei EINFACHE Beispiele
Paritätsgenerator 4bit = = = ungerade gerade bei mehr Bits entsprechend mehr XOR s
Halbadder Addition von 2 Binärziffern: + =, + =, + = + = (Übertrag!) a b & S & Ü
Volladder Addition von 3 Binärziffern Berücksichtigung des Übertrags der vorhergehenden Stelle a b Halbadder Ü S Ü c Halbadder Ü S S
Vereinfachungen von Schaltnetzen Warum? Kostenoptimierung für die Herstellung Wie Durch Vereinfachung der Boole schen Ausdrücke Zur einfacheren Schreibweise nehmen wir a b -> ab, a b -> a+b, a -> a Mit Karnaugh-Veitch Plänen Mit Computerprogrammen
Sequentielle Schaltungen bisher: Wert der Ausgabevariablen nur vom Zustand der Eingabevariablen abhängig (Schaltnetz) y = f(x) neu: Wert der Ausgabevariablen zusätzlich auch vom Zustand der Schaltung abhängig (Schaltwerk) y = f(x,z); z =g(x,z)
Bsp. RS-Flip-Flop ungetaktet S Q R Q S S Q NAND-Technik R R Q
Yenka Modell
Bsp. a RS-Flip-Flop ungetaktet setzen mit high S Q R Q S S Q NAND-Technik R R Q
Yenka Modell
Zustandstabelle RS Flipflop Eingangsgrößen S R Q m Q m+ undef. undef.
Bsp. 2 RS-Flip-Flop getaktet Übernahme der Information nur wenn t = S & & Q R & Q C S S Q C Schaltsymbol R R Q
Bsp. 3 D-Flip-Flop (Latch) D & & Q & Q C D D Q C Schaltsymbol Q
Bsp. 4 JK Flip-Flop J S Q C C K R Q
Zustandstabelle JK Flipflop J K Q m Q m+
Anwendung Binärzähler
Anwendung Schieberegister
weitere Beispiele n-bit Latch z.b. Ports im E/A Adressraum n-bit Speicher --> Statische RAMs da teuer, Anwendung hauptsächlich als Cache (der Arbeitsspeicher ist dynamischer RAM!) Arithmetische Schaltungen z.b. Serienaddierwerk
Schaltnetze als Zustandsdiagramme S Q= J=K= J=,K= S Q= J=K= J=,K= J=K= J=,K= J=K= J=,K= S 7 S S J-K Flip Flop S 6 S 2 S 5 S 3 3Bit Zähler S 4
wie der Computer rechnet
Festkommarechenwerk nach // Set/Reset Flags Flag-Register C OV N Z Ergebnis: Flags Ergebnis: ALU allg. Register- Speicherbefehle Ladebefehle block MPX ALU Speicheroperand Funktionsauswahl
eine ALU (748) Aufgaben der ALU arithmetische Operationen Demonstration z.b. Addition, Subtraktion, Komplement, Inkrement, Dekrement,... logische Operationen AND, OR, XOR, NOT,... vgl. Dokumentation ALU 74F8.pdf
Festkommaaddition Erinnerung: Volladder Addition von Maschinenworten serieller Addierer (sequentieller Addierer) parallele Addierer vollständiges Schaltnetz RCA (Ripple Carry Adder) CLAA (Carry Look Ahead Adder)
Volladder Addition von 3 Binärziffern Berücksichtigung des Übertrags der vorhergehenden Stelle a b Halbadder Ü S Ü Ü c Halbadder S S
Addition von Maschinenworten + + ------------ ----------- x24+x8d = xb x92+x93 = x25
sequentieller Addierer T T........ a S T b VA c Ü T D D-FF Q Zeitbedarf: T SA = k * T (Taktzeit)
Ripple Carry Adder (4 Bit) x3 y3 x2 y2 x y x y a b c VA Ü S a b c VA Ü S a b c VA Ü S a b c VA Ü S C4 S3 S2 S S Zeitbedarf: T CLA = k * (Laufzeit des VA)
Carry Look Ahead Adder Ausgangspunkt: maximale Beschleunigung der Addition wäre mit vollständiger Parallelisierung möglich (Schaltnetz für alle möglichen Varianten) hoher Ressourcenverbrauch (nach // DNFs mit 4*3 k- Konjunktionen je Summenbit k) Kompromiss: CLAA Kombination aus Volladdern und einem CLA-Generator Laufzeit : T CLAA = + 2 (Laufzeit eines VA + CLAG)
CLAA x3 y3 x2 y2 x y x y CLA Generator (Schaltnetz) a b c VA Ü S a b c VA Ü S a b c VA Ü S a b c VA Ü S C4 S3 S2 S S
Beispiel: Kombination von 8 74F8 und 2 74F82 (32 Bit ALU) Quelle: Fairchild Semiconductor, 74F82 Manual
einige Bemerkungen zur Subtraktion eigenständige Subtraktionsschaltungen wären möglich aus dem Zusammenhang mit der Darstellung negativer Zahlen als Zweierkomplement ergibt sich die -> Rückführung der Subtraktion auf die Addition der entsprechend Zahl im Zweierkomplement Beispiel (8 Bit): 68-43 = 68 + (43) zk = 68 + 23 = 25 (eigentlich 28 = x9 (da 8 Bit, bleibt nur x9 = 25 übrig, die setzt das Carry Flag)
Multiplikation gefunden in /2/: Multiplication is vexation, Division is as bad; The rule of three doth puzzle me, And practice drives me mad. Anonymous, Elizabethan manuscript, 57 offensichtlich ist die Multiplikation von zwei Zahlen im Stellenwertsystem mit größeren Schwierigkeiten verbunden als die Addition! Befehle zur Multiplikation sind erst spät in die ISA einer CPU integriert worden: der Z8-Prozessor hat keinen Multiplikations- oder Divisionsbefehl, aktuelle PIC Mikrocontroller ebenfalls nicht! Im Allgemeinen wird für die Multiplikation von Maschinenworten kein Schaltnetz erstellt (sehr aufwendig für akzeptable Wortbreite). >Multiplikation wird algorithmisch behandelt (Mikrocode).
Algorithmen zur Multiplikation von Festkommazahlen Beachte vorher: Multiplikation mit 2 kann durch "links schieben" erreicht werden. für positive Zahlen (Vorzeichenproblematik kann man extra behandeln) Multiplikation durch wiederholte Addition langsamste Form des Multiplikationsalgorithmus Multiplikation durch Kombination von Additionen und Verschiebungen für auch vorzeichenbehaftete Zahlen (Zweierkomplement) der Algorithmus von Booth
Vorbemerkungen für die Addition von n-bit-maschinenworten genügt ein n-bit Ergebnisregister (+ Carry-Flag). für die Multiplikation von zwei n-bit- Maschinenworten ist ein größeres Ergebnisregister (2*n-Bit) notwendig! in einer realen ISA wird das Ergebnis einer Multiplikation meist in zwei (aufeinanderfolgenden) allgemeinen Registern abgelegt.
...wiederholte Addition sicher trivial, wird hier nicht weiter betrachtet!
Additionen und Verschiebungen (Vorwärtsalgorithmus) angelehnt an das Verfahren der schriftlichen Multiplikation: 234 x 2345 ----------- 67 + 67 = 67 4936 67 + 4936 = 5553 372 5553 + 372 = 42573 2468 42573 + 2468 = 289373 ----------- 289373 x ----------- + = + = + = + = ----------- -> Aufbereitung für Implementation
Implementaion (Vorwärtsalgorithmus) x ----------- : + L = : + L = : + L = : + L = ----------- jeweils Addition in der linken Hälfte des Ergebnisregisters, dann nach rechts schieben
Implementation (8 Bit, Produktregister 6 Bit) Start addiere den Multiplikand zur linken Hälfte des Multiplikator LSB = Produktregisters ja nein schiebe Produktregister Bit nach rechts schiebe Multiplikator Register Bit nach rechts 8ter Durchlauf Ende
Implementation: Hardware Multiplikand- Register 8 Bit 8Bit ALU Multiplikator Register 8 Bit Produktregister 6 bzw. 2x8 Bit Steuerung
Verbesserung (Produktregister hat rechts Platz!) Multiplikand- Register 8 Bit 8Bit ALU Produktregister Multiplikator 6 bzw. 2x8 Bit Steuerung
... Start addiere den Multiplikand zur linken Hälfte des Produktregister LSB = Produktregisters ja nein schiebe Produktregister Bit nach rechts 8ter Durchlauf Ende
Ausblick I: Der Algorithmus von Booth bisher: Multiplikation nur für positive Zahlen, negative ) Zahlen müssen extra behandelt werden Vorzeichenbestimmung des Ergebnisses +a * -b = -c, -a * +b = -c, -a * -b = c Umwandlung negativer Zahlen in positive Durchführung der positiven Multiplikation Rückwandlung in negative Zahlen, wenn notwendig Algorithmus von Booth behandelt auch negative Zahlen automatisch ) Zweierkomplementdarstellung
Algorithmus von Booth arbeitet ähnlich dem vorgestellten Algorithmus mit folgenden Ergänzungen: dem Produktregister wird rechts ein weites Bit angefügt (Anfangswert =) in Abhängigkeit von den jetzt zwei rechten Bits des Produktregisters wird nun vor dem (arithmetischen!) schieben bei und nichts getan bei der Multiplikand addiert bei der Multiplikand subtrahiert (Zweierkomplement addiert)
Beispiel: 2 x 6 2 x 6 = x (Zk von = ) Initial: PR = Schritt : () PR = -> Schritt 2: () PR = -> Schritt 3: () PR = -> Schritt 4: () PR = -> 2
Beispiel: 2 x -6 2 x -6 = x (Zk von = ) Initial: PR = Schritt : () PR = -> Schritt 2: () PR = -> Schritt 3: () PR = -> Schritt 4: () PR = -> -2
Beispiel: -2 x 6-2 x 6 = x (Zk von = ) Initial: PR = Schritt : () PR = -> Schritt 2: () PR = -> Schritt 3: () PR = -> Schritt 4: () PR = -> -2
Beispiel: -2 x -6-2 x -6 = x (Zk von = ) Initial: PR = Schritt : () PR = -> Schritt 2: () PR = -> Schritt 3: () PR = -> Schritt 4: () PR = -> 2
Division ähnliche Algorithmen können für die Division von Festkommazahlen erstellt werden. Division durch 2 kann durch "rechts schieben" erreicht werden! Die entsprechenden Divisionsalgorithmen werden hier nicht behandelt. Für das Selbststudium sei die Literatur empfohlen!
Ausblick II: Gleitkommarechenwerke Gleitkommazahlen werden im Maschinenwort in der Form.m - m -2...m -k * 2 BIAS-n dargestellt. Das Rechenwerk muss entsprechend den Regeln für die Arbeit mit Gleitkommazahlen in Exponentialdarstellung getrennte Operationen für Mantissenteil und Exponenten-teil des Maschinenworts realisieren. Dabei sind zusätzlich die Vorzeichen zu beachten. Addition, Subtraktion: gleiche Exponenten erzeugen, Mantissen addieren/subtrahieren Multiplikation Mantissen multiplizieren/dividieren, Exponenten addieren/subtrahieren
IA32 Floating Point Unit bei 386er als Koprozessor, seit 8486 Bestandteil der CPU Realisiert die Arbeit mit IEEE 754 konformen Gleitkommazahlen 32 und 64 Bit Was kann die IA32-FPU? intern wird mit 8 Bit "temporary real" gerechnet laden, speichern vier Grundrechenarten (auch ganze Zahlen) Vergleiche Betragsbildung, Vorzeichenumkehr, Reste, Runden Quadratwurzel, dualer Logarithmus, 2 x SIN, COS, partieller TAN und ARCTAN