Übungsblatt 11 - LRR - TUM
Übungsblatt 11 - LRR - TUM
Übungsblatt 11 - LRR - TUM
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
FAKULTÄT FÜR INFORMATIK<br />
TECHNISCHE UNIVERSITÄT MÜNCHEN<br />
Lehrstuhl für Rechnertechnik und Rechnerorganisation<br />
Prof. Dr. Arndt Bode<br />
Einführung in die Rechnerarchitektur (ERA)<br />
Wintersemester 2013/2014<br />
Zentralübung <strong>11</strong> / Lösungsvorschlag 9 24.1.2014<br />
Schaltungsentwurf (3)<br />
Verhaltensbeschreibung von Schaltwerken in VHDL,<br />
Moore- und Mealy-Automaten<br />
<strong>11</strong>.1 Theoretisches Automatenmodell<br />
Im folgenden nutzen wir als mathematisches Modell von Zustandsautomaten das Quintupel<br />
wobei die Bezeichner im Einzelnen bedeuten:<br />
M = (E,A,Q,δ,λ),<br />
E = Eingangsalphabet ≃ ”<br />
Eingangskodierung“<br />
A = Ausgangsalphabet ≃ ”<br />
Ausgangskodierung“<br />
Q = Zustandsraum/-menge<br />
δ = Zustandsübergangsfunktion δ : E×Q → Q<br />
λ = Resultatsfunktion<br />
Anhand der Resultatsfunktion unterscheidet man zwei Arten von Automaten:<br />
• Solange λ nur vom aktuellen Zustand abhängig ist, d. h. also λ : Q → A gilt, spricht man<br />
von einem Moore-Automaten.<br />
• Wenn λ zusätzlich noch von den Eingängen direkt abhängt, also λ : Q × E → A gilt,<br />
erhält man einen Mealy-Automaten.<br />
1
<strong>11</strong>.2 Technische Umsetzung<br />
Im folgenden Strukturdiagramm kann man den grundsätzlichen Aufbau eines jeden Automaten<br />
(alsoeinesjedenSchaltwerks)erkennen.WährenddiebeidenSchaltfunktionenλundδ eindeutig<br />
in Schaltnetze abgebildet werden können, wird für das Verzögerungselement τ üblicherweise<br />
eine gewisse Anzahl von zustandsspeichernden und getakteten Flipflops verwendet. Hierdurch<br />
werden die an den Eingängen der Flipflops anliegenden Daten bis zum Auftreten des nächsten<br />
Taktimpulses verzögert.<br />
λ<br />
A<br />
E<br />
δ<br />
Q<br />
Q’<br />
τ<br />
= Mealy-A.<br />
☞ Welche Vor- und Nachteile können Sie sich für beide Automatentypen vorstellen?<br />
☞ Ordnen Sie die Schaltelemente eines JK-Master-Slave-Flipflops den obigen Bezeichnungen<br />
zu. Handelt es sich hierbei um einen Moore- oder einen Mealy-Automaten?<br />
<strong>11</strong>.3 Details zu VHDL-Prozessen<br />
Eine Möglichkeit zur Speicherung von Zuständen wurde in der vergangenen Übung besprochen,<br />
die genau der schaltungstechnischen Struktur entspricht. Diese (gleichzeitig gültigen)<br />
rückgekoppelten Zuweisungen sind allerdings nicht die einzige Variante und entsprechen auch<br />
nicht der ”<br />
Philosophie“ von VHDL, da hier nicht das eigentliche Verhalten der Schaltung beschrieben<br />
wird.<br />
Durch Einführung von zeitlichen Abhängigkeiten in den VHDL-Quelltext wird dieses Problem<br />
gelöst. Indem z. B. die nebenläufigen Zuweisungen nicht immer gelten dürfen, wird implizit eine<br />
Speicherfunktion verwirklicht. Das Sprachkonstrukt, welches diese Bedingungen erfüllt, ist der<br />
schon in früheren Übungen erwähnte Prozess 1 .<br />
1 Nicht unähnlich einem allgemeinen Prozess, dennoch sollte man die Definitionen auseinanderhalten.<br />
2
Ein ganzer Prozess, der die nachfolgende Form hat, wird wie eine einzelne nebenläufige Zuweisung<br />
verwendet:<br />
: PROCESS [()]<br />
BEGIN<br />
-- Prozess-Statements<br />
-- ...<br />
END PROCESS:<br />
Die Sensitivity-List ist eine durch Kommata getrennte Liste von Signalnamen. Eine Änderung<br />
des Wertes eines dieser Signale ist die Bedingung erfüllt, bei der das innerhalb eines Prozesses<br />
formulierte Verhalten aktiv wird.<br />
Weiterhin gilt für Prozesse in VHDL (Wiederholung):<br />
• Alle Signalwertänderungen, die innerhalb eines Prozesses beschrieben werden, werden<br />
erst bei Erreichen des END PROCESS-Statement wirksam. Das bedeutet auch, dass<br />
Zwischenergebnisse innerhalb eines Prozesses, die noch während desselben Aufrufs des<br />
Prozesses weiterverwendet werden sollen, nicht in Signalen zwischengespeichert werden<br />
können. (Hierfür gibt es die Klasse der Variablen, die im Moment für uns noch ohne<br />
Bedeutung ist.)<br />
• Obwohl in Prozessen vielfach algorithmische Beschreibungen eines Schaltungsverhaltens<br />
enthalten sind, darf man sich die Aktivierung eines Prozesses nicht als sequentielle Abarbeitung<br />
eines Programmes verstehen. Im Rahmen des beschriebenen Modells laufen alle<br />
Vorgänge innerhalb eines Prozesses in Nullzeit ab!<br />
☞ Beschreiben Sie das Verhalten eines UND-Gatters mit Hilfe eines Prozesses. Nutzen Sie<br />
dazu eine IF-Anweisung mitsamt ELSE-Zweig.<br />
☞ Was passiert beim Fortlassen des ELSE-Zweiges?<br />
<strong>11</strong>.4 Implizite Logik / Inferred Logic<br />
ProzessesindnichtimmeraktivwienebenläufigeZuweisungen.Hierausergibtsichzwangsläufig,<br />
dass Signale, die nur innerhalb von Prozessen beeinflusst werden, gespeichert werden müssen.<br />
Konsequenterweise wird bei der automatisierten Synthese dann auch jeweils ein Speicherelement<br />
(Flipflop) erzeugt. Diese zusätzlichen Bauelemente, die man nicht explizit spezifiziert<br />
hatte, sondern lediglich aufgrund der VHDL-Prozesssemantik in eine spätere Schaltungsstruktur<br />
eingebaut werden, nennt man Inferred Logic. Diese implizite Logik hat Vor- und Nachteile:<br />
SieermöglichteinerseitseineeinheitlicheundweithingutverständlicheFormulierungvonSchaltungsverhalte,<br />
ist aber auch oft Quelle von Fehlern und ineffizienten Designs.<br />
☞ Nutzen Sie implizite Logik zur Implementierung eines transparenten D-Flipflops. Wo liegt<br />
der Unterschied zum Master-Slave-Flipflop von Aufgabe 10.2?<br />
3
<strong>11</strong>.5 Flipflops in VHDL (Teil 2)<br />
Neben den rein pegelabhängigen Flipflops (im Englischen oft “Latch” bzw. “level-triggered FF”<br />
genannt) und den flankengesteuerten Flipflops gibt es auch Mischformen, die abhängig vom<br />
Eingang pegel- und flankengesteuert sind. Auch dies lässt sich elegant in VHDL beschreiben,<br />
dazu muss im Prozess nur auf die Priorisierung der verschiedenen Ereignisse geachtet werden.<br />
☞ Wie muss demnach ein flankengesteuertes D-Flipflop mit asynchronem (= taktunabhängigem)<br />
Rücksetzeingang in VHDL formuliert werden?<br />
Aufgabe <strong>11</strong>.1<br />
Beschreiben Sie folgenden endlichen Zustandsautomaten in VHDL:<br />
e1 = 0<br />
e1 = 1 & e2 = 0<br />
e1 = 0<br />
Z0<br />
a0
FAKULTÄT FÜR INFORMATIK<br />
TECHNISCHE UNIVERSITÄT MÜNCHEN<br />
Lehrstuhl für Rechnertechnik und Rechnerorganisation<br />
Prof. Dr. Arndt Bode<br />
Einführung in die Rechnerarchitektur (ERA)<br />
Wintersemester 2013/2014<br />
Lösungsvorschlag zur Zentralübung 9 10.1.2013<br />
Lösungsvorschlag Aufgabe 9.1<br />
Aufgabenstellung<br />
Sei f : {0,1} n → {0,1} eine eindimensionale Schaltfunktion von n Variablen (0 steht für falsch<br />
und 1 steht für wahr).<br />
Zunächst soll herausgefunden werden, wieviele eindimensionale Schaltfunktionen mit n Argumenten<br />
prinzipiell existieren.<br />
Grundidee: Betrachten wir uns eine Wahrheitstabelle für eine Schaltfunktion mit n Argumenten:<br />
x 1 x 2 ··· x n−1 x n f<br />
0 0 ··· 0 0<br />
0 0 ··· 0 1 2 n<br />
. . Ergebnis-<br />
1 1 ··· 1 0 bits<br />
1 1 ··· 1 1<br />
Um alle Schaltfunktionen darzustellen, müsste man nun lediglich für alle Kombinationen von<br />
ErgebnisbitseineeigeneTabelleerstellen.DurchNachrechnenerkenntmanleicht,dassdies2 (2n )<br />
Tabellen bzw. n-dimensionale Schaltfunktionen wären. (Um alle Kombinationen der jeweils 2 n<br />
Ergebnisbits zu erhalten, benötigt man insgesamt 2 (2n) unterschiedliche Funktionen.)<br />
ImzweitenTeilderAufgabesollennunallezweidimensionalenSchaltfunktionenineinerTabelle<br />
aufgeschrieben werden. Da die Parameterwerte für jede Funktion gleich sind, erweitern wir<br />
einfach eine Wahrheitstabelle auf 2 (22) = 16 Ergebnisspalten:<br />
5
e 1 e 2 a<br />
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1<br />
0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1<br />
1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1<br />
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1<br />
Bez. · e 1 e 2 ⊕ + + ⊕ e 2 e 1 ·<br />
Wie leicht zu erkennen ist, finden sich die Grundoperationen UND, ODER, die Negation sowie<br />
die Exklusiv-ODER-Funktion (durch das Symbol ⊕ angedeutet) in dieser Tabelle wieder.<br />
Antworten auf die Fragen im Text<br />
☞ Was wird mit dem Involutionsgesetz, dem Kommutativitätsgesetz und dem Assoziativitätsgesetz<br />
ausgedrückt?<br />
Involution:<br />
(f) = f<br />
Kommutativität: f ·g = g ·f und f +g = g +f<br />
Assoziativität:<br />
(f ·g)·h = f ·(g ·h) und (f +g)+h = f +(g +h)<br />
☞ Was versteht man unter Idempotenz und Absorption?<br />
Idempotenz:<br />
f ·f = f und f +f = f<br />
Absorption: f ·(f +g) = f und f +(f ·g) = f<br />
Interessant ist bei diesen Gesetzen die Tatsache, dass sie es ermöglichen, gezielt Redundanz<br />
( ”<br />
unnötige“ Information) in eine Schaltfunktion einzubauen oder aus ihr zu entfernen.<br />
☞ Was ist die besondere Eigenschaft des Distributivitätsgesetztes der booleschen Algebra<br />
verglichen z. B. mit der Algebra der reellen Zahlen?<br />
Das Distributivitätsgesetz in der booleschen Algebra funktioniert im Gegensatz zur Algebra<br />
reeller Zahlen für beide Operationen UND und ODER, während sonst nur das ”<br />
Ausmultiplizieren“<br />
bzw. ”<br />
Ausklammern“ definiert sind:<br />
Distributivität:<br />
f ·(g +h) = f ·g +f ·h und f +(g ·h) = (f +g)·(f +h)<br />
Auch wenn also die Schreibweisen · und + an elementare Algebra erinnern, muss man sich die<br />
Unterschiede z. B. beim Distributivitätsgesetz stets vor Augen halten.<br />
6
☞ Skizzieren Sie die de-Morgan’sche Regel.<br />
de Morgan: f ·g = f +g und f +g = f ·g<br />
Das Bemerkenswerte an dieser Regel ist, dass Sie es uns ermöglicht, Ausdrücke, die beispielsweise<br />
auf UND-Verknüpfungen basieren, auch durch ODER-Verknüpfungen zu beschreiben.<br />
Darüberhinaus ist die de-Morgansche Regel auch als ein Hinweis darauf zu verstehen, dass man<br />
imExtremfalllediglicheinenNICHT-ODER-Operator(NOR)odereineNICHT-UND-Operator<br />
(NAND) benötigt, um damit alle Operationen der booleschen Algera zu verwirklichen.<br />
☞ Was besagt das Neutralitätsgesetz?<br />
Neutralität:<br />
f ·(g +g) = f und f +(g ·g) = f<br />
Genau wie oben hilft uns das Neutralitätsgesetz beim Vereinfachen oder auch bewussten Vergrößern<br />
von Schaltfunktionen.<br />
☞ Warum ist die Wahrheitstabelle nicht für alle möglichen Gelegenheiten eine günstige Darstellungsform?<br />
Der Platzbedarfeiner Wahrheitstabelle (in Zeilen) wächst exponentiell mit der Anzahl ihrer Parameter.<br />
Eine Schaltfunktion mit 16 Parametern würde demnach 2 16 = 65536 Zeilen benötigen.<br />
☞ Wann ist eine DNF günstiger als eine KNF und umgekehrt? Hat dies auch technische<br />
Auswirkungen?<br />
Eine DNF bzw. eine KNF lassen sich direkt in zweistufige Schaltnetze umwandeln. Die UNDverknüpften<br />
Minterme der DNF in Form von UND-Schaltnetzen (auch UND-Gatter genannt)<br />
bilden dabei die erste Stufe, die dann über ein ODER-Gatter zusammengeschaltet werden<br />
können. Folgende Darstellung erhält man daher für DNF bzw. KNF:<br />
Disjunktive Normalform<br />
Konjunktive Normalform<br />
e1<br />
e1<br />
en<br />
&<br />
en<br />
>= 1<br />
>= 1 a<br />
& a<br />
e1<br />
e1<br />
en<br />
&<br />
en<br />
>= 1<br />
erste Stufe<br />
(UND-Gatter)<br />
zweite Stufe<br />
(ODER-Gatter)<br />
erste Stufe<br />
(ODER-Gatter)<br />
zweite Stufe<br />
(UND-Gatter)<br />
7
Eine DNF ist also günstiger, wenn die Einsmenge einer Schaltfunktion weniger mächtig als<br />
die Nullmenge ist. Technisch ausgedrückt bedeutet dies, dass man weniger UND-Gatter in der<br />
ersten Stufe des Schaltnetzes benötigt als ODER-Gatter in einer KNF-Umsetzung nötig wären.<br />
Zudem wird die Anzahl der Eingänge in das ODER-Gatter der zweiten Stufe verringert. Dual<br />
gilt dies natürlich entsprechend.<br />
☞ Wandeln sie die DNF von f in eine KNF um.<br />
☞ Wandeln sie die KNF von g in eine DNF um.<br />
f(x,y,z) = xyz +xyz (1)<br />
= xz ·(y +y) (2)<br />
Während also f zuvor über die Minterme xyz und xyz beschrieben war, ist es nun über die<br />
Maxterme x, z, und y +y ausgedrückt. (Natürlich lässt sich der letzte Ausdruck noch vereinfachen<br />
...)<br />
g(x,y,z) = (x+y +z)·(x+y +z)·(x+y +z) (3)<br />
= z +(x+y)·(x+y)·(x+y) (4)<br />
= z +(xx+xy +xy +yy)·(x+y) (5)<br />
= z +(x+xy +xy)·(x+y) (6)<br />
= z +(xx+xy +xxy +xyy +xyx+xyy) (7)<br />
= z +(xy +xy) (8)<br />
= z +xy (9)<br />
Schaltfunktion g ist somit nun durch die Minterme z und xy ausgedrückt. (Es ist hilfreich,<br />
sich klarzumachen, welche Gesetze bei den jeweiligen Umformungen verwendet wurden. Als<br />
Hinweis bei den Vereinfachungen vergegenwärtige man sich Idempotenz, Distributivität und<br />
Neutralität.)<br />
Lösungsvorschlag Aufgabe 9.2<br />
Zunächst sollte die Funktionstabelle für die einzelnen Personen aufgestellt werden, um zu ermitteln,<br />
wann sie granteln. Daraus kann man dann ermitteln, zu welchen Gelegenheiten Ruhe<br />
herrscht.<br />
Die ersten vier Spalten geben die Kombination der Anwesenheit der vier beteiligten Personen<br />
an. Die folgenden vier Spalten sind aus den Bedingungen abgeleitet, die für das Granteln der<br />
einzelnen Personen angegeben sind. Aus einer einfachen NICHT-ODER-Verknüpfung (NOR)<br />
erhält man dann als letze Spalte die Schaltfunktion, die die Ruhe im Raum angibt.<br />
8
Anwesenheit Granteln bei Ruhe<br />
Anwesenheit<br />
A F P B A F P B R<br />
0 0 0 0 0 0 0 0 1<br />
0 0 0 1 0 0 0 1 0<br />
0 0 1 0 0 0 0 0 1<br />
0 0 1 1 0 0 0 1 0<br />
0 1 0 0 0 0 0 0 1<br />
0 1 0 1 0 0 0 1 0<br />
0 1 1 0 0 0 0 0 1<br />
0 1 1 1 0 0 0 1 0<br />
1 0 0 0 1 0 0 0 0<br />
1 0 0 1 1 0 0 1 0<br />
1 0 1 0 1 0 0 0 0<br />
1 0 1 1 1 0 0 1 0<br />
1 1 0 0 0 0 0 0 1<br />
1 1 0 1 0 0 0 1 0<br />
1 1 1 0 0 0 1 0 0<br />
1 1 1 1 0 0 0 1 0<br />
Als DNF aufgeschrieben ergibt sich:<br />
R = AF P B +AFPB +AFP B +AFPB +AFP B<br />
Die algebraische Minimierung dieser DNF kann z. B. folgendermaßen erfolgen:<br />
R = B ·[AF P +AFP +AFP + ∗ AFP +AFP] (10)<br />
= B ·[AF ·(P +P)+FP ·(A+A)+AF ·(P +P)] (<strong>11</strong>)<br />
= B ·[A·(F +F)+FP] (12)<br />
= BA+BFP (13)<br />
Folgende Gesetze wurden für die Umformungen verwendet: Um auf (10) zu kommen, reicht<br />
das Distributivitätsgesetz, nach (<strong>11</strong>) kommt man, indem man mit Hilfe der Idempotenz an der<br />
mit ∗ markierten Stelle den Term “AFP+” zusätzlich erzeugt und den Inhalt der Klammer<br />
mit dem Distributivitätsgesetz umordnet (“Ausklammern”). Durch das Neutralitätsgesetz und<br />
anschließend die erneute Anwendung des Distributivitätsgesetzes gelangt man schließlich zu<br />
(12). Der letzte Schritt besteht dann in der umgekehrten Anwendung der Distributivität und<br />
hat (13) zur Folge.<br />
9
Lösungsvorschlag Aufgabe 9.3<br />
library IEEE;<br />
use IEEE.std_logic_<strong>11</strong>64.all;<br />
-- Wir brauchen std_logic aus der Bibliothek<br />
-- Definition der Ein- und Ausgänge (Ports) mit den passenden Datentypen<br />
-- Der Baustein (sog. entity) soll "ruhe_detektor" heissen.<br />
entity ruhe_detektor is<br />
port ( f, p, a, b : in std_logic;<br />
es_ist_ruhe : out std_logic );<br />
end ruhe_detektor;<br />
-- 4 Eingänge<br />
-- 1 Ausgang<br />
-- Jetzt kommt EINE mögliche Implementierung unseres Bauteils.<br />
-- Der Variantename ("version_eins") ist für unsere Zwecke egal.<br />
architecture version_eins of ruhe_detector is<br />
begin<br />
-- Hier muss die Berechnung der Ruhefunktion rein!<br />
es_ist_ruhe