28.04.2014 Aufrufe

Übungsblatt 11 - LRR - TUM

Übungsblatt 11 - LRR - TUM

Übungsblatt 11 - LRR - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!