Teil II Schaltfunktionen 1 Teil II.1 Zahlendarstellung 2 b-adische Systeme Sei b ∈ IN mit b > 1 und Eb = {0, 1, . . . , b − 1} (Alphabet). Dann ist jede Fixpunktzahl z (mit n Vorkomma– und k Nachkommastellen) mit 0 ≤ z · bk ≤ bn+k − 1 (und n ∈ IN , k ∈ IN0) eindeutig als Wort der Länge n + k über Eb darstellbar durch z= n−1 X zibi = (zn−1zn−2 . . . z0.z−1z−2 . . . z−k )b, zi ∈ Eb. i=−k • Dezimalsystem: E10 = {0, 1, . . . , 9} • Dual– oder Binärsystem: E2 = {0, 1} • Oktalsystem: E8 = {0, 1, . . . , 7} • Hexadezimalsystem: E16 = {0, 1, . . . , 9, A, B, C, D, E, F } 3 Umrechnung Dezimal → Basis b Gegeben: d10 . . . eine Dezimalzahl (ohne Nachkommastellen) Gesucht: (zn−1zn−2 . . . z0)b = d10 Algorithmus: i := 0 while d != 0 do z[i] := d mod b d := d div b i := i+1 endwhile // // // // // Stelle solange d ungleich 0 Rest von d div b ganzzahlige Division erhöhe Stelle 4 Nachkommastellen: Dezimal → Basis b Gegeben: d10 = (0.x1 . . . xk )10: k Nachkommastellen Gesucht: (0.z1 . . . zj )b = d10 Algorithmus: i := 1 while d != 0 do z[i] := truncate(d * b) d := d * b - z[i] i := i+1 endwhile // // // // // Stelle solange d ungleich 0 Vorkommastelle (0 <= z[i] <= b-1) Nachkommastellen erhöhe Stelle 5 Beispiel 25.310 25 12 6 3 1 div div div div div 2 2 2 2 2 = 12 Rest : 1 = 6 Rest : 0 = 3 Rest : 0 = 1 Rest : 1 = 0 Rest : 1 0.3 0.6 0.2 0.4 0.8 0.6 ... ∗ ∗ ∗ ∗ ∗ ∗ 2 2 2 2 2 2 = = = = = = 0.6 1.2 0.4 0.8 1.6 1.2 z1 z2 z3 z4 z5 z6 =0 =1 =0 =0 =1 = 1 = z2 25.310 = 11001.010011001 . . .2 = 11001.010012 6 Umrechnung Basis b → Dezimal Gegeben: (zn−1zn−2 . . . z0)b Gesucht: d10 = (zn−1zn−2 . . . z0)b Algorithmus: i := n-1 d := 0 while i >= 0 do d := b*d + z[i] i := i-1 endwhile // // // // // Stelle Initialisierung solange i grösser oder gleich 0 berechne nächste Stelle vermindere Index Basiert auf der Äquivalenz (Hornerschema): Pn−1 Pn−1 i i−1 ) = z b = z + b( z b i 0 i i=0 i=1 = z0 + b(z1 + b(. . . b(zn−2 + bzn−1) . . .)) 7 Beispiel = = = = = 0 1 3 6 12 25 ∗ ∗ ∗ ∗ ∗ 2 2 2 2 2 + + + + + 1 1 0 0 1 8 Darstellung negativer Zahlen z = (zn−1 . . . z0.z−1 . . . z−k )2 eine n+k Dualzahl in Fixpunktdarstellung • Einerkomplement: K1(z) = (z n−1z n−2 . . . z 0.z −1 . . . z −k )2 mit zi = 0 ↔ z i = 1, und z i = zi. • Zweierkomplement: K2(z) = (K1(z) + 1 ulp)modulo2n = 2n − z • b-Komplement für n + k Fixpunktzahlen: Kb(z) = (z̃z−1z̃n−2 . . . z̃0.z̃−1 . . . z̃−k )b + 1 ulp 9 Beispiel Bei einer Wortlänge von n = 8 Bits lauten die Darstellungen von +92 und -92 im Einer– bzw. Zweierkomplement: Komplement +92 Einer– dual 01011100 hexadezimal 5C Zweier– dual 01011100 hexadezimal 5C -92 dual 10100011 hexadezimal A3 dual 10100100 hexadezimal A4 10 Subtraktion mit Zweier-Komplement x − y = x + K2(y) Für n = 8, berechne 45 − 92 45 = 25 + 23 + 22 + 20: + K2(92): (00101101)2 (10100100)2 (11010001)2 = K2(z) Aus K2(z) = (11010001)2 folgt: z = K1(K2(z) − 1 ulp) = K1((11010001)2 − 1) = (00101111)2 = 25 + 23 + 22 + 21 + 20 = 47 11 Gleitkommazahlen nach IEEE 754/854 Vorzeichen–Bit ↓ Exponent: l Bit Mantisse: m Bit S el−1el−2 . . . . . . . . . e1e0 fm−1fm−2 . . . . . . . . . . . . f1f0 Exponentencharakteristik : E = (el−1el−2 . . . . . . e1e0)2 Mantisse : M = (fm−1fm−2 . . . . . . f1f0) DargestellteZahl : (−1)S · (1.M )2 · 2(E−EBias) (−1)S · (0.M )2 · 21−EBias (−1)S · 0 (−1)S · ∞ NaN 1 ≤ E ≤ 2 · EBias E = 0, M 6= 0 E = 0, M = 0 E = 2 · EBias + 1, M = 0 E = 2 · EBias + 1, M = 6 0 normalisiert denormalisiert Null mit Vorz. ∞ mit Vorz. Not a Number 12 Bereich und Genauigkeit • Mantisse m . . . Genauigkeit • Exponent l − EBias . . . Größe des Zahlenbereichs. Genauigkeit single: 32 Bit double: 64 Bit Exponent l= 8 l = 11 Mantisse m = 23 m = 52 EBias 127 1023 Bereich 1.5 · 10−45 . . . 3.4 · 1038 5.0 · 10−324 . . . 1.7 · 10308 Stellen 7 – 8 15 – 16 Beispiel: 1.0 single Exponent 1.0 ∗ 20 = 1.0 ∗ 2127−127 Mantisse z }| { z }| { = ˆ 0 01111111 00000000000000000000000 = $3F 800000 double Exponent 1.0 ∗ 20 = 1.0 ∗ 21023−1023 Mantisse z }| { z }| { = ˆ 0 01111111111 00000...............00000 | {z } 52 Nullen = $3F F 0000000000000 13 Umwandlung Dezimal → Binär • Gegeben: z • Schritt 1: Mantisse M = z ∗ 2y sodass 1 <= M < 2 • Schritt 2: Exponent E = y + EBias Beispiel: 6.5 = 22 · 1.625 µ ¶ 1 1 0 = 22 · 1 + + 2 + 3 2µ 2 2 ¶ 1 1 0 = 2129−127 · 1 + + 2 + 3 2 2 2 = 2129−127 · (1.101)2 = ˆ 0 10000001 10100000000000000000000 = $40D00000. 14 Teil II.2 Boolesche Algebra 15 Boolesche Algebra Für B = {0, 1}, x, y ∈ B seien folgende Verknüpfungen definiert: x ∪ y := Max(x, y), x ∩ y := Min(x, y), x := 1 − x, (B, ∪, ∩, ) ist eine Boolesche Algebra 16 Gesetze der Booleschen Algebra a) Kommutativgesetze: x ∪ y = y ∪ x, x ∩ y = y ∩ x b) Assoziativgesetze: (x ∪ y) ∪ z = x ∪ (y ∪ z), (x ∩ y) ∩ z = x ∩ (y ∩ z) c) Verschmelzungsgesetz: (x ∪ y) ∩ x = x, (x ∩ y) ∪ x = x d) Distributivgesetze: x ∩ (y ∪ z) = (x ∩ y) ∪ (x ∩ z), x ∪ (y ∩ z) = (x ∪ y) ∩ (x ∪ z) e) Komplementgesetz: x ∪ (y ∩ y) = x, x ∩ (y ∪ y) = x f) x ∪ 0 = x, x ∩ 0 = 0, x ∩ 1 = x, x ∪ 1 = 1 g) de Morgansche Regeln: x ∪ y = x ∩ y, x ∩ y = x ∪ y h) x = x ∪ x = x ∩ x = x 17 Potenzmenge Für B = P(A) die Menge aller Teilmengen von A ist (B, ∪, ∩, ) ebenfalls eine Boolesche Algebra 18 Teil II.3 Schaltfunktionen 19 Schaltfunktionen • Schaltfunktion: F : B n → B m • Totale Schaltfunktion: für alle 2n Inputs gibt es einen eindeutigen Output, der alle m Bits belegt. • Boolesche Schaltfunktion: f : B n → B • Komponenten Darstellung: F (x1, . . . , xn) = (f1(x1, . . . , xn), f2(x1, . . . , xn), . . . , fm(x1, . . . , xn)). • Anzahl verschiedener Boolescher Funktion: 22 n 20 Beispiele • Addition zweier 2 Bit Zahlen: A : B 4 → B 3 A(x1, x2, x3, x4) = (a1(x1, x2, x3, x4), a2(x1, x2, x3, x4), a3(x1, x2, x3, x4)) mit a1(x1, x2, x3, x4) = x2 ⊕ x 4 a2(x1, x2, x3, x4) = x1 ⊕ x3 ⊕ (x2 ∧ x4) a3(x1, x2, x3, x4) = (x1 ∧ x3) ∨ (x1 ∧ x2 ∧ x4) ∨ (x3 ∧ x2 ∧ x4) • Sortieren von 30 16 Bit Zahlen: S : B 30∗16 → B 30∗16 21 Boolesche Funktionen für n = 2 x 0 0 1 1 x 0 0 1 1 (1) (2) (3) y 0 1 0 1 (1) (2) (3) y 0 1 0 1 x+y 1 - Max ↓ f8 1 0 0 0 x·x ≡0 f0 0 0 0 0 x⊕y = ↔ f9 1 0 0 1 x·y Min ∧ f1 0 0 0 1 x·y > 6→ f2 0 0 1 0 y 1−y ¬y f10 1 0 1 0 x x x f3 0 0 1 1 x+y ≥ ← f11 1 0 1 1 x·y < 6← f4 0 1 0 0 x 1−x ¬x f12 1 1 0 0 y y y f5 0 1 0 1 ⊕ 6 = 6 ↔ f6 0 1 1 0 x+y ≤ → f13 1 1 0 1 x+y Max ∨ f7 0 1 1 1 x·y 1 - Min ↑ f14 1 1 1 0 x+x ≡1 f15 1 1 1 1 22 Disjunktive Normalform • i = (i1i2 . . . in)2 ist ein einschlägiger Index zu f : B n → B genau dann wenn f (i1, i2, . . . , in)2 = 1 • für einen einschlägigen Index i einer Booleschen Funktion f , heißt i i die Funktion mi(x1, x2, . . . , xn) := x11 x22 . . . xinn der i-te Minterm von f , wobei i xjj := ( xj falls ij = 1 xj falls ij = 0 • Darstellungssatz: Für jede Boolesche Funktion f gilt (DNF): f = X mi . i∈I 23 Beispiel Gegeben sei die folgende Boolesche Funktion f : B 3 → B durch die Wertetabelle i 0 1 2 3 4 5 6 7 x1 0 0 0 0 1 1 1 1 x2 0 0 1 1 0 0 1 1 x3 0 1 0 1 0 1 0 1 f (x1, x2, x3) 0 0 0 1 0 1 0 1 Einschlägigen Indizes sind 3, 5, 7. Die zugehörigen Minterme sind: m3(x1, x2, x3) = x1x2x3 m5(x1, x2, x3) = x1x2x3 m7(x1, x2, x3) = x1x2x3. f (x1, x2, x3) = x1x2x3 + x1x2x3 + x1x2x3 24 Funktionale Vollständigkeit Ein System B = {f1, . . . , fn} Boolescher Funktionen heißt (funktional) vollständig, wenn jede Boolesche Funktion allein durch Einsetzungen bzw. Kompositionen von Funktionen aus B dargestellt werden kann. a) {+, ·, } ist funktional vollständig. b) {+, } ist funktional vollständig. c) {·, } ist funktional vollständig. d) {NAND} ist funktional vollständig. e) {NOR} ist funktional vollständig. 25 Konjunktive Normalform i • i-ter Maxterm: Mi(x1, . . . , xn) := mi(x1, ..., xn) = x11 + . . . + xinn • Konjunktive Normalform: Für jede Boolesche Funktion f gilt (KNF): f = Y Mi i∈I / KN F (f ) = DN F (f ) • Beispiel: f (x1, x2, x3) = x1x2x3 + x1x2x3 + x1x2x3 = M0 · M 1 · M 2 · M 4 · M 6 = (x1 + x2 + x3) · (x1 + x2 + x3) · (x1 + x2 + x3) ·(x1 + x2 + x3) · (x1 + x2 + x3). 26 Teil II.4 Schaltnetze 27 Bausteine 28 Beispiel f (x1, x2, x3) = x1x2x3 + x1x2x3 + x1x2x3 x1 x2 x3 1 1 & & & & & & ³1 ³1 f(x1,x2,x3) 29 Kriterien für Schaltungen • Geschwindigkeit: Minimiere Stufen • Größe: Minimiere Anzahl der Gatter • Fan-In, Fan-Out: Minimiere Anzahl der Inputs und Outputs 30 Graphen • Punktmenge P ⊆ IN . • Kantenmenge K ⊆ P × P . nicht-reflexiv • Graph G = (P, K) ungerichtet: K symmetrisch. gerichtet: K nicht symmetrisch • Pfad: (p1, p2, . . . , pn) • Zyklus: (p1, p2, . . . , pn, p1) • DAG: Gerichteter, azyklischer Graph (Directed Acyclic Graph) 31 Beispiel 32 Teil II.5 Ringsummennormalform 33 Ringsummennormalform RNF: Sei f : B n → B und I = {α1, . . . , αk } die Menge der einschlägigen Indizes zu f . Dann gilt: f = m α1 ⊕ m α2 ⊕ . . . ⊕ m αk = k X m αi i=1 34 Äquivalenzen Für alle x, y, z ∈ B gilt: a) x ⊕ 1 = x, x ⊕ 0 = x b) x ⊕ x = 0, x ⊕ x = 1 c) x ⊕ y = y ⊕ x (Kommutativität) d) x ⊕ (y ⊕ z) = (x ⊕ y) ⊕ z (Assoziativität) e) x · (y ⊕ z) = x · y ⊕ x · z (Distributivität bzgl. ·) f) 0 ⊕ 0 ⊕ . . . ⊕ 0 = 0 g) 1 | ⊕1⊕ {z. . . ⊕ 1} = n−−mal ( 1 falls n ungerade 0 falls n gerade 35 Komplementfreie RNF Reed–Muller Form: Jede Boolesche Funktion f : B n → B ist eindeutig darstellbar als Polynom (Multinom) in den Variablen x1, x2, . . . , xn mit den Koeffizienten a0, a1, . . . , a1...n ∈ B. Die Darstellung ist wie folgt: f = a0 ⊕ a 1 x1 ⊕ a 2 x2 ⊕ . . . ⊕ a n xn ⊕ a12x1x2 ⊕ . . . ⊕ an−1,nxn−1xn .. ⊕ a1...nx1x2 · . . . · xn. 36 Herleitung der komplementfreien RNF 1. Bestimme DNF über einschlägige Indizes 2. Ersetze + durch ⊕ 3. Ersetze x durch x ⊕ 1 4. Multipliziere aus unter Verwendung der Äquivalenzen für ⊕. Beispiel: f (x1, x2, x3) = x1x2x3 + x1x2x3 + x1x2x3 = x1x2x3 ⊕ x1x2x3 ⊕ x1x2x3 = (x1 ⊕ 1)x2x3 ⊕ x1(x2 ⊕ 1)x3 ⊕ x1x2x3 = x 1 x2 x3 ⊕ x 2 x3 ⊕ x 1 x2 x3 ⊕ x 1 x3 ⊕ x 1 x2 x3 = x 2 x3 ⊕ x 1 x3 ⊕ x 1 x2 x3 . 37