Hallo, ich begrüße euch herzlich zur heutigen Vorlesung.
Bevor ich damit anfange, möchte ich euch natürlich ein gutes und
erfolgreiches neues Jahr wünschen.
Ich war ja am Montag leider nicht da, deshalb ist es das erste Mal,
dass wir uns hier, also ich und ihr, uns sehen.
Die Vorlesung hat ja am Montag stattgefunden, der Oma hat mich
vertreten und das Thema zum Entwurf asynchroner Schaltwerke hier
behandelt.
Und wir wollen halt dieses dritte große Thema der Vorlesung hier
natürlich zu Ende bringen.
Wir haben uns mit den formalen Grundlagen beschäftigt, das heißt die
Darstellungsmöglichkeiten von einem Schaltwerk kennengelernt, wo wir
die komplette Maschinerie der endlich deterministischen Automaten zur
Verfügung haben, um praktisch aus verbalen Aufgabenbeschreibungen eine
Formalisierung zu finden in Form von einem Automatengrafen, mit dem
oder aus dem wir dann praktisch die technische Realisierung eines
Schaltwerkes ableiten können.
Das ist immer, wie ich bereits gesagt habe, der schwierigste Schritt
in dem Entwurf, weil es geht natürlich darum, dass man den richtigen
Automatengrafen findet, der auch die richtigen Übergänge zwischen den
Zuständen hat.
Es geht vor allem auch darum, dass man immer den Automatengrafen
findet, der die Aufgabe mit einer möglichst geringen Anzahl von
Zuständen realisiert.
Weil letztendlich unser Ziel hier in der Vorlesung ist, dass das LD
-Prinzip so billig wie möglich ist.
Das heißt, so wenig Hardware kosten wie möglich.
Und das kann man erreichen, indem man hier möglichst geringe Zustände
bei der Realisierung hat.
Wir haben gesehen, anhand der Entwurfsaufgabe für ein asynchrones
Schaltwerk, und da waren wir eigentlich auf der Suche nach diesen
Elementen, in denen wir Informationen speichern.
Letztendlich haben wir gesagt, Schaltwerke sind Schaltungen, die ein
Gedächtnis haben.
Das heißt, sie generieren Ausgabewerte nicht nur in Abhängigkeit von
den augenblicklichen Werten der Eingabewerte, sondern von den
Eingabewerten zu vergangenen Zeitpunkten.
Das bedeutet, wir müssen diese Eingabewerte irgendwo speichern und die
Gesamtheit der Vergangenheit fassen wir in Zuständen zusammen.
Und jetzt sind wir bei der ganzen Sache auf der Suche nach technischen
Elementen, mit denen wir diese zuständig speichern.
Also nach normierten Bausteinen, deren Verhalten wir kennen, also wir
wissen, wie diese Bausteine reagieren.
Wir wissen, wie wir in diese Bausteine eine 0 oder eine 1 speichern.
Genauso wie unsere Gatter, die wir bei den Schaltnetzen damals hatten.
Wir wissen, ein Und-Gatter hat mehrere Eingänge und generiert dann
anhand von den Eingangssignalen ein Ausgangssignal.
Das Gleiche gilt hier.
Wir sind auf der Suche nach Elementen, in denen wir Informationen
speichern.
Sogenannte Zustandsspeicher.
Und wir haben damit angefangen, indem wir ein asynchrones Schaltwerk
entworfen haben in der letzten Vorlesung am Montag, wo wir praktisch
diese kompletten Schritte hier, diese unterschiedlichen Schritte des
Entwurfs bearbeitet haben.
Und anschließend sind wir zur zweiten Aufgabe, mit der sich ein
Digitaltechniker immer auch zu tun hat, und zwar zur Analyse von
diesen Schaltwerken.
Ganz kurz zusammengefasst zum Entwurf, wir sind davon ausgegangen, die
verbale Aufgabenbeschreibung war so, wir sollen einen einfachen
Speicher entwickeln oder entwerfen.
Der hat drei Funktionen.
Der soll die Information, die dort vorhanden ist, speichern.
Also er hat zwei Eingänge, R und S, wie wir das letzte Mal gesehen
haben.
Und wenn beide Eingänge null sind, dann soll die Information, die dort
gespeichert ist, drin bleiben.
Das heißt, der Folgezustand, der mit Qt plus 1 hier gekennzeichnet
ist, ist identisch mit dem Zustand zum Zeitpunkt T.
Das heißt, diese Funktionalität haben wir Speichern genannt.
Das ist übrigens unsere verbale Aufgabenbeschreibung.
Die zweite Funktionalität, die dieser Speicher haben soll, ist das
sogenannte Setzen.
Das heißt, wenn R gleich 0 bleibt und S 1 ist, dann soll der
Folgezustand, also die Information, die in dem Speicher nach diesem
Eingabewechsel gespeichert ist, 1 sein.
Und die dritte Funktionalität ist,
wenn der andere Eingang, also R steht auch für Reset, S steht für Set,
wenn R gleich 1 ist und S gleich 0 ist, dann ist der Folgezustand
immer gleich 0.
Was bedeutet das?
Das bedeutet, wenn wir dort eine 1 hatten, eine 0 haben, dann soll
eine 0 bleiben.
Das heißt, das Zurücksetzen eines zurückgesetzten Speichers ändert
nichts an dem Wert hier.
Und bei unserem Entwurf hier hatten wir zwei Eingangsvariablen von
dieser Schaltung, S und R.
Die sollen diese Funktionalitäten realisieren.
Und wir hatten eine einzige Ausgabevariable Q und diese
Ausgabevariable Q war identisch mit dem, was in dem Speicher
gespeichert ist.
Das heißt, Q oder die Ausgabe ist gleich mit dem Zustand, was im
Speicher ist.
Wie man hier sieht, der eine oder andere wird sich jetzt wundern, wo
ist R gleich S gleich 1?
Also die vierte Kombination dieser Eingangsvariablen, die taucht nicht
auf bei dieser Aufgabenbeschreibung.
Also man ist nicht daran interessiert, man hat uns nicht gesagt, bei R
gleich S gleich 1 soll dieses Schaltwerk oder dieses Speicher
irgendwas machen.
Wir wissen nur, das Schaltwerk soll diese drei Funktionalitäten
realisieren.
Und wir sind das Ganze durchgegangen, wir haben gesagt, okay, was ist
die erste Frage, die wir uns stellen müssen?
Was ist die erste Frage, die ihr euch stellen müsst, wenn ihr so eine
Aufgabe entwerfen müsst?
Ja, ich warte auf Antworten.
Von oben vielleicht.
Was ist die erste Frage, die man beantworten muss, wenn man ein
Schaltwerk entwerfen muss?
Weiß es jemand oder ist es nur Disinteresse oder Faulheit?
Im neuen Jahr und nach dem Essen, 14 Uhr, schlechtes Wetter und der
Tamim quatscht schon wieder und wiederholt alles nochmal.
Was ist die erste Frage, die wir beantworten müssen?
Das sind die drei Funktionen, die sind gegeben.
Also er hat gesagt, welche Funktionen will man realisieren.
Aber das sind die drei Funktionen, wir müssen diese drei Funktionen
realisieren.
Mit wie vielen Zuständen?
Wie viele Zustände brauchen wir, um dieses Schaltwerk zu realisieren?
Da war natürlich die Antwort leicht, weil hier speichern wir
eigentlich nur zwei Zustände.
Entweder ist der Zustand 0 oder 1 und da haben wir gesehen, dass wir
zwei Zustände haben.
Da haben wir alle Übergänge usw.
basierend auf der Aufgabenbeschreibung spezifiziert, Automatengraph
hingezeichnet und dann diesen ganzen Vorgang, der hier auf der
einführenden Folie zu sehen ist, haben wir beschrieben und sind wir
natürlich auf diese Schaltung gekommen.
Wir haben gesehen, aha, um ein Bit zu speichern, muss ich eigentlich
nicht viel mehr lernen als das, was ich bereits kann.
Das sind zwei lächerliche NOR-Gutters und wir wissen, wie wir NOR
-Gutters realisieren, auch in CMOS-Technologie.
Das sind vier Transistoren, 2N, 2P, parallel, seriell, dual dazu usw.
Das heißt, wir wissen eigentlich, wie jedes dieser NOR-Gutters hier
gebaut werden kann, zum Beispiel in CMOS-Technologie und wir sehen die
Besonderheit von diesem Speicher, im Gegensatz zu einem normalen
Schaltnetz, was wir kennengelernt haben bis jetzt in der Vorlesung,
dass wir Rückkopplungen haben und zwar wir haben genau eine
Rückkopplung hier, das heißt der Ausgang Q hier von unserem einfachen
Speicher, der wird hier rückgekoppelt zu dem einen Eingang des NOR
-Gutters.
Klar, wir müssen natürlich diesen kompletten Entwurfsprozess
durchgehen und wir haben gesehen, dass asynchrone Schaltwerke nicht
gerade toll sind, weil wir uns so viele Gedanken machen müssen, zum
Beispiel welche Zustände stabil oder instabil sind, anhand von der
Automatentafel, die wir hier leiten, die haben wir Flussmatrix
genannt.
Dann müssen wir uns Gedanken machen, was ist eigentlich eine
Zustandscodierung, bei der das Schaltwerk tatsächlich diese Aufgabe
erfüllt und wir haben gesehen, egal, wenn wir vier Zustände haben,
brauchen wir zwei Zustandsvariablen, dass wir diese Zustandscodierung
nicht beliebig wählen können bei einem asynchronen Schaltwerk, sondern
dass wir bei bestimmten Codierungen der Zustände vielleicht zu einem
nicht funktionierenden Schaltwerk kommen können, weil sogenannte
Wettläufe auftreten.
Haben wir anhand von der Aufgabe am Montag auch hier Beispiele
gesehen.
Aber letztendlich interessiert uns beim Entwurf, wenn wir das
Schaltwerk haben, zwei Funktionen, die Ausgabefunktion und die
sogenannte Überführungsfunktion.
Das heißt die Funktion, die aus dem Eingangskern, der Kern von dieser
Zelle ist nichts anderes als zwei Rucki-Cobelty oder Kreuz-Rucki
-Cobelty -Inverter, das sind die vier Transistoren in der Mitte.
Und jetzt haben wir hier nichts anderes eigentlich als zwei Rucki
-Cobelty, also zwei NOR-Gatter, die Rucki-Cobelt sind.
Das ist der einzige Unterschied zu allen Schaltungen, Schaltnetzen,
die wir bis jetzt kennengelernt haben.
Der einzige Unterschied ist, dass wir eine Ruckkopplung haben.
Und wir haben gesehen hier, diese Ruckkopplung bedeutet, dass wir eine
Zustandsvariable haben, Zustandsvariable, die 0 oder 1 sein kann, also
insgesamt zwei Zustände.
Das heißt, wir wissen, jede Ruckkopplung ist zuständig für eine
Zustandsvariable und in unserem Beispiel hier konnten wir damit zwei
Zustände realisieren.
Wenn ich das jetzt analysieren will, und Analyse ist nochmal, gegeben
ist eine Schaltung und sag mir, was macht die Schaltung.
Nicht gegeben eine Aufgabenbeschreibung wie vorher und entwerfe eine
Schaltung, sondern gegeben dieses Bild, was wir vorher generiert
haben, aber es kann natürlich etwas anderes sein, und jetzt sag mir,
was diese synchronen Schaltwerke sind.
Wenn man alle Ruckkopplungen trennt, dann führt man diese Schaltung in
ein Schaltnetz.
Wir wissen, wir können alles mögliche mit Schaltnetzen machen.
Wir können sie minimieren, wir können sie entwerfen, zweistufig,
dreistufig, desynktiv, normalform usw.
usf.
und dann können wir ablesen, was vielleicht diese Schaltung macht.
Das heißt, der erste Schritt ist hier das Auftrennen der
Ruckkopplungen.
Jede aufgetrennte Ruckkopplung ergibt eine Zustandsvariable und wenn
man hier das macht, dann sieht man, die einzige Zustandsvariable hier,
die wir haben, ist das hier, weil wenn ich das hier auftrenne und das
Ganze hier nach vorne verschiebe, also ein bisschen anders male, also
wenn ich hier trenne und dann habe ich eine dritte Eingabevariable,
die heißt U-Umlaut, das ist die dritte Eingangsvariable.
Das heißt, das existiert nicht mehr, der Pfad, und ich verschiebe
dieses NOR-Gatter nach vorne, dann sieht man, dass ich ein normales
Schaltnetz habe.
Der Ausgang von diesem NOR-Gatter hier mit den beiden Eingängen S und
U, U-Umlaut meine ich, geht wieder als Eingang hier in dem zweiten NOR
-Gatter und der zweite Eingang von dem zweiten NOR-Gatter ist R.
Das heißt, wenn ich das gemacht habe, dann habe ich ein Schaltnetz und
das ist alles.
Das heißt, wenn wir asynchrone Schaltwerke analysieren wollen, müssen
wir die Rückkopplungen trennen, was auch nicht immer so einfach ist,
weil viele von euch, 90 Prozent von euch, hätten, glaube ich, auf die
Frage beantwortet, wie viele Rückkopplungen es hier gibt, hätten sie
mit zwei beantwortet.
Stimmt das?
Wer hat zwei gedacht?
Noch, noch, ich muss auf die 90 Prozent stimmen kommen.
Das heißt, alle haben verstanden, dass wir nur eine Rückkopplung hier
haben, oder?
Und wenn wir das trennen, dann haben wir ein einfaches Schaltnetz und
dieses einfache Schaltnetz können wir jetzt analysieren mit Mitteln,
die wir kennen.
Zum besseren Verständnis der zeitlichen Abläufe und Zusammenhänge
zwischen Zustand und Folgezustand wollen wir jetzt das Todzeitmodell,
wie gesagt, das Todzeit oder diese Todzeitglieder waren eigentlich
unser Mittel, um diese Zustände zu speichern bis jetzt.
Wir haben nichts Neueres hier eingebaut.
Und wenn wir das hier machen, dann nehmen wir unsere Schaltung, wir
haben abgetrennt, das war der Folgezustand, die neue Variable U-Umlaut
ist Eingang von dem NOR-Gata, der eine Verzögerungszeit Tau 1 hat.
Und hier wird der Folgezustand U-Umlaut Plus generiert.
Das ist der Folgezustand und natürlich der Zustand U-Umlaut ist nichts
anderes als U-Umlaut Plus verzögert um Tau 2.
Das heißt, wir haben jedem GATA hier in diesem Schaltnetz ein
Todzeitglied hier zugeordnet und wir können jetzt die Analyse machen
mithilfe von den Methoden, die wir kennen.
Was macht man als nächstes, wenn wir diese Schaltung hier haben, dann
können wir eigentlich alle Funktionen, also alle Ausgangsvariablen
hier oder Funktionen hier eingeben.
Das sind ja letztendlich Schaltfunktionen.
Die hängt U-Umlaut Plus von S, U und R.
Das heißt, wir haben eigentlich die Funktion, das ist nichts anderes
als die Überführungsfunktion.
Die Überführungsfunktion ist zum Beispiel Delta und diese Delta hängt
von den Eingangsvariablen S und R und natürlich auch von U-Umlaut.
Und die zweite Funktion, die wir hier immer suchen oder haben bei
einem Schaltwerk, ist natürlich Omega.
Das heißt, die Ausgabe kann unterschiedlich sein, wie wir wissen.
Je nachdem, ob wir einen Mieleautomat oder Moorautomat haben, kann das
natürlich von dem Zustand abhängen beziehungsweise im allgemeinen Fall
bei den Mieleautomaten auch von den Eingaben und Zustandsvariablen.
Und diese zwei Funktionen, die sind hier eingegeben.
Das heißt, der Folgezustand U-Umlaut Plus ist nichts anderes als S nur
U -Umlaut und das Ganze nochmal nur verknüpft mit R, können wir
ablesen.
Und wir sehen hier, dass Q nichts anderes als die Zustandsvariable U
-Umlaut ist und P ist nichts anderes als der Ausgang von diesem NOR
-Gatter.
Also ist U-Umlaut NOR-S.
Das heißt, jeder kann eigentlich diese Sachen hier ablesen.
Und wenn das so ist, dann müssen wir jetzt rückgängig gehen.
Wir haben jetzt die Schaltung, das war das Ergebnis von dem Entwurf
und jetzt analysieren.
Das heißt, wir müssen sagen, was diese Schaltung macht.
Also wir müssen eigentlich auf den Automatengraphen kommen.
Wir gehen rückwärts sozusagen.
Und da müssen wir raten am Ende, was dieser Automatengraph macht.
So, wenn wir das hier haben, dann können wir natürlich alle diese drei
Funktionen in Funktionstabelli aufschreiben.
Das heißt, wir haben die RC-Funktion, das ist nichts anderes als U
-Umlaut plus in Abhängigkeit von RS und U-Umlaut.
Das ist unsere Überführungsfunktion.
Wir haben die Funktion Q.
Q, wie wir gesehen haben anhand der Schaltung, ist identisch mit U
-Umlaut.
Das sieht man auch direkt hier.
Also Q ist identisch mit U-Umlaut.
Und wir haben einen zusätzlichen Ausgang, einfach so zur
Vereinfachung, sagen wir mal so, P hier eingeführt, was wir beim
Entwurf nicht hatten.
Beim Entwurf haben wir überhaupt nicht über einen zweiten Ausgang
geredet, P. Wir haben ein P und P ist nichts anderes als S nur O
-Umlaut.
Und wenn man das hier hat, dann kann man natürlich die Werte aller
dieser drei Funktionen hier in die Tabelle eintragen.
Das heißt, das sind unsere Belegungen der Eingangsvariablen.
Wir setzen ein in diese Funktionen und dann kriegen wir diese
Funktionstabelle.
Gibt es jemanden in diesem Raum, der das nicht kann?
Nein, okay.
Oder?
Oben auch?
Der dritte Schritt ist die Erkennung von sogenannten stabilen und
instabilen Zuständen.
Was bedeutet stabil bzw.
instabil?
Könnt ihr euch an das Stabilitätskriterium vom Montag erinnern?
Und kann mir jemand das erklären, wie das war?
Bzw.
kann mir jemand von euch sagen, welche Zustände hier stabil sind und
welche instabil sind?
Ich weiß, ich nerve mich mit den Fragen, aber...
Jemand zeigt auf die erste Zeile, was wäre mit der ersten Zeile?
Stabil.
Die zweite?
Was muss man eigentlich angucken, wenn man stabil ist?
Ganz genau.
Also, er hat gesagt, man muss U-Umlaut und U-Umlaut Plus angucken.
Und wenn sie gleich sind, dann haben wir stabile Zustände.
Stimmt das?
Das heißt, wenn wir das Ganze hier machen, wir sehen hier unsere
Schaltung nochmal.
U-Umlaut war der Eingang von dem einen Norgata und U-Umlaut Plus war
der Ausgang von dem zweiten Norgata.
Und wie man hier sieht, überall dort, wo man in einem Zustand ist, z
.B.
0, z.B.
1, 1, 0, 0 und wo der Folgezustand immer gleich ist bei den
anliegenden Werten der Eingangsvariablen, spricht man von instabilen
Zuständen.
In allen anderen Fällen, also eigentlich muss alles hier grün sein,
weil das hier stabil ist, in allen anderen Fällen, wo U-Umlaut und U
-Umlaut Plus ungleich sind, haben wir instabile Zustände.
Also, man sieht hier anhand dieser Tabelle ganz klar, dass wir hier
einen instabilen Zustand haben, hier einen instabilen Zustand haben
und hier einen instabilen Zustand haben.
Ja, das ist eigentlich einfach, oder?
Aber wieso sagt er mir dieses komplizierte Stabilitätskriterium vom
letzten Mal?
Er sagt mir jetzt, wenn U-Umlaut und U-Umlaut Plus gleich sind, dann
stabil, ansonsten instabil.
Wieso?
Kann mir das jemand erklären?
Ganz einfach, mit gesundem menschlichem Verstand.
Warum ist das Schaltwerk instabil, wenn U-Umlaut ungleich U-Umlaut
Plus ist?
Ja,
zu kompliziert.
Ich habe nicht zugehört, aber das ist zu kompliziert.
Guckt mal auf das Bild, guckt mal auf das Bild unten hier und wo wir
aufgetrennt haben.
Hier haben wir aufgetrennt, U-Umlaut und U-Umlaut Plus.
Und wenn sie ungleich sind, das ist ja die gleiche Leitung, also wir
haben virtuell eigentlich abgetrennt, aber das ist im Schaltwerk, das
ist ja die gleiche Leitung.
Es kann nicht sein, dass wir hier an der Stelle eine Eins haben und
hier eine Null haben oder hier eine Null oder hier eine Eins.
Kann es sein?
Ja, für eine gewisse Zeit, und zwar für die Verzögerungszeit von dem
Gatter.
Aber nach dieser Verzögerungszeit der Gatter müssen beide Werte gleich
sein.
Gut, wenn wir das hier haben, dann haben wir viel gewonnen und jetzt
könnte man sehen, könnte man gucken, zum Beispiel diese Zeile hier, da
sind wir im Zustand 1 und es liegen die Eingabewerte 0 und 1 an R und
S und der Folgezustand ist 1.
Das ist ein stabiler Zustand, wie man sieht.
Und jetzt stellen wir uns mal vor, also wir können anhand von dieser
Tabelle schon bereits jetzt alle möglichen Zustandsübergänge in diesem
Schaltwerk simulieren.
Stellen wir uns mal vor, es wechselt R von 0 auf 1.
Das heißt, wir waren hier, ich glaube, wir waren hier, das war ein
stabiler Zustand.
Und jetzt die Eingangsbelegungen waren 0, 1 und jetzt wechselt nur R
von 0 auf 1.
Und die Leute, die aufgepasst haben, auf der zweiten Folie, wo wir die
Aufgabe beschrieben haben, haben einen Speicher entworfen, der bei R
gleich 1, S gleich 0 rücksetzt, bei S gleich 1, R gleich 0 zurücksetzt
und bei R und S gleich 0 speichert.
Aber jetzt, wenn jetzt diese Eingangsvariable R, nur R, den Wert
wechselt von 0 auf 1, ausgehend von diesem stabilen Zustand hier, dann
sehen wir, dass die zwei Eingangsvariablen von unserem Speicher gleich
1 sind.
Was wir bei der verbalen Aufgabenbeschreibung beim Entwurf eigentlich
gar nicht spezifiziert haben, was dieses Schaltwerk machen soll.
Könnt ihr mir folgen?
So, was passiert jetzt?
Man sieht klar, wenn so eine Änderung erfolgt hier, dann ist es klar,
dass zuerst U-Umlaut plus den Wert wechselt.
Man sieht, dass U-Umlaut plus tatsächlich zuerst den Wert wechselt und
zwar von 1 auf 0.
Während U-Umlaut 1 bleibt, das wechselt hier von 1 auf 0.
Was bedeutet das eigentlich?
Und das ist natürlich klar, weil zuerst wechselt U-Umlaut plus anhand
der Änderung von R hier und anschließend dieser Wechsel weckt auf U
-Umlaut später.
Aber man sieht hier, wenn U-Umlaut plus den Wert wechselt, dass dieses
Schaltwerk in einem instabilen Zustand ist.
Und nach einem Tau 2, also nach der Verzögerungszeit von diesem Gatter
hier, muss jetzt U-Umlaut plus gleich U-Umlaut.
Das heißt, das Schaltwerk wird jetzt in einem Zustand wechseln, bei
dem natürlich die Eingangsvariablen gleich sind.
R und S gleich 1 und das ist nur dieser Zustand.
Aber wo U-Umlaut und U-Umlaut plus gleich sind.
Das heißt, im nächsten Schritt,
solange R 1 bleibt, wird dieses Schaltwerk in den stabilen Zustand in
der Zeile 6 hier übergehen.
Wo U-Umlaut und U-Umlaut plus gleich 0 sind und die Eingangsvariablen
R und S gleich 1.
Was machen wir damit?
Also wir wissen jetzt, welche Zustände stabil, welche instabil sind.
Wir können sogar viel mehr analysieren anhand von dieser Tabelle.
Aber wir können natürlich diese Tabelle jetzt hier in die sogenannte
Erregungsmatrix, das heißt die Flussmatrix, bei der wir für die
Zustände die jeweilige Zustandskodierung dargestellt haben oder
repräsentiert haben.
Zunächst mal die Flussmatrix und dann müssen wir die Zustände
kodieren.
Und jetzt gehen wir von unten, von den Signalen und analysieren alles.
Das heißt, wir kriegen unkodierte Zustände.
Die ist jetzt die Erregungsmatrix hier dargestellt in der Form, wo wir
den Zustand hier haben.
Hier haben wir den Folgezustand in Abhängigkeit von den zwei
Ausgangsvariablen Q und P. Und das sind hier die Eingangsvariablen R
und S von unserem Speicher.
Das war unsere Tabelle hier.
Und wenn man die Tabelle hier anguckt, steht es.
Ich nehme nur ein Beispiel oder ein paar Beispiele.
Zum Beispiel, wir befinden uns im Zustand 0.
Zustand 0, das sind alle Zeilen der Tabelle, wo U-Umlaut gleich 0 ist.
Wenn RS 0,0 ist, dann sehen wir, dass wir in den Zustand 0 übergehen
und wir geben 0,1 aus.
Das heißt, wir gehen in den Zustand 0, also wir bleiben in 0 und wir
geben 0 für Q und 1 für P. Wenn R und S gleich 0,1 sind, dann sieht
man, wir wechseln in den Zustand 1.
Und die Ausgabe ist 0,0.
Und so weiter und so fort.
Wenn wir in einem anderen Zustand sind, zum Beispiel im Zustand 1, es
liegen die Eingangsvariablen 1,1, wie man hier sieht oder nicht sieht.
Es liegen die Eingangsvariablen 1,1, dann wechseln wir in den Zustand
0 und wir geben eine 1,0.
Das wäre hier die letzte Zeile in dieser Tabelle.
Wir sind im Zustand 1, bei 1,1 wechseln wir in den Zustand 0 und geben
eine 1,0 aus.
Was bedeutet das eigentlich?
Das bedeutet, wir haben jetzt unsere Erregungsmatrix.
Sie ist natürlich jetzt in dem einfachen Fall identisch mit der
Flussmatrix, weil wir haben nur eine einzige Zustandsvariable, das U
-Umlaut.
Und das heißt nur ein symbolischer Zustand oder wir haben nur zwei
Zustände und somit ist sie identisch mit dieser sogenannten
Flussmatrix, die wir am Montag kennengelernt haben.
Und wir sehen oder wir wissen, dass wir in dieser Flussmatrix auch die
stabilen Zustände auch kennzeichnen können, indem wir Kreise hier
hinmalen.
Das heißt, der Zustand 0 ist stabil unter 0,0, unter 1,0, unter 1,1
und das sieht man hier beziehungsweise anhand von dem, was wir vorher
gesehen haben.
Der Zustand 0 ist stabil unter 0,0, der Zustand 0 ist stabil unter 1,0
und der Zustand 0 ist stabil unter 1,1, weil diese Nullen hier
identisch sind, aber der ist instabil unter 0,1.
Das heißt, wenn R gleich 0, S gleich 1 ist, dann sehen wir, dass U
-Umlaut und U-Umlaut plus hier unterschiedlich sind.
Der Zustand 1 ist stabil unter 0,0 und stabil unter 0,1.
Deshalb sind hier diese einzelnen Folgezustände in dieser
Erregungsmatrix in Kreisen.
Okay, was ist der nächste Schritt?
Der nächste Schritt ist natürlich, dass wir sagen, wir haben jetzt
diese Flussmatrix, wir können natürlich unseren Automatengraf
hinmalen.
Wir haben zwei Zustände, 0 und 1, zwei Eingangsvariablen und wir sehen
hier, wir haben zwei Ausgangsvariablen, das sind Q und P und das sind
alle Werte hier, also wir können eigentlich unseren Automatengraf
hinmalen.
Das will ich an der Stelle nicht machen, sondern ich will diese
Erregungsmatrix, die wir bei der Analyse bekommen haben, nehmen und
vergleichen mit der Flussmatrix, die wir beim Entwurf verwendet haben.
Das ist, was wir gerade bekommen haben.
Die Flussmatrix, die wir beim Entwurf hatten, die sah so aus.
Könnt ihr euch erinnern?
Nein, wahrscheinlich nicht.
Aber ihr könnt die Folien von der letzten Vorlesung angucken.
Wir haben gesagt, wir entwerfen einen Speicher, der hat zwei
Eingangsvariablen R und S, der hat eine Ausgangsvariable Q und am
Ausgang soll genau angezeigt werden, was gespeichert wird.
Und es fällt auf, dass hier zwei unterschiedliche Matrizen oder
Beschreibungsformen von der gleichen Schaltung hier entstanden sind.
Hat jemand von euch eine Erklärung?
Was sind zunächst mal die Unterschiede?
Aha, er fragt mich, aber er liefert die erste Begründung oder den
ersten Unterschied.
Er fragt mich, sind das nicht zwei Automaten, Mealy und Moore?
Ich würde sagen, nein, das ist eigentlich ein Automat für das gleiche
Schaltwerk.
Aber beim einen ist es ein Moore und beim anderen ist es ein Mealy.
Beim Entwurf haben wir überhaupt nichts darüber eigentlich ausgesagt,
wie die Ausgabe sein soll.
Wir haben stillschweigend angenommen, dass die Ausgabe identisch ist
mit dem gespeicherten Wert.
Das bedeutet, wir haben eigentlich beim Entwurf einen Moore-Automaten
entworfen.
Und bei der Analyse ist natürlich ein Mealy-Automat entstanden.
Aber wieso?
Wir wissen, bei einem Mealy-Automat hängt die Ausgabe vom Zustand und
von der Eingabe ab.
Und deshalb sind diese Werte hier in der Matrix auch drin geschrieben
und nicht hier nur wie in einem einzigen Spalt.
Was ist der Grund eigentlich, dass wir bei der Analyse einen Mealy
-Automat, eine Erregungsmatrix eines Mealy-Automaten bekommen haben?
Das ist richtig, das ist der erste Unterschied, was du gerade gesagt
hast, aber was ist der Grund?
Ich meine, beim Entwurf haben wir nichts gesagt, wir wollen Mealy oder
Moore.
Und bei der Analyse haben wir auch nichts gesagt, wir wollen Mealy
oder Moore.
Wir haben einfach gemacht und dann schauen wir das kurz an und dann
haben wir auf der einen Seite Moore und auf der anderen Seite Mealy.
Für die gleiche Schaltung, für den gleichen Speicher.
Ideen?
Guckt mal scharf hin.
Was ist anders?
Guckt mal Eingang, Ausgangsvariablen, Zustandsvariablen.
Was ist anders?
Wie bitte?
Bei dem?
Also er hat gesagt, bei dem hier, bei dem Orangenen oder Roten, je
nachdem wie man das so sieht.
Sieht es orange aus für euch?
Okay, für mich auch.
Er hat gesagt, wir haben bei dem Orangenen...
Das ist natürlich katastrophal.
Also wenn du sowas sagst, ja?
Dass wir den Zustand, in dem wir gespeichert haben, nicht extra
hinschreiben.
Aber ich kann dir sagen, die Zustände sind U-Umlaut und U-Umlaut Plus.
Und die sind beide drin.
Und die Eingangsvariablen R und S sind beide drin, in beiden.
P, genau.
P ist eigentlich auf einmal hier aufgetaucht und war hier überhaupt
nicht drin.
Und was war P?
Ja.
Genau, der zweite Ausgang von dem Norgata.
Das bedeutet eigentlich, die Ausgabe ist nicht nur der Zustand,
sondern noch eine weitere Variable.
Die Ausgabe ist Q und P in dem Fall.
Und P, der Ausgang von dem...
Hallo, bleibst du bei mir?
Der Ausgang von dem zweiten Norgata.
Kennst du mir die Gleichung noch im Kopf?
Hast du die Gleichung im Kopf?
P ist gleich R oder R-Nor-U-Umlaut, oder?
Und was ist U-Umlaut?
Zustand und S oder R, ist egal, ist Eingabe.
Das heißt, diese Ausgabevariable P, die hängt vom Zustand und hängt
von der Eingabe ab.
Und deshalb ist es ein Milliautomat.
Das Ganze ist erklärt auf der nächsten Folie.
Das heißt, die Erregungsmatrix beim Entwurf war eine Mur
-Erregungsmatrix.
Und die bei der Analyse, die wir gerade gewonnen haben, die war eine
Milli.
Das ist in dem zusätzlich hinzugefügten Ausgang P begründet.
Man sieht hier, P ist U-Umlaut, Nor-S.
Und U-Umlaut ist der Zustand und S ist eine Eingabevariable.
Das heißt, die Ausgabe hängt sowohl vom Zustand als auch von der
Eingabe ab.
Und somit ist es ein Milliautomat und kein Murautomat.
Das heißt, dieser Ausgang ist nicht nur vom Zustand U-Umlaut, sondern
auch von der Eingangsvariable S abhängig.
Und der zweite Unterschied, den man hier sieht in diesen zwei Tabellen
oder in diesen zwei Erregungsmatrixen, sieht man hier in der letzten
Spalte.
Wir haben zwei Don't-Cares bei der Analyse.
Warum hatten wir zwei Don't-Cares beim Entwurf?
Entschuldigung,
eine Antwort von oben heute vielleicht, bitte?
Roboterfreunde von der zweiten Etage?
Ja,
das war meine Frage eigentlich.
Warum die Freistellen da sind und er hat richtig geantwortet.
Er hat gesagt, das war nicht spezifiziert bei der Aufgabe.
Also die Aufgabe war tatsächlich, einen Speicher zu entwerfen, der
drei Funktionen hat.
R und S gleich 0,0 speichern, RS gleich 0,1 setzen und RS gleich 1,0
rücksetzen.
Aber RS gleich 1,1, wie hier in der Spalte von dieser Erregungsmatrix,
das war gar nicht spezifiziert.
Das sind die zwei Gründe für die wesentlichen Unterschiede, die man
bekommen hat, jetzt in den beiden Erregungsmatrixen, einmal des
Entwurfs und einmal hier der Analyse.
Okay, so viel dazu.
Gibt es Fragen?
Wollt ihr Pause haben?
Das haben wir nicht so oft praktiziert in diesem Semester,
beziehungsweise gar nicht, im Gegensatz zum letzten Sommersemester.
Wer will eine Pause haben?
Wie bitte?
Filme?
Oh.
Filme habe ich heute nicht dabei, aber du hast recht, ich muss mal
wieder ein paar neue Filme mitbringen.
Aber doch, ich mache das.
Okay, keine Pause dann, weil ich keine Filme habe.
Ich verspreche, dass ich am Montag wieder Filme mitbringe, und zwar
viele.
Okay, was willst du für Filme haben?
Drama, Psychotrailer?
Roboter, okay, so muss es sein.
Der letzte Schritt hier beim Entwurf ist, dass wir diese symbolischen
Zustände wieder einführen.
Das heißt, unsere Zustandsvariablen in dem Fall waren umlaut, die
Zustandsvariablen, und wir mussten dann symbolische Zustände
definieren.
In dem Fall ist natürlich der Schritt sinnlos, weil wir können ja die
Zustände umlaut oder Q oder P oder Z benennen.
Der Schritt muss gemacht werden, wenn wir mehr als eine
Zustandsvariable haben, wo wir unterschiedliche Codierungen der
Zustandsvariablen, und wo wir natürlich diese Codierungen wieder auf
symbolische Zustände hier abbilden müssen.
Okay, so viel zur Analyse hier.
Ich will das Thema aber nicht abschließen, sondern ich will einen
Übergang hier noch ein bisschen genauer mal betrachten.
Frage, ist das langweilig für euch, oder kommt ihr mit, oder ist es zu
einfach?
Das würde mich interessieren an der Stelle.
Wer ist für zu einfach?
Eins, zwei, drei, vier.
Wer ist okay?
So, wesentlich mehr.
Und wer ist schwierig?
Also wer meint, das sei schwierig?
Keiner.
Okay, dann sind wir optimal.
Also für die vier, die meinen, dass es einfach ist, muss ich mich
entschuldigen.
Ich muss mich nach der Mehrheit hier richten.
Und die absolute Mehrheit sagt, das ist richtig so mit der
Geschwindigkeit, deshalb machen wir weiter.
Okay, wir wollen einen Übergang genau analysieren.
Und zwar, wir wollen das Verhalten von diesem RS-Latch oder
asynchronen RS-Flip-Flop, was wir bis jetzt entworfen haben, so haben
wir das genannt.
Wir wollen das analysieren für eine Kombination, die wir tatsächlich
beim Entwurf nicht spezifiziert haben.
Und zwar, wenn R und S gleich 1,1 sind.
Ich habe es gerade eingedeutet vorher in der Ablauftabelle, was
passiert eigentlich, wenn dieses Schaltwerk aufgrund von irgendwelchen
Eingabebelegungen, was passiert, wenn R und S gleich 1,1 sind.
Und da haben wir gesehen, dass das Schaltwerk kurzfristig in einem
instabilen Zustand ist.
Jetzt wollen wir das aber genauer analysieren, diesen Übergang.
Und zwar unter der bisher verbotenen oder nicht spezifizierten
eigentlich.
Das Sollverhalten laut Erregungsmatrix ist es wie folgt.
So, zum Beispiel nehmen wir mal an, R und S sind 1,1.
Das heißt, wir sind hier in der vierten Spalte.
Wenn R und S gleich 1,1 sind, dann sind wir in der Spalte.
Das können wir also anhand von dieser Erregungsmatrix analysieren.
Und wir sehen hier, bei dieser Belegung der Eingangsvariablen, der
stabile Zustand von dem Schaltwerk ist 0.
Das heißt, je nachdem, wenn wir im Zustand zum Beispiel 0 sind und R
und S wechseln auf 1,1, dann landen wir im stabilen Zustand 0 und
geben wir 0,0 aus.
Die zweite Möglichkeit ist, dass das Schaltwerk im Zustand 1 ist.
Das heißt, wir fangen hier an im Zustand 1 und wir sehen hier, der
Folgezustand von Zustand 1 bei R gleich S gleich 1,1 ist 0.
Und 0 unter 1,1, also wenn R und S gleich 1,1 bleiben, ist ein
stabiler Zustand.
Das heißt, das Schaltwerk oder dieses Flip-Flop geht laut
Erregungsmatrix immer in den stabilen Zustand 0 und gibt immer ein 0,0
aus.
Egal, wo dieses Schaltwerk gestartet hat.
Das Schaltwerk kann in zwei Zuständen starten, entweder bei 0 oder bei
1.
Wenn man bei 0 startet, dann ist man im stabilen Zustand 0 und gibt 0
,0 aus.
Wenn man bei 1 startet, dann geht man in den Zustand 0 und gibt
kurzfristig 1,0 aus.
Anschließend landet man natürlich in den Zustand 0 und der Zustand 0
unter 1,1 ist ein stabiler Zustand.
So muss man das ablesen.
Eine genauere Betrachtung aber wollen wir machen für den Fall, dass
jetzt die Eingaben R und S auf 0,0 wechseln.
Also wir sind in diesem stabilen Zustand 0 und wir geben 0,0 aus und
jetzt soll die Eingabe wechseln auf 0,0.
Laut Erregungsmatrix bedeutet das eigentlich, wir gehen in den Zustand
0 über und Zustand 0 unter 0,0 ist auch ein stabiler Zustand.
Eigentlich ist es harmlos.
Das heißt, wenn die Eingabe auf 0,0 wechselt, laut Erregungsmatrix
sollte das Flip-Flop im stabilen Zustand bleiben.
Nur die Ausgabe soll sich ändern.
Und zwar hier hatten wir die Ausgabe 0,0 bei 1,1.
Hier ist die Ausgabe 0,1.
Was haltet ihr davon?
Das ist logisch, oder?
So kann man diese Tabellen oder diese Flussmatrix oder
Erregungsmatrixen in Kombination mit stabilen, nicht stabilen
Zuständen auch verstehen.
Oder soll, muss man das so verstehen.
Genau dieser Übergang ist aber problematisch.
Das heißt, wenn wir an unsere Laufzeiteffekte und alles, was wir zum
Thema Übergänge und Hazards und so weiter kennengelernt haben, haben
wir es hier zu tun mit einem Übergang mit mehr Variablenwechsel.
Das heißt, die zwei Eingangsvariablen R und S sind 1,1 und die
wechseln beide auf 0,0.
Und wir wissen, das ganze Komplex hängt von drei Eingangsvariablen R,
S und U-Umlaut.
Das heißt, genau wenn wir jetzt hier ein KV-Diagramm schreiben für den
Folgezustand U-Umlaut plus mit den Eingangsvariablen U-Umlaut, R und
S, das war unsere Tabelle von vorher, dann bedeutet eigentlich dieser
Übergang, den wir jetzt gerade betrachtet haben, das ist der Übergang
aus diesem Feld in das Feld.
Also aus dem Feldnummer R, S gleich 1,1 und U gleich 0, also 6 in 0.
Weil U-Umlaut ist gleich 0 und R und S gleich 1,1, das ist die 6.
Und U-Umlaut gleich 0 und R und S gleich 0, das ist Feld 0.
Also der Übergang im KV-Diagramm ist der Übergang von 6 nach 0.
Und das ist ein Übergang, bei dem wie viele Variablen den Wert
wechseln?
Zwei.
Weil U-Umlaut plus war 0 und bleibt 0.
Links und rechts im KV-Diagramm ist U-Umlaut plus 0.
Nur R und S ändern die Werte von 1,1 auf 0,0.
Soll ich das hinschreiben, falls ihr das vergessen habt?
Also das ist der Übergang von B6 nach B0 bei der variablen Reihenfolge
R, S, U-Umlaut.
Also von 1,1,0 nach 0,0,0.
Also dann gucken wir mal diesen Übergang an.
Zwei Variablen ändern ihre Werte.
Wie viele Wege gibt es von der Anfangsbelegung zur Endbelegung?
Zwei Wege, also zwei Fakultäten.
2 mal 1 ist nach wie vor 2.
Und der erste Weg ist natürlich, dass zunächst mal S den Wert wechselt
von 1 auf 0, also nach oben.
Wenn S zuerst den Wert wechselt, dann bedeutet das,
dass wir zunächst mal in das Feld hier gehen.
Und dann wechselt R den Wert, das heißt wir gehen dann rüber.
Der Wechsel hier ist über B4, also B6 nach B4 nach B0.
Und wir sehen, dass die zugehörige Folge der Funktionswerte monoton
ist, also der Weg ist unproblematisch.
Problematisch ist der zweite Weg, wenn zunächst mal R den Wert
wechselt.
Das heißt, R war hier 1, wechselt zunächst mal auf 0 und anschließend
wechselt es von 1 auf 0.
Das heißt, der Weg oder der Übergang, wenn der Übergang über B6, B2,
B0, das waren die Indizes übrigens, nur zur Erinnerung, 4, 5, 6, 7,
das heißt hier sehen wir, wir haben den Funktionswert 0, wechseln wir
auf 1 und anschließend wechseln wir auf 0.
Was bedeutet das?
Eine nicht monotone Folge der Funktionswerte, das heißt dieser
Übergang ist behaftet mit einem statischen Funktionshazard.
Jetzt kommt es natürlich, aber es gehen meine Annotationen weg.
Also man sieht hier, dass dieser Übergang mit einem statischen
Funktionshazard behaftet ist.
Ist das schlimm?
Wenn der Hazard behaftet ist, dann ist es natürlich schlimm, aber noch
nicht schlimm genug, weil es kann sein, dass der Hazardfehler gar
nicht auftritt.
Und das wollen wir jetzt im nächsten Schritt aufsehen.
Das heißt, wenn dieser Hazardfehler auftritt, aufgrund von ungünstigen
Funktionswerten, ist das definitiv problematisch.
Und das wollen wir jetzt hier sehen, was passiert, wenn dieser
Hazardfehler auftritt.
Das heißt, wenn die Zeitbedienungen ungünstig sind, Tau 1 und Tau 2,
dass der zu diesem Funktionshazard gehörende Hazardfehler auftritt.
Gehen wir von der folgenden Situation nach wie vor, das ist unsere
Schaltung.
Das ist unsere Schaltung, die wir vorher aufgetrennt haben, die zwei
Verzögerungszeiten Tau 1 und Tau 2.
Das ist unser problematischer Übergang, das sind hier die Gleichungen,
die wir brauchen.
Mein Ziel aus dieser Vorlesung und warum ich hartnäckig bin bei diesem
Thema, obwohl es asynchrone Schaltwerke sind, die jeder hasst, also
wirklich jeder hasst, keiner will ein asynchrones Schaltwerk
entwerfen, weil so viele Probleme, Wettläufe und das und jenes und
Hazards.
Wir werden sehen, es kommt noch schlimmer.
Wir werden das nächste Mal natürlich synchrone Schaltwerke
kennenlernen, wo alles so reibungslos funktioniert, da brauchen wir
uns mit diesen Details nicht zu beschäftigen.
Aber ich genieße das Thema, ich finde das Thema so toll, weil man
alles versteht.
Man sieht hier anhand eines einzigen Übergangs, von dieser Vorlesung
nutzen wir das komplette Wissen, was wir vom Anfang des Semesters
gelernt haben.
Analyse von Funktionen, jetzt mit Schaltwerken, jetzt Hazards und so
weiter und so fort.
Also ein super Beispiel.
Okay, jetzt gucken wir mal an, das ist die Anfangssituation.
Wir sind nach wie vor interessiert an dem Übergang von 6 nach 0.
Von 6 nach 0, das heißt eigentlich die Eingangsvariablen R und S sind
0, 0.
Unser Zustand ist 0, Entschuldigung, die Variablen sind natürlich 1.
1, 1 und U-Umlaut ist 0.
Wir sehen, das U-Umlaut ist gleich Q.
Habe ich einen Fehler gemacht?
Nein, oder?
Und dann können wir anhand von dem eigentlich, was wir alles hier
haben, ein Zeitdiagramm mal hinmalen.
Wir sehen jetzt, wenn R und S nach 0 wechseln, dass der Ausgang Q, was
ja identisch mit U-Umlaut, nach Tau 2 von 0 nach 1 wechselt.
Warum eigentlich von 0 nach 1?
Weil das ist nichts anderes als U-Umlaut plus verzögert um Tau 2 und
wenn R und S sich ändern, in dieser Überführungsfunktion hier, wird
sich U-Umlaut plus ändern.
Wenn R und S 1 1 waren und U-Umlaut 0 und wechseln R und S auf 1 und U
bleibt 0, dann wechselt natürlich U hier nach Tau 2, das ist diese
Verzögerungszeit auf 1.
Das heißt, das ist hier ein Tau 2, wie unten auch angegeben ist,
wechselt auf 2.
Wenn Q beziehungsweise U-Umlaut von 0 auf 1 wechselt, was bedeutet das
eigentlich?
Das bedeutet, dass nach Tau 1, weil dieser U-Umlaut hier jetzt
gewechselt hat von 0 auf 1, ändert sich der Eingang hier und somit
ändert sich der Ausgang P. Das heißt eigentlich P, was ja 0 war,
wechselt nach Tau 1 automatisch auf 1.
Wir wissen, das ist unser Hasardfehler, der tritt also auf.
Irgendwann mal natürlich muss U-Umlaut bzw.
Q wieder auf 0 gehen, weil das ist ja der Endzustand von dem Weg hier,
von dem Übergang.
Und wenn das hier auf 0 wieder geht, dann muss das wieder auf 0 gehen.
Der Wechsel aber hier, also der Fehler, der an U bzw.
P auftritt, der führt dazu, dass P wiederum auch den Wert wechselt von
1 auf 0, weil P ist U-Umlaut nur S und U-Umlaut hat sich geändert
hier.
Die Änderung wirkt sich nach einem Tau 1 auf P1, sodass das hier
wiederum auf 0 geht.
Und der Wechsel hier von P1, P hat sich gewechselt, was bedeutet das
eigentlich?
Der führt dazu hier, dass wiederum U bzw.
Q hier von 0 auf 1 wechselt und so weiter und so fort.
Wenn man das hier anguckt, dann sieht man, dass wenn dieser
Hasardfehler einmal auftritt, weil die Verzögerungszeiten zum Beispiel
schlimm sind, wir können das beseitigen, indem wir dafür sorgen, dass
der zweite Weg übernommen wird, genommen wird bei diesem Übergang.
Aber wenn dieser Hasardfehler auftritt, dann wird der sich
fortpflanzen in dem Schaltwerk, weil es ist kein einfaches Schaltnetz,
wir ändern die Eingabebelegungen und dann ändert sich der Ausgang
kurzfristig auf 1, also dieser Hasardfehler auf 1 und dann wieder auf
0.
Das ist ja der Hasardfehler.
Aber dieser Hasardfehler, das ist U-Umlaut und U-Umlaut haben wir
rückgekoppelt in die Schaltung.
Das heißt, wir koppeln auch den Fehler zurück und dieser Fehler wird
sich ständig fortpflanzen in dem Schaltwerk, sodass das komplette Flip
-Flop anfängt zu schwingen.
Das heißt, wenn der Hasardfehler auftritt, wie gesagt, weil die
Verzögerungszeiten zum Beispiel ungünstig sind, dann wird U-Umlaut
kurzfristig zu 1, bewegt über die Rückkopplung, dass B kurzfristig zu
0 wird, dies schwingt wieder U-Umlaut wieder kurzfristig auf 1 zu
gehen.
Das heißt, durch die Rückkopplung pflanzt sich der Hasardfehler endlos
fort und das Flip-Flop beginnt zu schwingen.
Wie kann man das beheben?
Wie kann man das verhindern?
Genau, man muss dafür sorgen, dass der Weg hier genommen wird, dass
zunächst einmal S den Wert wechselt und anschließend R.
Und was bedeutet das eigentlich?
Hier für Tau 1 und Tau 2.
Kann jemand von euch eine Bedienung für Tau 1 und Tau 2 herleiten,
unter der dieser Wechsel entlang des fehlerfreien Weges erfolgen wird?
Überlegt es euch als Hausaufgabe.
Also wie die Beziehung zwischen Tau 1 und Tau 2 sein muss, damit
dieser Fehler hier nicht auftritt.
Das zweite, was man machen kann, wenn man keinen Einfluss hat auf
diese Verzögerungszeiten, ist, dass man sagt, wir verlangen immer bei
diesem einfachen Speicher, was wir entworfen haben, bei dem
sogenannten RS-Flip-Flop, dass diese Kombination, diese Belegung der
Eingangsvariablen R und S gleich 1,1 gar nicht auftritt.
Das heißt, muss immer eine der Variablen R oder S 0 sein,
beziehungsweise die Bedienung R unverknüpft mit S gleich 0 muss immer
eingehalten werden.
Okay, so viel dazu, damit will ich das Thema asynchronische Haltwerke
abschließen.
Gibt es Fragen hierzu?
Wer fand das Thema spannend eigentlich?
Oh, zwei Leute von oben, wow, danke.
Wer noch?
Ja, zwei, du nicht?
Nein, mein Robotikfreund hier.
Nein, dein Nachbar.
Synchronie sind interessanter, warum?
Unanfälliger, also er meint Synchronie sind interessanter.
Was glaubt ihr eigentlich, war der erste Prozessor, den man jemals
gebaut hat, synchron?
Oh, so viele Leute schütteln den Kopf, das heißt, sie wissen es auch.
Also du weißt es, das heißt, du meinst, der erste Prozessor war
asynchron?
Ja, ich meine dich.
Du vermutest das.
Okay,
also ich finde es spannend, egal.
Trotzdem verlassen wir das Thema jetzt und wir gehen tatsächlich zur
synchronen Welt, das heißt, wo alles von einem zentralen Takt
gesteuert wird.
In der Tat, die Probleme, die bei synchronen Schaltwerken auftreten,
zum Beispiel haben wir am Montag gesehen, wettlauffreie
Zustandskodierungen sind notwendig, damit keine Wettläufe auftreten,
die treten bei synchronen Schaltwerken nicht, weil man einen zentralen
Takt hat, der immer dafür sorgt, dass Änderungen am Eingang, dass sich
alle Vorgänge sozusagen in der Schaltung oder im Schaltwerk
stabilisieren, bevor die nächste Änderung an Eingängen bzw.
Zuständen erfolgt.
Das führt uns zu dem Thema synchroner Schaltwerke, das heißt, wenn wir
jetzt hier einen zentralen Takt haben, dann bedeutet das, dass wir
eigentlich Speicherbausteine entwickeln müssen, nicht dieses
asynchrone RS-Flipflop, sondern Zustandsspeicher, Speicherbausteine,
die taktgesteuert sind, also die von einem solchen zentralen
Taktsignal gesteuert werden.
Und hier existieren eine Reihe von Flipflops, die wir heute und in der
nächsten Vorlesung diskutieren wollen.
Was wir bis jetzt kennengelernt haben, wir haben eigentlich das
asynchrone RS-Flipflop entworfen und wir haben den analysiert.
Nochmal, merkt euch den Unterschied.
Also wir haben das asynchrone Schaltwerk entworfen in dieser Vorlesung
und analysiert.
Ausgangspunkt war das hier, die drei Funktionen, die wir realisieren
wollten.
Ergebnis war diese Schaltung hier, hier dargestellt mit zwei
Ausgängen, P und Q.
Also einmal der Ausgang Q, was wir beim Entwurf als Vorgabe hatten und
einmal den zweiten Ausgang P, den wir jetzt bei der Analyse eingeführt
haben.
Und als Schaltsymbol für dieses asynchrone RS-Flipflop gibt man an,
dass man hier zwei Eingänge hat, S und R.
Das sind die zwei Ausgänge Q und der zweite Ausgang P, der immer
eigentlich der negierte Ausgang, die Negation von Q ist.
Um das asynchrone Flipflop in ein synchrones Flipflop umzuwandeln bzw.
das als ein synchrones Speicherelement in einem Schaltwerk zu
verwenden, müssen wir also ein Taktsignal einführen, welches die
Änderungen der Zustandsvariablen in der interaktiven Taktphase
verhindert.
Das können wir natürlich leicht machen.
Wir wollen nur dafür sorgen, dass Änderungen an den beiden Eingängen R
und S nur zu einer bestimmten Phase des Taktes erfolgen.
Also nicht, wenn R oder S Lust haben, ihre Werte zu ändern, ändert
sich der Wert von S und dann werden diese Änderungen wahrgenommen und
wirken auf den Zustand bzw.
auf die Ausgabe.
Wir wollen das Ganze durch den Takt steuern, durch das Taktsignal.
Und die einfachste Variante wäre, dass wir sagen, wenn wir ein
Taktsignal haben, wir verbinden dieses Taktsignal oder verknüpfen
dieses Taktsignal konjunktiv mit den beiden Eingängen.
Und das ist, was wir hier gemacht haben.
Das heißt, über ein UND-Gatter verknüpfen wir die zwei Eingänge S und
R mit T.
Das ist unser Taktsignal
oder Takt und dieses Takt ist immer so, wie wir wissen.
Und damit wir jetzt ein synchrones Verhalten haben, sagen wir mal,
Änderungen von S, die dürfen nicht immer auf den Eingang von diesem
asynchronen RS-Flip-Flop wirken, sondern die wirken nur dann, wenn T
es erlaubt.
Und wenn ich diese Variante nehme hier und ich sage, ich verknüpfe die
beiden Eingänge konjunktiv mit T, dann ist es klar, dass Änderungen an
dem Eingang vom RS-Flip-Flop nur dann wirken, wenn T gleich 1 ist.
Ansonsten, wenn T gleich 0 ist, dann wissen wir, dass die Ausgänge von
diesen zwei UND-Gatter auch 0 sind.
Was bedeutet das?
Es liegt R gleich S gleich 0 am Eingang von diesem asynchronen Flip
-Flop und bei R gleich S gleich 0 wissen wir, dass Flip-Flop speichert
den Wert, der dort drin ist.
Änderungen an R und S, die werden nur dann wahrgenommen, wenn sie in
diesen Phasen des Taktes erfolgen.
Also wenn sie in diesen aktiven Phasen des Taktes erfolgen.
Das heißt, wenn T gleich 1 ist, dann wissen wir, dass wir hier S und T
haben und T gleich 1, das heißt S.
Und hier haben wir R und T und wenn T gleich 1 ist, dann ist es gleich
R.
Das heißt, nur in diesen aktiven Phasen, also in den grünen Phasen des
Takt -Signals, werden Änderungen an den Eingangsvariablen vom Flip
-Flop wahrgenommen.
Das Schaltsymbol unterscheidet sich ein bisschen von dem Schaltsymbol
von dem asynchronen RS Flip-Flop durch zwei Sachen.
Natürlich haben wir zunächst mal ein weiteres Signal, das ist T, das
heißt einen weiteren Eingang.
Und zum Zweiten könnte man sich vorstellen, dass man nicht nur ein
einziges Takt-Signal hat.
Wenn man jetzt komplexe Systeme entwirft, dann hat man vielleicht
einen Teil von den Elementen, die sind mit einem bestimmten Takt
-Signal getaktet, die anderen sind höher oder niedriger getaktet und
so weiter.
Und um das hier beispielsweise zu unterscheiden, also um zu sagen, von
welchem Takt-Signal die Eingänge abhängen, führt man praktisch diesen
Index 1 hier ein, das heißt es ist das Takt-Signal C1.
Und alle Eingänge, bei denen jetzt eine 1 hier vorangestellt wird,
hängen dann von diesem Takt-Signal ab.
Das ist die Erklärung dazu, was die Ziffer 1 hier bei den Eingängen
bedeutet.
Was bringt uns das eigentlich?
Wir können jetzt die Änderungen im Schaltwerk bzw.
im Flip-Flop beeinflussen durch ein Takt-Signal, wo Änderungen der
Eingänge nur in der aktiven Phase wahrgenommen werden.
Aber wir wollen diese Elemente eigentlich nutzen, um Schaltwerke zu
entwerfen.
Und beim Entwurf von einem Schaltwerk, wenn es darum geht, welchen
Zustandsspeicher zu nehmen, kennen wir eigentlich den Zustand und den
Folgezustand.
Wieso kennen wir das?
Weil wir haben ja schon den Automatengrafen entworfen eigentlich.
Wir wissen wie viele Zustände und somit kennen wir alle
Zustandsübergänge.
Was wir jetzt suchen, ist die Information, wie die Eingänge von diesem
Zustandsspeicher beschaltet werden sollen, damit die Übergänge, die
wir im Automatengrafen haben, tatsächlich so erfolgen.
Das heißt, wir suchen an der Stelle nicht die Überführungsfunktion
oder die Ausgabefunktion, sondern wir suchen die Information, wie wir
die Flipflops ansteuern müssen, damit es zu den gewünschten
Zustandsübergängen laut Automatengrafen kommt.
Diese Information lässt sich in den sogenannten Ansteuertabellen eines
Flipflops bestimmen.
Das heißt, sie geben den Zustandsübergang eines Flipflops unter den
verschiedenen Eingabebelegungen wider.
Und das ist nicht so wild, die lässt sich aus der Funktionstabelle der
Ausgabe - bzw.
Überführungsfunktionen gewinnen.
Und das wollen wir zunächst mal für unseren RS-Flipflop machen.
Ich bitte um nur zwei Minuten Aufmerksamkeit, und zwar
hundertprozentige Aufmerksamkeit.
Wir haben bis jetzt eine Tabelle gesehen bei dem RS-Flipflop, die
hatte drei Zeilen und drei Spalten.
In der ersten Zeile stand RS-Funktion, in der zweiten Spalte stand
00QT plus 1 gleich QT speichern.
Wer kann mir folgen?
Zwei, drei Leute, nur?
Vier?
Okay, und noch?
Okay, was steht in der zweiten Spalte?
Zeile dann?
0, 1,
genau, zurücksetzen.
Also, ich rede über diese Tabelle, und das ist nicht, was wir hier
meinen.
Wir hatten diese Tabelle hier,
und die haben wir genannt RS und dann hier Funktion.
Und wir hatten 00, und wir haben gesagt, das heißt speichern, und
speichern bedeutet, der Folgezustand ist identisch mit dem Zustand.
Also, ich bitte nach wie vor um die hundertprozentige Aufmerksamkeit.
Immer eigentlich, aber ich weiß, dass das nicht realistisch ist, aber
für die nächsten vier Minuten könnt ihr das schaffen.
In dem Fall, wenn S gleich 1, dann bedeutet der Folgezustand ist immer
1, das heißt setzen.
Und bei 1, 0 heißt der Folgezustand ist 0, das heißt rücksetzen.
Und das sind die drei Funktionen, die wir realisiert haben bis jetzt.
Und damit haben wir alles gemacht, aber jetzt geht es um etwas
anderes.
Es geht darum, wie gesagt, wie sollen wir die zwei Eingänge eines RS
-Flipflops R und S ansteuern, damit wir in einem Automatengraf mit
vier Zuständen die dort spezifizierten Zustandsübergänge realisieren.
Und das wollen wir jetzt herleiten.
Also wir brauchen diese Informationen, wie muss ich die RS-Flipflops
in einem Schaltwerk beschalten, damit ich meine Zustandsübergänge
realisiere.
Und diese Tabellen sind wichtig,
damit man immer vieles durcheinander bringt.
Aber wenn man es einmal verstanden hat, dann kann man jede Tabelle
herleiten und das müsst ihr jetzt verstehen.
Ich will die Ansteuer-Tabelle von dem RS-Flipflop herleiten.
Das RS-Flipflop ist nach wie vor ein Schaltwerk mit zwei Zuständen,
wie jedes andere Flipflop.
Speichert 0 oder 1, das sind meine zwei Zustände.
Wir haben zwei Zustände.
Wir haben im Kopf die Funktionalitäten und das sind drei.
Drei Funktionalitäten.
Speichern, Setzen, Rücksetzen.
Das waren auf meine Folie hier.
Und jetzt überlegen wir uns, oder wir suchen die Ansteuer-Tabelle.
D.h.
gegeben ist mein Automatengraph und in dem Automatengraph interessiere
ich mich dafür, was soll ich an den Eingängen von meinem Flipflop, Ja,
das ist mein Flipflop.
Ich bin zu schnell.
Ohne das.
Das ist mein Flipflop C1.
Das ist 1S, 1R.
Das ist Q.
Und das ist Q quer, wie wir wissen.
Und das sind die Eingänge S und R.
Und das ist unser Takt-Signal.
Das bringt mir aber noch nichts, ich muss für meine Zustandsübergänge,
um die Zustandsübergänge zu realisieren im Automatengraph, muss ich
wissen, was muss ich an R und S anlegen, wenn ich z.B.
im Zustand 0 bin und ich will im Zustand 0 bleiben.
Oder wenn ich im Zustand 0 bin und ich will zu Zustand 1 wechseln.
Oder wenn ich im Zustand 1 bin und ich will zu Zustand 0 wechseln.
Oder ich will im Zustand 1 bleiben.
Das sind alle Möglichkeiten, die man in einem Automatengraphen hat.
Entweder bleibt man da oder wechselt von da nach da oder zurück und so
weiter und so fort.
Und die Information hier, also die Werte von R und S in diesen
Spalten, sind das, was wir gerade suchen.
Und das können wir ganz leicht eigentlich herleiten, indem wir uns
überlegen, wie bleibe ich im Zustand 0.
Wie bleibe ich hier im Zustand 0?
Ich bleibe im Zustand 0, wenn R und S 0,0 bleiben, weil das heißt
speichern.
Ich bleibe im Zustand 0, wenn es auch rücksetzen heißt.
Also wenn S gleich 0 und R gleich 1, ich setze einen rückgesetzten
Flip -Flop zurück, dann bleibe ich im Zustand 0.
Das heißt, das sind die zwei Möglichkeiten, mit denen ich hier im
Zustand 0 bleibe.
Einmal speichern und einmal rücksetzen.
Und speichern realisiere ich mit RS gleich 0,0.
Rücksetzen mit R gleich 1 und S gleich 0.
Insgesamt habe ich also Don't Care und 0.
Das heißt, ich bleibe im Zustand 0, wenn S nicht 1 wird und R
interessiert mich nicht.
Und das kann ich hier in dieser Tabelle eintragen.
Das heißt, ich bleibe im Zustand 0, wenn S nicht 1 sein darf.
Also Don't Care nur.
So, wann wechsle ich vom Zustand 0 in den Zustand 1?
Das ist die nächste Zeile, die wir hier suchen.
Das ist die Funktion Setzen.
R gleich 1 und S gleich 0.
Das heißt, die trage ich hier.
Ich wechsle von dem Zustand 0 in 1 bei 0,1.
Und wann wechsle ich zurück vom Zustand 1 in den Zustand 0?
Wenn es Rücksetzen heißt.
Das heißt, R gleich 1 und S gleich 0.
Das kann ich auch hier mal eintragen.
Und wann bleibe ich im Zustand 1?
Wenn es Speichern heißt.
Oder wenn es Setzen heißt.
Weil wenn ich im Zustand 1 bin und S wird 1, das heißt, ich setze
eines gesetzten Flipflops, dann bleibe ich auch im Zustand 1.
Das heißt, insgesamt Setzen bzw.
Speichern.
Speichern ist 0,0.
Setzen ist 0,1.
Insgesamt also 0, Don't Care.
Das heißt, R darf nicht 1 sein.
Und man sieht hier, ich habe jetzt die sogenannte ansteuerte Belly.
Von diesem RS Flipflop.
Und diese ansteuerte Belly sagt mir, was ich an den Eingängen von
diesem Flipflop hier beschalten muss, damit ich vom Zustand 0 in 0, im
Zustand 0 bleibe bzw.
von 0 nach 1 wechsle usw.
Und jetzt stellt euch mal vor, wir haben ja einen Zustandsautomat, der
hat 4 Zustände.
Das heißt, 2 Zustandsvariablen.
Also für jede Zustandsvariable brauchen wir dann einen
Zustandsspeicher.
Und dann müssen wir für jede Zustandsvariable gucken, wie sind die
Übergänge zwischen den unterschiedlichen Zustandsvariablen zum
Zeitpunkt T und T plus 1.
Und dann entsprechend die Eingänge von dem Flipflop hier beschalten,
damit wir die gewünschten Zustandsübergänge bekommen.
So, das ist die ansteuerte Belly.
Und diese ansteuerte Belly sieht man hier, bei dieser ansteuerte
Belly, die unerlaubte Eingangsbelegung R und S gleich 1.
Die tritt überhaupt nicht auf.
Also es gibt keinen Übergang hier oder keine Zeile, wo R und S gleich
1 sind.
So, das schaffen wir noch für heute.
Diese Nebenbedienung, die wir immer bei dem RS-Flipflop hatten, das
heißt, wir haben gesagt, die Nebenbedienung R und S muss 0 sein, muss
immer eingehalten werden.
Die kann man natürlich auf eine andere Weise einhalten.
Und zwar, indem man sagt, okay, das ist mein RS-Flipflop, ich kann
jetzt eine Variable nehmen, eine Eingangsvariable und ich führe sie
einmal Beat und einmal Nigir zu den beiden Eingängen.
Das heißt, ich habe eine Variable D und diese Variable D ist einmal
Beat zu S und einmal Nigir zu R geführt.
Das heißt, R und S können nie hier 1 sein.
Die sind immer gegenseitig.
Und damit lässt sich diese Bedienung hier beibehalten.
Es entsteht ein sogenannter D-Latch und dieser D-Latch, wie man sieht,
das wäre dann das hier.
Der hat drin ein RS-Latch, was wir bereits kennengelernt haben und
einen Inverter und die Eingangsvariable D.
Das Ganze natürlich tanzt nach der Musik von dem Taktsignal T.
Das heißt, T nach wie vor hier und die zwei Ausgänge Q und den Nigir
den Ausgang Q+.
Wie sieht die Ansteuer-Tabelle, also das nennen wir D-Latch, wie sieht
die Ansteuer-Tabelle für so ein D-Latch aus?
Ja, die Ansteuer-Tabelle bzw.
zunächst mal die Funktionstabelle.
Wenn D gleich 0 ist, dann bedeutet S gleich 0 und wenn S gleich 0,
dann bedeutet das entweder Speichern oder Rücksetzen, weil R gleich 1
ist.
Das heißt, der Folgezustand ist immer
dann sieht man, dass der Folgezustand immer 1 ist.
Was bedeutet das?
Wenn man diese Funktionstabelle hier anguckt, dann sieht man, dass die
anliegenden Werte hier am Eingang in allen Fällen als Folgezustand
sind.
Man sieht hier also Q zum Zeitpunkt T plus 1 T plus 1 ist identisch
mit D mit dem, was man da am Eingang einlegt.
Ist das die Ansteuer-Tabelle von dem D-Flip-Flop?
Wie war die Ansteuer-Tabelle definiert nochmal?
Wir haben Zustand und Folgezustand und wir würden gerne wissen, was
wir an den Eingängen anlegen.
Jetzt haben wir D und das ist Zustand und das ist Folgezustand.
Wir brauchen nur die Spalten zu vertauschen.
Wir vertauschen tatsächlich die Spalten.
Das ist Q und das ist QT plus 1.
Das heißt, man sieht hier, dass ich am Eingang von dem Flip-Flop ein D
genau das anlegen muss, was ich als Zustand vom Flip-Flop haben will.
Wenn ich eine 0 dort haben will, dann muss ich eine 0 anlegen und wenn
ich eine 1 anlegen will, dann muss ich eine 1 anlegen.
Das heißt eigentlich, die charakteristische Gleichung von dem Flip
-Flop ist nichts anderes, als dass der QT plus 1 ist identisch mit D
zum Zeitpunkt T.
Und nicht die Gleichung, die wir bei dem RS-Flip-Flop bei unserem
Entwurf oder bei unserer Analyse kennengelernt haben.
Ich glaube, ich wollte nur bis dahin heute kommen und die Zeit ist
fast vorbei.
Wir wollen das nächste Mal ganz kurz das ist ziemlich wichtig das
nächste Mal und zwar wir wollen wissen, wie weitere Varianten von Flip
-Flops aussehen.
Noch zwei Flip-Flop-Arten wollen wir angucken.
Und noch wichtiger ist, wollen wir
zwei Varianten der Ansteuerung von diesen Flip-Flops kennenlernen.
Einmal die Realisierung einer Pegelsteuerung und die Realisierung
einer Flankensteuerung bei den Zustandsspeichern.
Für heute bedanke ich mich für die Aufmerksamkeit und wünsche einen
schönen Nachmittag.