FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2015/2016 Zentralübung 9 18.12.2015 Lösungsvorschlag Aufgabe 9.1 Aufgabenstellung Sei f : {0, 1}n → {0, 1} eine eindimensionale Schaltfunktion von n Variablen (0 steht für falsch und 1 steht für wahr ). Zunächst soll herausgefunden werden, wieviele eindimensionale Schaltfunktionen mit n Argumenten prinzipiell existieren. Grundidee: Betrachten wir uns eine Wahrheitstabelle für eine Schaltfunktion mit n Argumenten: x1 0 0 .. . x2 0 0 1 1 1 1 ··· ··· ··· ··· ··· xn−1 0 0 1 1 xn 0 1 .. . 0 1 f 2n Ergebnisbits Um alle Schaltfunktionen darzustellen, müsste man nun lediglich für alle Kombinationen von n Ergebnisbits eine eigene Tabelle erstellen. Durch Nachrechnen erkennt man leicht, dass dies 2(2 ) Tabellen bzw. n-dimensionale Schaltfunktionen wären. (Um alle Kombinationen der jeweils 2n n Ergebnisbits zu erhalten, benötigt man insgesamt 2(2 ) unterschiedliche Funktionen.) Im zweiten Teil der Aufgabe sollen nun alle zweidimensionalen Schaltfunktionen in einer Tabelle aufgeschrieben werden. Da die Parameterwerte für jede Funktion gleich sind, erweitern wir 2 einfach eine Wahrheitstabelle auf 2(2 ) = 16 Ergebnisspalten: 1 e1 e2 0 0 0 1 1 0 1 1 Bez. a 0 0 0 0 0 0 0 1 · 0 0 1 0 0 0 1 1 e1 0 1 0 0 0 1 0 1 e2 0 1 1 0 ⊕ 0 1 1 1 0 0 1 0 0 1 0 1 + + ⊕ 1 0 1 0 e2 1 0 1 1 1 1 0 0 e1 1 1 0 1 1 1 1 0 · 1 1 1 1 Wie leicht zu erkennen ist, finden sich die Grundoperationen UND, ODER, die Negation sowie die Exklusiv-ODER-Funktion (durch das Symbol ⊕ angedeutet) in dieser Tabelle wieder. Antworten auf die Fragen im Text + Was wird mit dem Involutionsgesetz, dem Kommutativitätsgesetz und dem Assoziativitätsgesetz ausgedrückt? Involution: (f ) = f f ·g =g·f Kommutativität: Assoziativität: (f · g) · h = f · (g · h) und f + g = g + f und (f + g) + h = f + (g + h) + Was versteht man unter Idempotenz und Absorption? Idempotenz: f ·f =f und f +f =f Absorption: f · (f + g) = f und f + (f · g) = f Interessant ist bei diesen Gesetzen die Tatsache, dass sie es ermöglichen, gezielt Redundanz ( unnötige“ Information) in eine Schaltfunktion einzubauen oder aus ihr zu entfernen. ” + Was ist die besondere Eigenschaft des Distributivitätsgesetztes der booleschen Algebra verglichen z. B. mit der Algebra der reellen Zahlen? Das Distributivitätsgesetz in der booleschen Algebra funktioniert im Gegensatz zur Algebra reeller Zahlen für beide Operationen UND und ODER, während sonst nur das Ausmultipli” zieren“ bzw. Ausklammern“ definiert sind: ” Distributivität: f · (g + h) = f · g + f · h und f + (g · h) = (f + g) · (f + h) Auch wenn also die Schreibweisen · und + an elementare Algebra erinnern, muss man sich die Unterschiede z. B. beim Distributivitätsgesetz stets vor Augen halten. 2 + Skizzieren Sie die De Morgansche Regel. de Morgan: f · g = f + g und f +g =f ·g Das Bemerkenswerte an dieser Regel ist, dass sie es uns ermöglicht, Ausdrücke, die beispielsweise auf UND-Verknüpfungen basieren, auch durch ODER-Verknüpfungen zu beschreiben. Darüberhinaus ist die De Morgansche Regel auch als ein Hinweis darauf zu verstehen, dass man im Extremfall lediglich einen NICHT-ODER-Operator (NOR) oder eine NICHT-UND-Operator (NAND) benötigt, um damit alle Operationen der booleschen Algera zu verwirklichen. + Was besagt das Neutralitätsgesetz? Neutralität: f · (g + g) = f und f + (g · g) = f Genau wie oben hilft uns das Neutralitätsgesetz beim Vereinfachen oder auch bewussten Vergrößern von Schaltfunktionen. + Warum ist die Wahrheitstabelle nicht für alle möglichen Gelegenheiten eine günstige Darstellungsform? Der Platzbedarf einer Wahrheitstabelle (in Zeilen) wächst exponentiell mit der Anzahl ihrer Parameter. Eine Schaltfunktion mit 16 Parametern würde demnach 216 = 65536 Zeilen benötigen. + Wann ist eine DNF günstiger als eine KNF und umgekehrt? Hat dies auch technische Auswirkungen? Eine DNF bzw. eine KNF lassen sich direkt in zweistufige Schaltnetze umwandeln. Die UNDverknüpften Minterme der DNF in Form von UND-Schaltnetzen (auch UND-Gatter genannt) bilden dabei die erste Stufe, die dann über ein ODER-Gatter zusammengeschaltet werden können. Folgende Darstellung erhält man daher für DNF bzw. KNF: Disjunktive Normalform Konjunktive Normalform e1 e1 & >= 1 en en >= 1 a & e1 e1 & >= 1 en en erste Stufe (UND-Gatter) zweite Stufe (ODER-Gatter) erste Stufe (ODER-Gatter) 3 zweite Stufe (UND-Gatter) a Eine DNF ist also günstiger, wenn die Einsmenge einer Schaltfunktion weniger mächtig als die Nullmenge ist. Technisch ausgedrückt bedeutet dies, dass man weniger UND-Gatter in der ersten Stufe des Schaltnetzes benötigt als ODER-Gatter in einer KNF-Umsetzung nötig wären. Zudem wird die Anzahl der Eingänge in das ODER-Gatter der zweiten Stufe verringert. Dual gilt dies natürlich entsprechend. + Wandeln sie die DNF von f in eine KNF um. + Wandeln sie die KNF von g in eine DNF um. f (x, y, z) = xyz + xyz = xz · (y + y) (1) (2) Während also f zuvor über die Minterme xyz und xyz beschrieben war, ist es nun über die Maxterme x, z, und y + y ausgedrückt. (Natürlich lässt sich der letzte Ausdruck noch vereinfachen . . . ) g(x, y, z) = = = = = = = (x + y + z) · (x + y + z) · (x + y + z) z + (x + y) · (x + y) · (x + y) z + (xx + xy + xy + yy) · (x + y) z + (x + xy + xy) · (x + y) z + (xx + xy + xx y + xyy + xyx + xyy) z + (xy + xy) z + xy (3) (4) (5) (6) (7) (8) (9) Schaltfunktion g ist somit nun durch die Minterme z und xy ausgedrückt. (Es ist hilfreich, sich klarzumachen, welche Gesetze bei den jeweiligen Umformungen verwendet wurden. Als Hinweis bei den Vereinfachungen vergegenwärtige man sich Idempotenz, Distributivität und Neutralität.) Lösungsvorschlag Aufgabe 9.2 Zunächst sollte die Funktionstabelle für die einzelnen Personen aufgestellt werden, um zu ermitteln, wann sie granteln. Daraus kann man dann ermitteln, zu welchen Gelegenheiten Ruhe herrscht. Die ersten vier Spalten geben die Kombination der Anwesenheit der vier beteiligten Personen an. Die folgenden vier Spalten sind aus den Bedingungen abgeleitet, die für das Granteln der einzelnen Personen angegeben sind. Aus einer einfachen NICHT-ODER-Verknüpfung (NOR) erhält man dann als letze Spalte die Schaltfunktion, die die Ruhe im Raum angibt. 4 Anwesenheit A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 F 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 P 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Granteln bei Ruhe Anwesenheit A F P B R 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 Als DNF aufgeschrieben ergibt sich: R = A F P B + A F P B + AF P B + AF P B + AF P B Die algebraische Minimierung dieser DNF kann z. B. folgendermaßen erfolgen: R = = = = B · [A F P + A F P + AF P + ∗ AF P + AF P ] B · [A F · (P + P ) + F P · (A + A) + AF · (P + P )] B · [A · (F + F ) + F P ] B A + BF P (10) (11) (12) (13) Folgende Gesetze wurden für die Umformungen verwendet: Um auf (10) zu kommen, reicht das Distributivitätsgesetz, nach (11) kommt man, indem man mit Hilfe der Idempotenz an der mit ∗ markierten Stelle den Term AF P +“ zusätzlich erzeugt und den Inhalt der Klammer ” mit dem Distributivitätsgesetz umordnet ( Ausklammern“). Durch das Neutralitätsgesetz und ” anschließend die erneute Anwendung des Distributivitätsgesetzes gelangt man schließlich zu (12). Der letzte Schritt besteht dann in der umgekehrten Anwendung der Distributivität und hat (13) zur Folge. 5 Lösungsvorschlag Aufgabe 9.3 library IEEE; use IEEE.std_logic_1164.all; -- Wir brauchen std_logic aus der Bibliothek -- Definition der Ein- und Ausgänge (Ports) mit den passenden Datentypen -- Der Baustein (sog. entity) soll "ruhe_detektor" heissen. entity ruhe_detektor is port ( f, p, a, b : in std_logic; es_ist_ruhe : out std_logic end ruhe_detektor; ); -- 4 Eingänge -- 1 Ausgang -- Jetzt kommt EINE mögliche Implementierung unseres Bauteils. -- Der Variantename ("version_eins") ist für unsere Zwecke egal. architecture version_eins of ruhe_detector is begin -- Hier muss die Berechnung der Ruhefunktion rein! es_ist_ruhe <= (not b and not a) or (not b and f and not p); end version_eins; 6
© Copyright 2024 ExpyDoc