WEBVTT

00:09.890 --> 00:13.430
Herzlich willkommen zur 17.

00:13.630 --> 00:19.610
Vorlesung Technische Informatik und wir werden heute nochmal

00:19.610 --> 00:23.010
durchgehen, wie man Automatengrafen aufstellt, wie man die

00:23.010 --> 00:28.810
Automatentafel erstellt, wie man Zustandscodierungen wählt, Ausgabe-

00:28.810 --> 00:34.790
und Übergangsschaltnetze erzeugt und asynchrone Schaltwerke

00:34.790 --> 00:35.390
analysiert.

00:37.750 --> 00:41.190
Also es geht um asynchrone Schaltwerke und wir wollen die

00:41.190 --> 00:44.730
Vorgehensweise und die Problematik anhand eines Beispiels erläutern.

00:46.130 --> 00:47.950
Dazu haben wir einen einfachen, betrachten wir einen einfachen

00:47.950 --> 00:48.330
Speicher.

00:48.490 --> 00:50.530
Ich glaube, soweit müsste das alles von Wiederholung aus der letzten

00:50.530 --> 00:51.230
Vorlesung sein.

00:56.830 --> 01:00.870
So, also gegebenenfalls ein einfacher Speicher.

01:01.370 --> 01:02.970
Sagen wir mal, der sieht ungefähr so aus.

01:03.630 --> 01:08.530
Wir haben zwei Eingänge, einen Set-Eingang und einen Reset-Eingang und

01:08.530 --> 01:14.850
die Funktion beschreiben wir so, dass wir sagen, wenn am Eingang R

01:14.850 --> 01:19.330
eine 1 anliegt, dann wollen wir den Speicher resetten.

01:19.490 --> 01:24.830
Das heißt, wir wollen die Ausgabe zu 0 ändern.

01:25.490 --> 01:31.650
Wenn am Eingang S eine 1 steht, eine 1 angelegt wird, dann wollen wir

01:31.650 --> 01:33.230
den Ausgang Q zu einer 1 verändern.

01:34.090 --> 01:37.750
Und wenn R und S beide 0 sind, dann soll der aktuelle Wert unseres

01:37.750 --> 01:39.550
Speichers beibehalten werden.

01:39.870 --> 01:42.630
Das heißt, der Inhalt soll nicht geändert werden, egal was vorher war,

01:43.250 --> 01:44.390
soll den letzten Wert beinhalten.

01:48.460 --> 01:50.840
Dazu stellen wir erstmal einen Automaten-Graphen auf.

01:52.720 --> 01:56.580
Die Vorgehensweise sieht so aus, dass wir die Ein- und

01:56.580 --> 01:59.300
Ausgabevariablen festlegen in S und R.

02:00.880 --> 02:04.560
Wir legen die Zustände fest und dann zeichnen wir den Automaten

02:04.560 --> 02:04.940
-Graphen.

02:06.060 --> 02:08.400
Die Frage ist, wie viele Zustände benötigen wir?

02:09.680 --> 02:11.040
Die Antwort steht schon dran.

02:11.100 --> 02:15.640
Wir brauchen zwei Zustände, einmal für die 0 und einmal für die 1.

02:20.480 --> 02:27.640
Zum Automaten-Graphen definieren wir hier einen Zustandsknoten, der so

02:27.640 --> 02:31.880
aussieht, einmal mit ZI, der den Zustand beschreibt, einmal mit Q für

02:31.880 --> 02:36.620
die Ausgabe und die Übergänge werden jeweils beschriftet mit einer

02:36.620 --> 02:39.540
Kante, die mit RS annotiert ist.

02:40.940 --> 02:42.600
Wir haben gesagt, wir haben zwei Zustände.

02:42.760 --> 02:49.920
Zustand 0 erzeugt gleichzeitig eine Ausgabe 0 und Zustand 1 erzeugt

02:49.920 --> 02:50.800
eine Ausgabe 1.

02:52.480 --> 02:58.000
Funktion haben wir gesagt, Reset Z beide gleich 0, soll der Wert

02:58.000 --> 02:58.840
beibehalten werden.

02:59.020 --> 03:05.440
Das heißt, hier kommt eine reflexive Kante dran und wenn R, also

03:05.440 --> 03:10.060
Reset, gesetzt ist, bleibt natürlich auch der Zustand beim Gleichen,

03:11.120 --> 03:12.280
produziert die Ausgabe 0.

03:13.220 --> 03:15.200
Genauso beim Zustand 1.

03:15.880 --> 03:17.380
Bei 0, 0 wird der Wert gehalten.

03:17.880 --> 03:23.260
0, 1, das heißt, bei einer positiven S oder bei einer 1 auf der S

03:23.260 --> 03:28.300
-Leitung wollen wir auch auf dem 1er Zustand bleiben und auch hier

03:28.940 --> 03:31.940
kommen beide Übergänge auf die gleiche Kante.

03:33.400 --> 03:36.480
Wenn wir jetzt im Zustand 0 sind, das heißt, wir haben jetzt hier eine

03:36.480 --> 03:43.460
0 gespeichert und belegen unser S für Set, dann soll gewechselt werden

03:43.460 --> 03:44.520
in den Zustand 1.

03:45.600 --> 03:51.140
Diese Kante und nochmal zurück mit Reset von 1 auf 0.

03:54.850 --> 04:01.890
Was wir hier entworfen haben, nennen wir ein Moore-Schaltwerk und zwar

04:01.890 --> 04:06.270
sieht man das daran, dass die Ausgaben immer im Zustand mit codiert

04:06.270 --> 04:06.550
sind.

04:07.130 --> 04:10.050
Das heißt, die Ausgabe hängt nur vom Zustand ab, nicht von der

04:10.050 --> 04:10.490
Eingabe.

04:14.080 --> 04:18.100
Das ist auch der Grund, warum die Ausgabe im Zustand steht.

04:18.220 --> 04:21.920
Wir werden nachher noch ein anderes Schaltwerk sehen oder eine andere

04:21.920 --> 04:24.500
Implementierung von einem Schaltwerk, wo das anders verläuft.

04:26.960 --> 04:34.860
Also, funktionsweise Zustand Set 0 liefert den Ausgabewert 0 und so

04:34.860 --> 04:35.100
weiter.

04:35.220 --> 04:36.240
Ich glaube, das ist alles klar.

04:38.040 --> 04:40.500
Was jetzt nicht klar ist oder was wir jetzt nicht betrachtet haben,

04:40.620 --> 04:43.480
ist der Fall, dass wir R und S gleichzeitig auf 1 setzen.

04:44.380 --> 04:48.640
Wenn wir nochmal zurückgehen, haben wir in unserem Diagramm nicht

04:48.640 --> 04:49.180
betrachtet.

04:49.460 --> 04:52.300
Das heißt, hier nirgendwo taucht eine Kante mit 1 auf.

04:54.700 --> 04:57.720
Das liegt daran, dass dieser Zustand für uns undefiniert ist.

04:57.920 --> 04:59.880
Das heißt, es spielt für uns keine Rolle, was dann passiert.

05:00.540 --> 05:04.000
Wir verbieten einfach, dass diese Eingangsbelegung auftritt.

05:06.300 --> 05:10.200
Konkret heißt es allerdings auch, für unseren Entwurf können wir diese

05:10.200 --> 05:13.500
Belegung nachher zu Optimierungszwecken verwenden.

05:13.740 --> 05:16.880
Das heißt, wir können unsere Schaltfunktionen eventuell vereinfachen.

05:18.600 --> 05:20.960
So, dann aufstellen an der Automatentafel.

05:24.830 --> 05:27.530
Dafür erstellen wir die Flussmatrix dieses einfachen Speichers.

05:27.610 --> 05:28.370
Die sieht so aus.

05:29.190 --> 05:32.270
Wir haben hier immer Zustand I kodiert.

05:32.670 --> 05:34.370
Das ist einmal Zustand 0 und Zustand 1.

05:35.090 --> 05:37.450
Und wir schreiben dann unten immer die Folgezustände rein.

05:39.990 --> 05:44.050
In den einzelnen Spalten haben wir jeweils R und S, die Belegung von R

05:44.050 --> 05:44.430
und S.

05:46.130 --> 05:48.390
Und rechts haben wir das Q für unsere Ausgabe.

05:49.070 --> 05:50.690
Wir haben ja gesagt, wir haben einen Moorautomaten.

05:50.830 --> 05:52.870
Das heißt, die Ausgabe hängt von unserem Zustand ab.

05:53.270 --> 05:55.930
Das heißt, wir können direkt die letzte Spalte ausfüllen.

05:56.330 --> 05:59.550
Dazu sagen wir, im Zustand 0 produzieren wir eine Ausgabe 0.

05:59.810 --> 06:02.070
Im Zustand 1 produzieren wir eine Ausgabe 1.

06:03.310 --> 06:07.590
Was passiert jetzt, wenn wir im Zustand 0 sind und die Eingabebelegung

06:07.590 --> 06:08.470
00 auftritt?

06:09.150 --> 06:11.630
Wenn wir hier sehen, dann bleiben wir im Zustand 0.

06:12.710 --> 06:18.190
Im Zustand 0 mit Eingabebelegung 01 wechseln wir in den Zustand 1.

06:18.410 --> 06:19.870
Z1, 1, 0.

06:20.410 --> 06:21.030
Das sieht man hier.

06:21.250 --> 06:22.450
Da bleibe ich im Zustand 0.

06:23.630 --> 06:27.390
Zustand 1 mit einer 00, wieder reflexiv, bleibe ich im gleichen

06:27.390 --> 06:28.090
Zustand.

06:29.030 --> 06:33.190
Mit dem Setzen, also mit Z01, bleibe ich wieder in 1.

06:33.730 --> 06:38.290
Und mit Reset gehe ich wieder zurück auf meinen Zustand 0.

06:39.690 --> 06:41.850
Und die anderen beiden Zustände haben wir gesagt, sind nicht

06:41.850 --> 06:42.330
definiert.

06:42.730 --> 06:44.390
Das heißt, hier können wir Don't Cares eintragen.

06:46.090 --> 06:50.030
So, bei einem asynchronen Schaltwerk nennen wir diese Automatentafel

06:50.030 --> 06:51.710
auch Flussmatrix.

06:55.320 --> 07:01.480
Und wir werden jetzt definieren, was ein stabiler Zustand ist.

07:02.360 --> 07:06.540
Dafür haben wir ein Stabilitätskriterium und sagen, ein Zustand ist

07:06.540 --> 07:11.020
stabil, wenn der Folgezustand und einer bestimmten Eingabebelegung

07:11.020 --> 07:13.580
exakt dem gleichen Zustand entspricht.

07:13.940 --> 07:22.580
Das heißt, hier haben wir die Übergangsfunktion mit dem stabilen

07:22.580 --> 07:27.240
Zustand und einer bestimmten Eingabebelegung soll gleich dem stabilen

07:27.240 --> 07:27.900
Zustand sein.

07:31.020 --> 07:34.560
Falls dieses Kriterium nicht zutrifft, reden wir von einem instabilen

07:34.560 --> 07:35.080
Zustand.

07:36.440 --> 07:43.580
Was passiert bei einem asynchronen Schaltwerk ist, dass direkt danach

07:43.580 --> 07:45.180
ein weiterer Zustand eingenommen wird.

07:45.980 --> 07:49.600
Das heißt, es gibt einen Sprung auf einen ersten Zustand.

07:50.800 --> 07:54.180
Dadurch, dass die Eingabebelegung gleich bleibt, springt das

07:54.180 --> 07:56.840
Schaltwerk aber direkt in einen zweiten Zustand über.

07:57.600 --> 07:59.600
Und diese Fälle werden wir auch gleich nochmal betrachten.

08:01.460 --> 08:03.560
Wie kennzeichnen wir stabile Zustände?

08:03.680 --> 08:06.300
Wir kennzeichnen stabile Zustände, indem wir Kreise machen in unserer

08:06.300 --> 08:07.020
Flussmatrix.

08:07.600 --> 08:08.460
Das sieht dann so aus.

08:08.940 --> 08:09.960
Nochmal zur Erinnerung.

08:11.180 --> 08:14.880
Hier die Funktion, was dieses Schaltwerk bewirken soll.

08:15.200 --> 08:16.360
Hier unsere Flussmatrix.

08:16.940 --> 08:23.060
Wir betrachten jetzt im Zustand Z0 die Folgezustände.

08:23.760 --> 08:27.900
Das heißt, wenn ich in Z0 bin und mein Folgezustand ist auch Z0, mache

08:27.900 --> 08:28.720
ich einen Kreis drum.

08:29.380 --> 08:30.140
Genauso hier.

08:30.420 --> 08:34.600
Bin ich im Zustand Z1, mache ich einen Kreis um meinen Folgezustand,

08:34.740 --> 08:35.760
falls er Z1 ist.

08:37.140 --> 08:37.560
Hier nochmal.

08:38.400 --> 08:40.900
Und diese anderen beiden Zustände hier sind instabil.

08:41.360 --> 08:44.140
Hier habe ich da Unkers, also können wir hier keine Aussage darüber

08:44.140 --> 08:44.420
treffen.

08:48.860 --> 08:51.320
Was für Zustandsübergänge gibt es?

08:52.340 --> 08:53.560
Oder was betrachten wir hier?

08:54.600 --> 08:56.420
Es gibt einmal einen direkten Übergang.

08:57.620 --> 08:59.040
Und zwar passiert hier folgendes.

09:00.300 --> 09:01.580
Ich bin in meinem Zustand 0.

09:04.220 --> 09:07.000
Also das ist jetzt nur ein Beispiel für eine Flussmatrix, für eine

09:07.000 --> 09:07.600
Implementierung.

09:08.320 --> 09:11.380
Ich bin in meinem Zustand 0 und ich habe eine Eingabenbelegung E2.

09:12.820 --> 09:16.180
Das heißt, mein Folgezustand wäre Zustand 3.

09:18.840 --> 09:20.900
Das sieht man hier, er springt direkt auf 3.

09:23.200 --> 09:31.820
Bin ich in Zustand 0 und habe die Eingabenbelegung 3, ist mein

09:31.820 --> 09:33.100
Folgezustand eine 2.

09:34.340 --> 09:40.100
Das heißt, ich springe zuerst auf die 2, habe dann aber im Zustand 2

09:40.100 --> 09:44.740
mit der gleichen Eingabenbelegung als Folgezustand den Zustand 3.

09:45.180 --> 09:55.440
Das heißt, ich wechsle von 0 auf 2 und von 2 direkt auf 3.

09:56.240 --> 09:58.040
Das nennen wir einen indirekten Übergang.

10:01.590 --> 10:05.530
Und der letzte Übergang, den wir betrachten, ist eine Oszillation.

10:06.090 --> 10:08.830
Das heißt, ich bin im Zustand 0 mit Eingabenbelegung 4.

10:11.110 --> 10:12.770
Wechsle ich auf Zustand 1.

10:13.770 --> 10:16.950
Bin ich in Zustand 1, habe die Eingabenbelegung 4, wechsle ich auf

10:16.950 --> 10:17.530
Zustand 0.

10:18.310 --> 10:20.110
Und dann fängt das gleiche Spiel von vorne an.

10:20.210 --> 10:23.010
Ich springe wieder auf die 0, 1, 0, 1, 0, 1, 0, 1.

10:24.090 --> 10:25.530
Folglich drehe ich von einer Oszillation.

10:29.190 --> 10:33.630
So, wir könnten hier das Zustandsübergangsdiagramm malen, aber ich

10:33.630 --> 10:36.530
glaube, das ist soweit klar.

10:37.570 --> 10:38.850
Soweit schon Fragen?

10:39.970 --> 10:41.170
Irgendjemand abgehängt?

10:42.550 --> 10:43.450
Gut, dann machen wir weiter.

10:44.710 --> 10:46.090
Also zusammengefasst nochmal.

10:47.490 --> 10:53.410
Wir haben direkte Übergänge und zwar tritt es bei stabilen Zuständen

10:53.410 --> 10:53.610
auf.

10:53.730 --> 10:56.070
Die gehen direkt in einen stabilen Folgezustand über.

10:56.910 --> 11:02.430
Wir haben indirekte Übergänge, wo der stabile Folgezustand sich erst

11:02.430 --> 11:05.450
nach einem weiteren Sprung oder nach mehreren Zwischenzuständen

11:05.450 --> 11:06.010
einstellt.

11:06.290 --> 11:09.270
Und wir haben eine Oszillation, wo überhaupt kein stabiler

11:09.270 --> 11:13.390
Folgezustand auftritt, das heißt, passiert irgendwas im Schaltwerk.

11:13.750 --> 11:16.290
Also das ist eigentlich ein Fall, den wollen wir vermeiden.

11:21.610 --> 11:25.010
Dann geht es weiter mit der Zustandscodierung.

11:25.370 --> 11:27.310
Wir haben ja gesagt, wir haben verschiedene Zustände.

11:29.090 --> 11:31.910
Die können wir natürlich bei der Implementierung nicht so verwenden.

11:32.070 --> 11:34.170
Das heißt, wenn wir drei verschiedene Zustände haben, können wir nicht

11:34.170 --> 11:36.890
0, 1, 2, 3 nehmen, sondern wir müssen das Ganze binär codieren.

11:39.010 --> 11:41.910
Um zu wissen, wie viele Binärstellen ich brauche, also wie viele

11:41.910 --> 11:46.550
Eingangszustandsvariable ich brauche, kann ich den Logarithmus Dualis

11:46.550 --> 11:52.310
zurate ziehen und muss diesen Wert dann aufrunden.

11:53.150 --> 11:56.350
Wir wissen, dass wir mit nBit maximal 2 hoch n verschiedene Zustände

11:56.350 --> 11:57.010
codieren können.

12:01.240 --> 12:07.440
Und das ist quasi, wenn ich, angenommen, habe vier Zustände, mache ich

12:07.440 --> 12:08.760
den Logarithmus Dualis davon.

12:09.120 --> 12:09.700
Das ist eine 2.

12:10.100 --> 12:13.380
Das heißt, für vier Zustände, um vier Zustände zu codieren, brauche

12:13.380 --> 12:14.640
ich mindestens 2 Bit.

12:16.240 --> 12:19.100
Deswegen ist auch hier die Anzahl der Zustände k, das ist eine untere

12:19.100 --> 12:19.620
Schranke.

12:20.680 --> 12:24.740
Wenn ich fünf Zustände habe, mache ich den Logarithmus Dualis, das ist

12:24.740 --> 12:25.700
2, irgendwas.

12:26.120 --> 12:28.820
Dieses 2, irgendwas muss ich aufrunden auf 3.

12:30.360 --> 12:34.780
Weil wenn ich normal runde, hätte ich natürlich wieder die 2 und mit 2

12:34.780 --> 12:37.020
kann ich nur zwar auch zwei, vier Zustände codieren, das heißt, den

12:37.020 --> 12:38.580
fünften Zustand könnte ich nicht mehr codieren.

12:39.220 --> 12:41.580
Das heißt, in dem Fall brauche ich dann drei Bits, obwohl ich mit drei

12:41.580 --> 12:44.180
Bits zum Beispiel acht Zustände codieren kann schon.

12:46.780 --> 12:49.540
Also, zusammengefasst, die Anzahl der Zustände legt eine untere

12:49.540 --> 12:51.400
Schranke für die Anzahl der Zustandsbits fest.

12:52.520 --> 12:53.420
Können wir uns so merken.

12:55.740 --> 12:58.020
Minimale Anzahl der Zustandsvariablen, haben wir gesagt, Logarithmus

12:58.020 --> 13:03.380
Dualis von den Anzahl der Zustände, die ich benötige, aufgerundet.

13:03.680 --> 13:04.820
Das ist das Symbol hier.

13:08.500 --> 13:12.940
Und wichtig auch bei asynchronen Schaltwerken entspricht jede

13:12.940 --> 13:14.760
Zustandsvariable einer Rückkopplung.

13:17.400 --> 13:18.820
Das werden wir gleich nochmal sehen.

13:18.880 --> 13:20.500
Die Rückkopplungen betrachten wir gleich nochmal.

13:27.130 --> 13:27.130
So,

13:31.330 --> 13:34.910
was man jetzt nicht sich denkt, also wo man jetzt sagen würde,

13:35.890 --> 13:38.590
Zustandscodierung ist doch egal, ob ich jetzt 0, 1, 1, 0 habe ich halt

13:38.590 --> 13:40.130
zum Beispiel vier Zustände, zwei Bits.

13:40.690 --> 13:41.730
Ist ja egal, wie ich das belege.

13:42.190 --> 13:43.430
Ganz so egal ist es leider nicht.

13:43.530 --> 13:46.890
Bei der Implementierung müssen wir tatsächlich aufpassen, was für eine

13:46.890 --> 13:49.830
Zustandscodierung wir verwenden.

13:49.830 --> 13:53.510
Denn abhängig von dieser Zustandscodierung können dann nachher

13:53.510 --> 13:54.610
Probleme auftreten.

13:55.210 --> 13:58.590
Auch wenn es eigentlich so auf den ersten Blick ist es ja quasi nur

13:58.590 --> 14:00.630
eine andere Darstellungsform des Zustandes.

14:03.570 --> 14:08.630
Dazu betrachten wir erstmal eine willkürliche Zustandscodierung.

14:08.950 --> 14:14.310
Wir sagen Zustand 0 ist als Ü1, Ü2 sind jetzt unsere

14:14.310 --> 14:20.390
Zustandsvariablen, Vorgangsvariablen vielleicht.

14:22.770 --> 14:26.170
Also wir kodieren die generell mit Ü.

14:32.030 --> 14:34.870
Angenommen, wir haben jetzt unseren Zustand 0 kodiert mit 0, 0.

14:35.730 --> 14:37.690
Zustand 1 kodiert mit 0, 1.

14:38.190 --> 14:40.970
Zustand 2 mit 1, 0 und Zustand 3 mit 1, 1.

14:41.030 --> 14:43.030
So wie wir das normalerweise intuitiv machen würden.

14:43.790 --> 14:46.210
Wir machen uns jetzt keine Gedanken und nummerieren das einfach binär

14:46.210 --> 14:46.510
durch.

14:47.610 --> 14:48.410
Was passiert dann?

14:49.690 --> 14:53.010
Wir betrachten jetzt den Übergang von Zustand 0 unter Einlegen von E2

14:53.010 --> 14:53.950
nach Zustand 3.

14:54.490 --> 14:58.590
Also E2 wird angelegt und wir wechseln von 0 auf 3.

14:59.290 --> 15:01.730
Wir haben ja vorhin festgestellt, dass es ein direkter Übergang ist,

15:01.890 --> 15:04.770
dass es direkt in einem stabilen Zustand endet.

15:04.870 --> 15:06.970
Das heißt, da sollten eigentlich keine Probleme auftreten.

15:07.950 --> 15:12.030
Betrachten wir uns jetzt aber bei unserer gewählten Zustandskodierung

15:12.030 --> 15:12.790
den Übergang.

15:13.770 --> 15:18.170
So heißt es, dass ich von einem Übergang Ü1, Ü2 0, 0 nach 1, 1

15:18.170 --> 15:18.610
wechsle.

15:20.510 --> 15:24.810
Das heißt, beide Zustandsvariablen ändern sich.

15:25.950 --> 15:29.930
In der idealen Realität ist es natürlich egal.

15:30.790 --> 15:33.750
In der realen Realität ist es natürlich nicht der Fall, dass sie sich

15:33.750 --> 15:35.690
gleichzeitig ändern, sondern wir haben immer verschiedene

15:35.690 --> 15:36.430
Verzögerungen.

15:36.930 --> 15:38.550
Irgendein Bauteil ist schneller als das andere.

15:40.030 --> 15:43.490
Einer der beiden Variablen wird sich mit hoher Sicherheit zuerst

15:43.490 --> 15:46.050
ändern und die zweite wird dann darauf folgen.

15:47.150 --> 15:50.490
Das heißt, unser Übergang sieht in der Realität so aus.

15:51.070 --> 15:52.350
Wir können zwei Fälle unterscheiden.

15:52.470 --> 15:56.350
Einmal, dass ich von 0, 0 auf 1, 0 und dann auf 1, 1 wechsle.

15:58.250 --> 16:02.510
Und einmal, dass ich von 0, 0 auf 0, 1 wechsle und dann auf die 1, 1.

16:05.010 --> 16:07.070
Im ersten Fall wäre Ü2 schneller.

16:07.790 --> 16:12.170
Das heißt, modierungstechnisch haben wir gesagt Ü2, Ü1.

16:12.330 --> 16:16.010
Das heißt, hier schaltet Ü2 schneller und im unteren Fall wäre Ü1

16:16.010 --> 16:16.290
schneller.

16:17.370 --> 16:21.010
Das heißt, die Verzögerungszeiten von Ü2 sind im ersten Fall kleiner

16:21.010 --> 16:24.710
als von Ü1 und im zweiten Fall genau andersherum.

16:25.390 --> 16:28.090
Wir betrachten jetzt beide Fälle nochmal, ein bisschen detaillierter.

16:31.630 --> 16:34.330
Was wir hier haben, nennen wir auch einen Wettlauf, eine Racing

16:34.330 --> 16:35.410
Condition im Englischen.

16:38.170 --> 16:40.470
Und später nochmal ein bisschen detaillierter drauf ein.

16:40.690 --> 16:41.610
Erstmal das Beispiel.

16:42.290 --> 16:46.510
Wir haben gesagt, erster Fall, Übergang von 0, 0 auf 1, 0 und dann auf

16:46.510 --> 16:47.170
1, 1.

16:47.950 --> 16:52.170
Übergang 0, 0 wäre nach unserer Zustandskodierungstabelle Zustand 0,

16:53.290 --> 16:53.810
also hier.

16:56.430 --> 16:57.590
Eingabebelegung ist E2.

16:59.970 --> 17:05.170
Und ich wechsle jetzt auf 1, 0, was meinem Zustand 2 entspricht und

17:05.170 --> 17:06.370
anschließend auf die 3.

17:08.290 --> 17:13.310
Bei 0 mit Eingabe 2, ich komme zuerst auf den Zustand 2.

17:13.490 --> 17:15.770
Das heißt, der schickt mich dann weiter auf den Zustand 3.

17:17.530 --> 17:19.030
Es kann also nichts passieren.

17:21.910 --> 17:25.310
Er ist zwar instabil, also der Zustand selber ist zwar unter 2, mit

17:25.310 --> 17:29.290
der Eingabebelegung E2 ist er zwar instabil, aber er leitet uns an die

17:29.290 --> 17:30.230
richtige Stelle weiter.

17:31.850 --> 17:34.070
Das heißt, es ist unkritisch.

17:35.410 --> 17:37.890
Betrachten wir den zweiten Fall, dass wir zuerst auf die 0, 1

17:37.890 --> 17:41.830
wechseln, das heißt auf den Zustand 1 und danach auf die 3 gehen.

17:42.570 --> 17:43.450
Dann sehen wir,

17:47.480 --> 17:51.800
dass ich bei der Eingabebelegung E2 im Zustand 1 einen stabilen

17:51.800 --> 17:52.540
Zustand habe.

17:53.340 --> 17:56.460
Und dieser stabile Zustand sorgt dafür, dass ich im Zustand 1 bleibe.

17:59.360 --> 18:07.180
Das heißt, die eigentliche Funktion des Schaltwerks ist, dass ich auf

18:07.180 --> 18:10.120
Zustand 3 wechsle, die tritt hier niemals ein.

18:11.020 --> 18:15.560
Ich bleibe in 1 hängen und letztendlich heißt es für mein Schaltwerk,

18:15.560 --> 18:16.740
dass es nicht richtig funktioniert.

18:21.010 --> 18:27.610
Also es ist interessant, weil theoretisch sollte es direkt vom Zustand

18:27.610 --> 18:29.170
0 in den Zustand 3 wechseln.

18:29.730 --> 18:31.930
Das ist ein direkter Übergang, da sollte zwischendrin nichts

18:31.930 --> 18:32.330
passieren.

18:32.790 --> 18:35.390
Aber durch die Wahl unserer Zustandscodierung haben wir jetzt dafür

18:35.390 --> 18:39.830
gesorgt, dass wir zuerst in einen instabilen Zustand, dass wir direkt

18:39.830 --> 18:43.410
auf die 1 wechseln und in einem stabilen Zustand landen und das

18:43.410 --> 18:45.470
Schaltwerk nicht mehr aus diesem stabilen Zustand rauskommt.

18:46.110 --> 18:48.970
Das heißt, wir sind jetzt gefangen in der 1 und unser Schaltwerk hat

18:48.970 --> 18:49.930
jetzt eine andere Funktion.

18:53.690 --> 18:56.230
Diesen Vorgang nennen wir jetzt einen kritischen Wettlauf.

18:57.010 --> 19:01.110
Das heißt, wenn abhängig von den Verzögerungszeiten ein Folgezustand

19:01.110 --> 19:06.110
erreicht wird, den wir eigentlich nicht erreichen wollen, nennen wir

19:06.110 --> 19:07.250
das einen kritischen Wettlauf.

19:08.670 --> 19:11.110
Und diese kritischen Wettläufe, die wollen wir eigentlich vermeiden.

19:12.870 --> 19:14.050
Wie können wir das erreichen?

19:15.470 --> 19:18.390
Wir können es nur erreichen, wenn wir eine Zustandscodierung wählen,

19:18.730 --> 19:21.190
die wettlauffrei ist.

19:22.330 --> 19:26.170
Das bedeutet, dass wir die Zustände derart codieren, dass bei jedem

19:26.170 --> 19:28.970
Zustandswechsel sich immer nur eine Variable ändert.

19:31.410 --> 19:34.350
Nun, das ist nicht immer möglich mit der Anzahl der Variablen, die wir

19:34.350 --> 19:35.270
zur Verfügung haben.

19:36.990 --> 19:39.830
Das heißt, meistens wird es so sein, dass wir dann die Anzahl der

19:39.830 --> 19:41.790
Zustandsvariablen erhöhen müssen.

19:42.510 --> 19:47.210
In unserem Fall können wir jetzt für diesen Übergang betrachten, wenn

19:47.210 --> 19:49.310
wir eine andere Zustandscodierung haben, wie zum Beispiel hier

19:49.310 --> 19:54.390
aufgeführt, dass wir den 0 mit 0,0 codieren, den Zustand 1 mit 1,1,

19:55.010 --> 19:59.370
also nicht einfach binär durchnummerieren, Zustand 2 mit 1,0, Zustand

19:59.370 --> 20:00.410
3 mit 0,1.

20:01.810 --> 20:05.550
Dann können wir gewährleisten, dass ein Übergang von Zustand 0 auf 3

20:05.550 --> 20:10.550
nur eine Eingangsvariable wechselt, und zwar Ü1.

20:13.230 --> 20:26.430
Bei dem Übergang von Zustand 0 auf Zustand 3 ändert sich eine

20:26.430 --> 20:32.050
Übergangsvariable und von 0 auf 2 ändert sich eine.

20:32.350 --> 20:35.150
Von 0 auf 1 hätte ich natürlich wieder das Problem, dass sich hier

20:35.150 --> 20:40.070
zwei Eingabevariablen ändern, aber wir sehen für diesen Fall benötigen

20:40.070 --> 20:44.630
wir das nicht, weil sowieso eine Konfiguration ist, die wir vermeiden

20:44.630 --> 20:44.910
wollen.

20:45.370 --> 20:46.610
Das heißt, in diesem Fall funktioniert das.

20:50.070 --> 20:53.890
Nochmal zusammengefasst, die Anzahl der minimalen Zustandsvariablen

20:53.890 --> 20:58.430
kann überschritten werden, falls wir eine Zustandscodierung wählen

20:58.430 --> 21:01.690
wollen, die keine kritischen Wettläufe hat.

21:02.330 --> 21:05.210
Es gibt verschiedene Verfahren, die werden wir aber jetzt nicht weiter

21:05.210 --> 21:09.290
auf diese Verfahren eingehen in dieser Vorlesung, sondern hier nur ein

21:09.290 --> 21:12.350
paar erwähnen, zum Beispiel das Teileverfahren, das LIU-Verfahren.

21:12.790 --> 21:14.690
Da verweisen wir dann auf die Fachliteratur.

21:15.090 --> 21:17.550
Könnt ihr euch gerne, falls euch interessiert, nochmal nachschlagen.

21:18.930 --> 21:20.910
Kommen wir zurück zu unserem einfachen Speicher.

21:21.670 --> 21:25.050
Wir haben gesagt, wir haben da so ein Modul, das soll uns einen

21:25.050 --> 21:27.190
Zustand speichern, deswegen auch Speicher.

21:29.310 --> 21:33.530
In diesem Fall haben wir keinen Wettlauf.

21:34.190 --> 21:37.150
Das heißt, die wettlauffreie Zustandscodierung ist uns garantiert,

21:37.230 --> 21:39.630
einfach deswegen, weil wir nur zwei Zustände haben.

21:39.930 --> 21:42.790
Das heißt, es kann gar nicht auftreten, dass sich zwei

21:42.790 --> 21:44.250
Zustandsvariablen gleichzeitig ändern.

21:46.610 --> 21:51.590
Kodieren tun wir unsere Zustände so, dass wir sagen, eine 0 bedeutet

21:51.590 --> 21:54.170
Zustand Z0 und eine 1 bedeutet Zustand Z1.

21:54.830 --> 21:56.790
Auch wenn wir nur eine Variable haben, muss man das natürlich

21:56.790 --> 22:00.950
hinschreiben und definieren, weil sonst nicht klar ist, was was

22:00.950 --> 22:01.350
bedeutet.

22:04.610 --> 22:07.410
So, soweit Fragen.

22:12.640 --> 22:14.620
Erzeugende Ausgabe- und Übergangsschaltnetze.

22:15.140 --> 22:16.240
Jetzt wollen wir betrachten,

22:20.440 --> 22:32.060
wir haben links unsere Flussmatrix und wir machen daraus eine

22:32.060 --> 22:33.040
Erregungsmatrix.

22:33.600 --> 22:35.980
Und zwar haben wir hier, das Einzige, was sich hier ändert, sind

22:35.980 --> 22:37.200
unsere Bezeichnungen.

22:37.340 --> 22:41.280
Wir haben hier die Zustände ZI und ZI+, also den Folgezustand.

22:43.780 --> 22:49.100
Und hier benutzen wir jetzt unsere Zustandsvariable Ü, also Ü für den

22:49.100 --> 22:51.520
aktuellen Zustand und Ü plus für den Folgezustand.

22:53.120 --> 22:58.580
Kodiert haben wir hier die Eingaben, hier haben wir nochmal die

22:58.580 --> 23:01.220
Zustände und hier diese Zustandsvariable ändern sich natürlich auch.

23:01.680 --> 23:03.820
Das heißt, abgesehen von den Zustandsbezeichnungen hat sich hier kaum

23:03.820 --> 23:04.360
was geändert.

23:06.500 --> 23:07.900
Diesen Weg müssen wir aber gehen.

23:08.680 --> 23:09.740
Wir werden auch gleich sehen, warum.

23:10.780 --> 23:15.620
Weil hier unsere ganzen Algorithmen nochmal dranhängen, wie wir

23:15.620 --> 23:16.240
vorgehen wollen.

23:18.800 --> 23:23.120
Also, wir wollen die Funktionstabelle der Ausgabe- und

23:23.120 --> 23:26.240
Übergangsschaltnetze unseres einfachen Speichers bestimmen.

23:27.640 --> 23:31.920
Dafür haben wir gesagt, haben wir hier unsere Erregungsmatrix und

23:31.920 --> 23:33.460
haben hier unsere Funktionstabellen.

23:35.260 --> 23:42.300
Wir haben als Eingabe RS, das sind meine Eingabevariablen und wir

23:42.300 --> 23:46.680
haben unseren aktuellen Zustand Ü auch als Eingabevariable und wir

23:46.680 --> 23:50.740
definieren jetzt, wie unser Folgezustand und wie die Ausgabe aussieht.

23:53.940 --> 23:55.400
Jetzt gucken wir, ob ich da eine Animation habe.

23:55.640 --> 23:55.860
Jawohl.

23:57.080 --> 23:58.380
Sieht dann folgendermaßen aus.

23:58.880 --> 24:04.880
Wir betrachten RS 0,0 in diese zwei Fälle und wir haben hier jeweils

24:04.880 --> 24:08.120
die Ausgaben 0 und 1 für Ü plus.

24:10.680 --> 24:15.400
Und wir haben die Ausgabe 0,1 hier auf der rechten Seite.

24:16.840 --> 24:21.740
So können wir jetzt durchgehen durch unsere gesamte Erregungsmatrix,

24:21.900 --> 24:25.960
können dann hier sagen, diese zwei Spalten entsprechen diesen zwei

24:25.960 --> 24:26.420
Zeilen.

24:26.880 --> 24:30.400
In die nächste Spalte habe ich die 1,0 für meine RS, für meine

24:30.400 --> 24:31.320
Eingabevariablen.

24:32.140 --> 24:37.500
Produziere wieder 0,1 als Ausgabe und hier als Folgezustände 0,0.

24:38.300 --> 24:42.100
Und für die letzte Spalte habe ich hier natürlich Don't Cares drin für

24:42.100 --> 24:43.540
meinen Folgezustand.

24:43.920 --> 24:46.160
Ausgabe selber ist aber wieder 0,1.

24:48.840 --> 24:53.360
So, jetzt tragen wir einfach diese Funktion in ein KV-Diagramm ein.

24:54.180 --> 24:56.920
Erstmal betrachten wir Ü plus, also unseren Folgezustand.

24:59.040 --> 25:02.940
Wir haben hier 0,1,1,1,0,0, Don't Care, Don't Care.

25:06.240 --> 25:10.520
Das heißt 0,1,1,1,0,0, Don't Care, Don't Care.

25:11.280 --> 25:17.260
Im KV-Diagramm eingetragen, können wir daraus die Übergangsfunktion

25:17.260 --> 25:19.240
definieren für unseren Folgezustand.

25:19.780 --> 25:27.260
Der sieht dann so aus, dass ich hier ausnahmsweise mal die konjunktive

25:27.260 --> 25:35.980
Form nehme und sage, es ist R nicht, also R nicht und Ü oder S,

25:37.040 --> 25:40.780
beziehungsweise nicht R und Ü oder S.

25:41.400 --> 25:44.000
Und in der letzten Übung kritisiert, dass ich das nicht danach sage,

25:44.100 --> 25:46.560
deswegen nochmal für diejenigen, die das anders verstehen.

25:47.000 --> 25:50.380
R nicht, nicht R und Ü oder S.

25:52.340 --> 25:59.000
Kann man Umformen in den Normformen bringen, dann hat man hier ein R

25:59.000 --> 26:06.860
genort mit Ü nor S und für das Ausgabeschaltnetz ist die Funktion

26:06.860 --> 26:07.520
trivial.

26:07.780 --> 26:10.560
Wenn wir uns nochmal angucken, was hier rauskommt, entspricht es

26:10.560 --> 26:12.700
eigentlich immer dem aktuellen Zustand.

26:14.200 --> 26:19.100
Das heißt hier kann ich sagen, Q ist Ü und Ü plus ist die Funktion,

26:19.220 --> 26:20.260
die wir vorhin definiert haben.

26:22.980 --> 26:28.840
Wenn wir uns jetzt eine konkrete Implementierung anschauen würden, für

26:28.840 --> 26:32.940
die Übergangsgleichung, würde es so aussehen, dass ich auf der einen

26:32.940 --> 26:39.780
Seite mein R habe, also dieses R genort mit diesem Ausdruck und dieser

26:39.780 --> 26:42.500
Ausdruck ist das Norm von Ü und S.

26:46.080 --> 26:50.160
Die Frage ist natürlich, wie stellt man jetzt das Ü plus, also den

26:50.160 --> 26:51.100
Folgezustand dar.

26:51.520 --> 26:55.720
Und wir sehen hier, dass wir hier ein Verzögerungsglied brauchen.

26:55.940 --> 27:00.660
Das heißt, hier kommt mein Folgezustand raus und der Folgezustand ist

27:00.660 --> 27:05.640
natürlich mein vorheriger Zustand, beziehungsweise der vorherige

27:05.640 --> 27:06.980
Zustand des nächsten Schrittes.

27:07.400 --> 27:10.940
Deswegen brauche ich hier ein Verzögerungsglied, um diesen

27:10.940 --> 27:13.580
Folgezustand mal rückzuführen.

27:14.800 --> 27:18.400
Und diese Rückführung, das ist diese Rückkopplung, von der wir vorhin

27:18.400 --> 27:19.060
geredet haben.

27:19.720 --> 27:22.600
Das heißt, für jede Zustandsvariable, haben wir gesagt, benötigen wir

27:22.600 --> 27:23.340
eine Rückkopplung.

27:23.820 --> 27:25.320
Und genau das hier ist die Rückkopplung.

27:27.140 --> 27:29.940
Ohne dieses Verzögerungsglied hätten wir wahrscheinlich ein Problem.

27:30.840 --> 27:34.540
Und zwar könnte man hier nämlich Kurzschlüsse erzeugen und das ist

27:34.540 --> 27:38.060
nicht so witzig dann, wenn die Schaltung dann direkt kaputt geht.

27:42.040 --> 27:44.980
Wir zeichnen es ein bisschen an, wir zeichnen es ein bisschen anders.

27:47.340 --> 27:53.380
Wir ziehen dieses Element parallel nach hinten und überkreuzen dann

27:53.380 --> 27:54.020
diese Linien.

27:54.800 --> 27:56.420
Das heißt, dieses Schaltbild

28:02.590 --> 28:09.710
ist dasselbe wie vorhin, nur dass wir jetzt hier ein bisschen

28:09.710 --> 28:11.270
kompaktere Darstellung einfach haben.

28:11.970 --> 28:17.110
Wir sehen also nochmal S und R als Eingänge, P und Q als Ausgänge,

28:17.470 --> 28:18.210
wobei wir sagen,

28:22.290 --> 28:26.530
Q ist unser Ausgang und P, werden wir gleich sehen, was P macht.

28:33.940 --> 28:37.580
Diese Schaltung ist eine bekannte Schaltung.

28:38.380 --> 28:42.660
Wir nennen diese Schaltung ein RS Flipflop und auf dieses RS Flipflop

28:42.660 --> 28:44.440
werden wir jetzt noch ein bisschen detaillierter eingehen.

28:47.760 --> 28:51.360
Genau, aber vorher nochmal kurz, P ist die Negation von Q.

28:52.260 --> 28:55.300
Das ist egal, was ich an Q rausbekomme.

28:55.700 --> 28:59.820
Idealerweise ist genau die Invertierung an P verfügbar.

29:05.640 --> 29:11.160
Das Problem war jetzt mit unserer verbotenen Eingangsbelegung 1,1.

29:12.740 --> 29:15.940
Diese 1,1 produziert eine 0,0 für P und Q.

29:17.340 --> 29:20.440
Und das darf natürlich nicht auftreten, weil diese beiden Elemente

29:20.440 --> 29:23.860
sollen auch in der Schaltfunktion, in der Funktion sollen die

29:23.860 --> 29:24.960
komplementär sein.

29:25.060 --> 29:28.620
Das heißt, wenn P 0 ist, ist immer Q die Negation von P, also 1 oder

29:28.620 --> 29:29.920
wenn P 1 ist, ist Q 0.

29:30.480 --> 29:34.960
Das heißt, wenn die beiden Werte gleich sind, dann haben wir hier eine

29:34.960 --> 29:37.380
schwerwiegende Beeinträchtigung der Funktion.

29:37.860 --> 29:39.020
Das wollen wir eigentlich nicht haben.

29:39.580 --> 29:42.520
Deswegen ist auch diese Eingangsbelegung verboten und die wollen wir

29:42.520 --> 29:42.900
nicht haben.

29:45.800 --> 29:47.700
Probleme von asynchronen Schaltwerken.

29:48.940 --> 29:50.780
Sie sind sehr, sehr störempfindlich.

29:50.900 --> 29:54.540
Das liegt daran, dass sie auf jede Eingangsbelegungsänderung reagieren

29:54.540 --> 29:57.980
und sie reagieren sofort auf diese Änderung.

30:00.460 --> 30:03.960
Und wenn wir natürlich, vorhin gesehen, wenn wir mehrere

30:03.960 --> 30:06.440
Zustandsvariablen haben, die sich ändern können, kann das zu ganz

30:06.440 --> 30:07.480
großen Problemen führen.

30:08.000 --> 30:11.760
Wir haben dann ziemlich starke Wettläufe überall.

30:12.960 --> 30:18.080
Und deswegen will man Wettläufe, will man auch, gerade bei sowas will

30:18.080 --> 30:20.340
man deswegen wettlauffreie Zustandskodierungen wählen.

30:22.840 --> 30:26.480
Hazardfehler in letzter Übung, wer dabei war, sollte sich jetzt

30:26.480 --> 30:28.080
auskennen mit Hazards und Hazardfehlern.

30:29.740 --> 30:33.180
Wenn wir Hazardfehler haben, also wenn wir Funktionshazards haben oder

30:33.180 --> 30:37.180
auch Strukturhazards, reagieren asynchrone Schaltwerke sehr, sehr

30:37.180 --> 30:41.680
empfindlich darauf und erzeugen natürlich falsche Zustandsübergänge,

30:41.780 --> 30:45.660
wie wir vorhin schon gesehen haben, dass wir von Zustand 0 in den

30:45.660 --> 30:47.760
stabilen Zustand 1 gelandet sind zum Beispiel.

30:48.340 --> 30:55.780
Oder wir auch Oszillationen, die dann dadurch auftauchen, durch diese

30:55.780 --> 30:58.440
falschen Übergänge, die eigentlich nicht auftreten sollten, verursacht

30:58.440 --> 30:58.680
werden.

31:00.260 --> 31:03.620
Man will natürlich Hazard-arme Schaltnetze haben, ist klar, das will

31:03.620 --> 31:06.120
man eigentlich immer haben, aber gerade hier ist es sehr, sehr

31:06.120 --> 31:06.420
wichtig.

31:06.840 --> 31:10.120
Und man muss diese Analyse auch ein bisschen detaillierter machen als

31:10.120 --> 31:10.380
sonst.

31:12.860 --> 31:19.860
So, zu weiteren verrückenden Störrisikos arbeiten Schaltwerke im

31:19.860 --> 31:21.040
Normal Fundamental Mode.

31:21.620 --> 31:24.440
Das heißt, das, was wir vorhin gesagt haben, es darf sich immer nur

31:24.440 --> 31:28.620
eine Eingangsvariable verändern und wir dürfen Eingabewechsel erst

31:28.620 --> 31:31.540
dann durchführen, wenn alle Änderungen abgeklungen sind.

31:31.700 --> 31:35.480
Das heißt, wenn das Schaltwerk sich stabilisiert hat und den stabilen

31:35.480 --> 31:36.400
Zustand eingenommen hat.

31:37.420 --> 31:41.060
So, als nächstes wollen wir asynchrone Schaltwerke analysieren.

31:44.110 --> 31:50.110
Dazu betrachten wir das bereits vorgestellte RAS-Flipflop und schauen

31:50.110 --> 31:53.470
uns an, wie ein Hazardfehler, der auftritt, sich auswirken kann.

31:56.900 --> 31:59.760
Zur Analyse gibt es verschiedene Schritte.

31:59.920 --> 32:04.360
Im ersten Schritt wollen wir erstmal die Rückkopplungen aufheben und

32:04.360 --> 32:08.080
jede Rückkopplung, die wir auflösen, für die müssen wir eine

32:08.080 --> 32:09.300
Zustandsvariable erzeugen.

32:09.440 --> 32:11.460
Wir haben ja vorhin gesagt, jede Rückkopplung entspricht einer

32:11.460 --> 32:12.300
Zustandsvariable.

32:12.680 --> 32:14.120
Das heißt, hier gehen wir den anderen Weg.

32:14.220 --> 32:16.600
Wir lösen die Rückkopplung auf und erzeugen aus dieser Rückkopplung

32:16.600 --> 32:17.560
eine Zustandsvariable.

32:20.240 --> 32:22.460
Wer hat jetzt aufgepasst, wie viele Rückkopplungen gibt es hier?

32:28.180 --> 32:29.180
Okay, anders gefragt.

32:29.820 --> 32:31.980
Wer ist dafür, dass hier eine Rückkopplung ist?

32:35.560 --> 32:35.940
Einer.

32:36.340 --> 32:36.720
Passend.

32:37.140 --> 32:38.940
Wer ist dafür, dass hier zwei Rückkopplungen sind?

32:40.920 --> 32:41.840
Mehr als zwei.

32:43.320 --> 32:45.000
Wer sieht gar keine Rückkopplung hier drin?

32:47.140 --> 32:49.720
Wer sieht mehr als drei oder drei oder mehr?

32:53.080 --> 32:54.440
Okay, wer passt nicht auf?

32:56.380 --> 32:57.460
Und wer ist schüchtern?

32:57.900 --> 32:58.540
Da hinten einer.

32:59.100 --> 32:59.540
Schüchtern.

32:59.740 --> 33:00.300
Haben wir auch ein paar.

33:00.420 --> 33:00.840
Sehr gut.

33:01.520 --> 33:05.600
Also, es ist nur eine Rückkopplung.

33:06.260 --> 33:08.320
Und die haben wir ja vorhin schon gezeigt eigentlich.

33:08.400 --> 33:10.800
Wir haben ja das Ganze schon so konstruiert, dass wir gesagt haben,

33:10.820 --> 33:12.680
wir bauen hier eine Rückkopplung rein.

33:12.960 --> 33:14.720
Und diese Rückkopplung, die wollen wir jetzt aufheben.

33:14.820 --> 33:19.280
Das heißt, wir machen jetzt hier einen Cut, schneiden diese

33:19.280 --> 33:22.400
Rückkopplung auf und sagen, das ist unser Zustand Ü oder die

33:22.400 --> 33:23.460
Zustandsvariable Ü.

33:27.600 --> 33:30.640
Das heißt, aus unserem Schaltwerk wird ein einfaches Schaltnetz.

33:32.240 --> 33:35.180
Das heißt, es hängt nicht mehr von irgendwelchen Zuständen ab, sondern

33:35.180 --> 33:38.480
wir können ganz normal unsere schallalgebraischen Betrachtungen hier

33:38.480 --> 33:38.980
durchführen.

33:40.540 --> 33:44.920
Und dafür benutzen wir auch das Todseitenmodell, was auch schon in der

33:44.920 --> 33:48.060
letzten Vorlesung vorgestellt sein müsste und in der letzten Übung auf

33:48.060 --> 33:48.940
alle Fälle auch dran war.

33:54.040 --> 33:56.660
So, die Todseiten des rückgekoppelten Garters bilden den

33:56.660 --> 33:59.520
Zustandsspeicher und trennen somit den Zustand vom Folgezustand.

34:00.160 --> 34:02.440
Was wir jetzt hier haben, ist die Implementierung nochmal.

34:03.400 --> 34:08.360
Und hier haben wir jetzt Tau 1 und Tau 2, jeweils nach den NOR

34:08.360 --> 34:10.540
-Gartern, so wie wir das kennen von unserem Todseitenmodell.

34:12.160 --> 34:14.020
Und die Schaltfunktion ist die gleiche.

34:14.140 --> 34:21.160
Also wir haben S genort mit Ü und genort mit R als Ausgabe Q und die

34:21.160 --> 34:24.020
Ausgabe von dem oberen Strang ist dann P.

34:28.790 --> 34:30.670
Also, ich fasse nochmal zusammen.

34:30.810 --> 34:33.290
Erster Schritt, Auftrennung der Rückkopplung.

34:34.690 --> 34:38.610
Und statt dieser Rückkopplung führen wir eine Zustandsvariante ein für

34:38.610 --> 34:40.170
jede Rückkopplung, die wir aufgehoben haben.

34:40.930 --> 34:43.950
Im zweiten Schritt wollen wir die so erhaltenen Schaltnetze

34:43.950 --> 34:45.050
analysieren.

34:45.670 --> 34:48.090
Konkret für unser Beispiel war das dieses Schaltnetz.

34:48.590 --> 34:50.450
Also, Schaltfunktionen haben sich nicht geändert.

34:51.150 --> 34:54.530
Ich habe den Folgezustand Ü plus genort.

34:55.330 --> 35:02.170
Ich habe die Ausgabe Q als meinen aktuellen Zustand und ich habe die

35:02.170 --> 35:07.150
Ausgabe P die Vernorung von Ü und S.

35:12.840 --> 35:15.800
Dafür betrachte ich hier meine Funktionstabelle.

35:17.880 --> 35:23.640
Ich betrachte meine R und S, meine Eingangsvariablen und meinen

35:23.640 --> 35:29.340
aktuellen Zustand und stelle jetzt die Funktionstabelle auf für Ü

35:29.340 --> 35:31.000
plus, also für meinen Folgezustand.

35:31.720 --> 35:40.620
Dafür kann ich sagen, habe ich ein Nor von R und genort mit Ü und S.

35:42.580 --> 35:56.580
Das heißt, für R oder dieser Term, negiert, ist immer eine... sobald R

35:56.580 --> 35:58.860
1 ist, gibt dieser Ausdruck immer eine 1.

35:59.080 --> 36:00.280
1 negiert ist eine 0.

36:00.680 --> 36:03.840
Das heißt, für diesen unteren Teil kann ich sagen, ist mein

36:03.840 --> 36:04.740
Folgezustand 0.

36:05.980 --> 36:11.840
Ist R 0, hängt es von diesem Term ab, ob hier eine 1 oder eine 0 steht

36:11.840 --> 36:18.220
und dieser Term muss dann eine 0 sein, damit hier eine 1 kommt.

36:20.060 --> 36:25.620
Dieser Term ist aber nur 0, falls Ü oder S, also falls 1 von beiden

36:25.620 --> 36:31.940
eine 1 ist, habe ich hier eine 1, negiert gibt es eine 0.

36:32.860 --> 36:35.460
Das heißt, nur diese drei Terme sind eine 1.

36:37.100 --> 36:37.900
Ja, soweit klar?

36:40.000 --> 36:43.920
Wir können auch die Werte aus dem KV-Diagramm ablesen, aber je nachdem

36:43.920 --> 36:45.500
wie fit man ist, kann es schneller gehen hier.

36:46.880 --> 36:50.640
Dann für Q übertrage ich einfach die gesamte Ü-Spalte.

36:52.280 --> 36:55.280
Also hier bei Ü 0 gibt es 0, Ü 1 gibt es 1 und so weiter.

36:56.520 --> 36:59.760
Und für P habe ich die Vernorung von Ü und S.

37:00.360 --> 37:05.100
Das heißt, Ü oder S, wenn eins von beiden 1 ist, kommt eine 0 raus.

37:05.620 --> 37:07.440
Wenn beide 0 sind, kommt eine 1 raus.

37:08.720 --> 37:09.940
Ü und S-Spalten sind hier.

37:10.020 --> 37:12.120
Das heißt, hier habe ich eine 1 und hier habe ich eine 1.

37:13.080 --> 37:14.780
Und der Rest meiner Funktion ist 0.

37:16.600 --> 37:22.590
So, jetzt habe ich meine Funktionstabelle erstellt und ich will jetzt

37:22.590 --> 37:25.590
stabile und instabile Zustände markieren oder erkennen.

37:27.410 --> 37:28.890
Und wie mache ich das nochmal?

37:31.810 --> 37:36.370
Also sagen wir mal, das ist Zeile 1, 2, 3, 4, 5, 6, 7, 8.

37:40.560 --> 37:42.080
Machen wir es wieder demokratisch.

37:42.980 --> 37:45.160
Zeile 1, stabil, instabil.

37:45.400 --> 37:46.120
Wer ist für stabil?

37:48.340 --> 37:48.780
3.

37:49.520 --> 37:50.340
Wer ist für instabil?

37:51.700 --> 37:52.140
Keiner.

37:57.220 --> 37:58.700
Zustand, Folgezustand.

37:58.960 --> 38:02.100
Wir haben definiert stabile Zustände erkennt man daran, dass der

38:02.100 --> 38:06.760
Zustand unter einer bestimmten Eingabebelegung gleich dem Folgezustand

38:06.760 --> 38:06.980
ist.

38:07.540 --> 38:12.620
Das heißt, wenn ich in einer Zeile habe, Ü ist irgendetwas und Ü plus

38:12.620 --> 38:16.860
ist dasselbe, dann handelt es sich um stabile Zustände.

38:18.400 --> 38:23.520
Das heißt, Zeile 1 ist stabil, Zeile 2 ist stabil, Zeile 3 ändert sich

38:23.520 --> 38:30.960
der Zustand, Zeile 4 ist stabil, Zeile 5 ist stabil, Zeile 6 ändert

38:30.960 --> 38:35.000
sich der Zustand, Zeile 7 ist stabil und Zeile 8 ändert sich auch der

38:35.000 --> 38:35.360
Zustand.

38:35.500 --> 38:39.360
Und bei den Zeilen, wo sich die Zustände ändern, reden wir von

38:39.360 --> 38:42.800
instabilen Zuständen und die können wir jetzt erstmal hier markieren.

38:46.120 --> 38:49.320
Also, detaillierter betrachtet, was heißt das, wenn ich jetzt hier die

38:49.320 --> 38:54.000
Eingangsbelegung RS01 habe, mich im Zustand 1 befinde, dann lande ich

38:54.000 --> 38:54.940
im Zustand 1.

38:57.620 --> 39:00.620
Befinde ich mich auf unserer, nach dieser Implementierung jetzt,

39:00.680 --> 39:07.680
befinde ich mich auf meiner verbotenen Eingabebelegung 1.1 und bin im

39:07.680 --> 39:13.440
Zustand 1, dann wechselt diese Automat in den Zustand 0.

39:15.900 --> 39:18.160
Also nochmal, wir haben ja eigentlich gesagt, die ist ja verboten,

39:19.460 --> 39:22.280
aber hier in diesem Fall würde ich auf die 0 wechseln.

39:23.140 --> 39:26.240
Das heißt, ich bin an dem Zustand 0, meine Eingabebelegung ist immer

39:26.240 --> 39:29.920
noch dieselbe und hier bin ich in einem stabilen Zustand.

39:30.260 --> 39:34.960
Das heißt, die konkrete Implementierung auf diese Art und Weise würde

39:34.960 --> 39:40.640
bewirken, dass bei einer Eingabe von R und S gleich 1 ich im stabilen

39:40.640 --> 39:45.460
Zustand 0 lande und dadurch auch die Ausgabe 0 produziere.

39:46.140 --> 39:51.760
Aber hier haben wir gesagt, Q und P werden in dem Fall 0 und das ist

39:51.760 --> 39:58.100
genau der Grund, weswegen wir diesen Übergang vermeiden wollen.

39:59.200 --> 40:02.560
Wir wollen nicht in Zustand landen, weil dann Q und P auf alle Fälle

40:02.560 --> 40:03.760
nicht mehr komplementär sind.

40:07.990 --> 40:11.590
So, jetzt können wir diese Funktionstabelle umordnen und daraus geben

40:11.590 --> 40:12.830
wir die Erregungsmatrix.

40:13.690 --> 40:22.540
Also Erregungsmatrix hier, wir haben den Zustand Ü mit Folgezustand

40:22.540 --> 40:27.680
müsste es heißen und wir haben hier die Ausgaben P und Q und die

40:27.680 --> 40:28.660
Eingabevariante RS.

40:30.040 --> 40:33.560
Jetzt können wir den gleichen Weg, den wir vorhin gegangen sind,

40:33.560 --> 40:34.280
rückwärts gehen.

40:34.440 --> 40:38.560
Das heißt, wir gehen aus der Funktionstabelle und sagen bei RS gleich

40:38.560 --> 40:44.700
00 zum Beispiel und ich bin im Zustand 0, habe ich den Folgezustand 0

40:44.700 --> 40:50.840
und ich habe P und Q 01 als Ausgabe.

40:51.760 --> 40:55.120
Das mache ich jetzt für alle Zeilen, trage die hier ein und dann kann

40:55.120 --> 40:58.700
ich anschließend meine stabilen Zustände nochmal markieren.

41:00.520 --> 41:05.540
Das entspricht genau diesen stabilen Zuständen, die sich dann hier

41:05.540 --> 41:06.740
umkringelt sind.

41:07.380 --> 41:09.820
Hier ist es ein bisschen einfacher zu sehen, weil wir hier direkt

41:09.820 --> 41:12.900
sagen können, hier ist mein aktueller Zustand und in der Zeile suche

41:12.900 --> 41:16.060
ich einfach meinen aktuellen Zustand und markiere alle Zustände, die

41:16.060 --> 41:17.000
den gleichen Wert haben.

41:17.200 --> 41:17.980
Genauso mit der 1.

41:21.680 --> 41:24.280
Also man sieht es hier ein bisschen einfacher, aber letztendlich ist

41:24.280 --> 41:25.100
es genau dasselbe.

41:26.500 --> 41:28.440
Man muss es vielleicht einfach nur mal gesehen haben.

41:30.400 --> 41:33.060
So, wir haben gesagt, das hier ist die Erregungsmatrix.

41:34.060 --> 41:37.580
Wir haben aber vorhin auch schon eine Erregungsmatrix gesehen, die sah

41:37.580 --> 41:38.640
ein bisschen anders aus.

41:39.380 --> 41:41.920
Die sah so aus.

41:45.610 --> 41:46.530
Jetzt, was ist der Unterschied?

41:51.830 --> 41:55.530
Das Q steht rechts und was heißt das genau, wenn Q rechts steht?

41:59.880 --> 42:01.300
Genau, es ist ein Moorautomat.

42:02.380 --> 42:06.480
Also, hier haben wir einen Moorautomaten, das heißt die Ausgabe hängt

42:06.480 --> 42:07.600
nur vom Zustand ab.

42:08.240 --> 42:12.280
Deswegen kann ich auch meine Ausgabe rechts hinschreiben, weil der

42:12.280 --> 42:16.600
Zustand ist ja in jeder Zeile konstant und die Ausgabe ist dann nur

42:16.600 --> 42:18.320
abhängig von der Zeile, in der ich mich befinde.

42:19.260 --> 42:24.040
Links habe ich einen Milliautomaten, das heißt meine Ausgabe hängt vom

42:24.040 --> 42:26.780
Zustand und von den Eingabevariablen ab.

42:27.220 --> 42:34.680
Deswegen muss ich hier auch die Ausgaben an die jeweiligen Übergänge

42:34.680 --> 42:39.320
machen, also in den Zustand plus Übergang eintragen.

42:44.380 --> 42:50.360
Moor, Milli, haben wir schon gesagt, kann man begründen durch den

42:50.360 --> 42:54.420
hinzugefügten Ausgang P, dass der das erzeugt, aber letztendlich hängt

42:54.420 --> 42:56.760
es natürlich damit zusammen, dass wir hier tatsächlich auch

42:56.760 --> 42:59.640
verschiedene Ausgaben erzeugen und die verschiedenen Ausgaben sind

42:59.640 --> 43:03.400
halt hier nur verschieden, weil ich hier zusätzlich das P habe und

43:03.400 --> 43:08.100
dieses P, wie man sieht, also Q alleine würde sich hier nicht

43:08.100 --> 43:10.840
unterscheiden, wir hätten hier immer 0, 0, 0, 0, das heißt ich könnte

43:10.840 --> 43:11.760
genauso wie hier

43:14.800 --> 43:16.200
ein Moor-Automaten nehmen.

43:16.480 --> 43:21.700
Da ich das aber hier, das P nochmal dazu kommt, habe ich

43:21.700 --> 43:23.160
Unterscheidungen in meiner Ausgabe.

43:23.360 --> 43:25.340
Deswegen muss ich hier auch einen Milliautomaten nehmen.

43:30.040 --> 43:32.060
Naturgemäß gibt es hier keine Freistellungen, das heißt wir haben

43:32.060 --> 43:34.880
keine Down-Casts mehr, weil wir hier von der Implementierung

43:34.880 --> 43:38.220
ausgegangen sind und aus der Implementierung die Funktionstabelle bzw.

43:38.460 --> 43:39.920
die Erregungsmatrix erstellt haben.

43:42.280 --> 43:45.540
Der letzte Schritt wäre, dass man diese symbolischen Zustände nochmal

43:45.540 --> 43:49.800
zurücknimmt, das heißt man geht wieder zurück auf die, Entschuldigung,

43:50.020 --> 43:52.000
dass wir die symbolischen Zustände wieder einführen, das heißt man

43:52.000 --> 43:56.260
nimmt diese Zustandscodierung wieder zurück und die Flussmatrix des

43:56.260 --> 43:58.780
analysierten Asynchron-Schaltwerks aufstellt.

43:58.840 --> 44:00.960
In unserem Beispiel können wir uns ersparen, weil wir tatsächlich nur

44:00.960 --> 44:04.760
eine Zustandsvariable haben und da ändert sich hier kaum was.

44:07.120 --> 44:12.520
Jetzt betrachten wir nochmal diese verbotene Eingabebelegung RS gleich

44:12.520 --> 44:16.220
1,1 und schauen uns an, was da genau passiert.

44:18.040 --> 44:23.000
Also, wir haben das Sollverhalten laut Erregungsmatrix, die sieht so

44:23.000 --> 44:31.660
aus, haben wir unsere verbotene Eingabebelegung,

44:38.090 --> 44:44.690
also wo sind wir, Eingabebelegung hier, 1,1 und gehen wir mal davon

44:44.690 --> 44:54.090
aus, dass wir im Zustand 1 sind, dann landen wir vom Zustand 1 in den

44:54.090 --> 44:59.250
Zustand 0 mit der Ausgabe 1,0 und im Zustand 0 stabilisieren wir uns,

45:00.090 --> 45:02.610
sind wir schon im Zustand 0, bleiben wir natürlich auch im Zustand 0,

45:02.710 --> 45:11.550
das heißt, egal was mein vorheriger Zustand ist, ich lande immer in

45:11.550 --> 45:13.730
meinem stabilen Zustand 0 mit der Ausgabe 0,0.

45:14.890 --> 45:22.310
Wenn jetzt die Eingabe auf RS 0,0 wechselt, dann haben wir per

45:22.310 --> 45:28.970
Definition gesagt, RS gleich 0,0 bedeutet Zustand halten und Zustand

45:28.970 --> 45:34.090
halten heißt in dem Fall im Zustand 0 bleiben, aber man sollte die

45:34.090 --> 45:35.550
Ausgabe 0,1 haben.

45:36.350 --> 45:40.110
Also ich bin im Zustand 0, habe 0,0 und wechsel dann auf die 0,1.

45:41.550 --> 45:49.890
Das heißt, für diesen Fall hier sind wir zwar im stabilen Zustand 0

45:49.890 --> 45:56.870
mit einer falschen Ausgabe, wechsle ich aber auf meine valide Eingabe

45:56.870 --> 46:06.330
Variable in Kombination 0,0, dann bleibt der Automat im Zustand 0,

46:06.470 --> 46:09.090
produziert dann aber wieder eine valide Ausgabe von 0,1.

46:09.270 --> 46:12.890
Das heißt, P und Q sind wieder komplementär, meine Ausgabe ist 0 und

46:12.890 --> 46:14.210
der Komplementärausgang ist 1.

46:17.740 --> 46:20.720
So, klingt ja alles ganz gut.

46:21.780 --> 46:25.620
Wenn wir uns das Ganze jetzt nochmal im KV-Diagramm betrachten, ist

46:25.620 --> 46:28.200
trotzdem dieser Übergang ein bisschen problematisch.

46:29.260 --> 46:30.200
Und zwar, was passiert?

46:31.020 --> 46:35.300
Wir haben gesagt, wir sind bei RS gleich 1, das heißt, wir sind in

46:35.300 --> 46:39.860
diesem Feld und wir wechseln auf 0,0, das ist dieses Feld.

46:43.240 --> 46:49.400
Ü bleibt konstant, das heißt, wir sind auf dieser Nicht-Ü-Spalten.

46:49.920 --> 46:52.300
Das einzige, was sich ändert, sind jetzt R und S.

46:53.620 --> 46:56.560
Und wir haben ja gesagt, die ändern sich naturgemäß, nicht

46:56.560 --> 47:00.140
gleichzeitig, sondern wir haben hier eine Variable, die sich schneller

47:00.140 --> 47:01.040
ändert als die andere.

47:01.900 --> 47:03.620
Und für den Fall, dass sich hier z.B.

47:09.060 --> 47:15.480
R zuerst ändert, kommen wir im KV-Diagramm auf diese 1 und kommen dann

47:15.480 --> 47:16.960
mit der Änderung von S auf die 0.

47:18.140 --> 47:22.740
Und wer in der Übung jetzt letzte Woche aufgepasst hat, der weiß, wie

47:22.740 --> 47:23.600
man das Ganze nennt.

47:27.570 --> 47:28.290
Ein Hazard.

47:28.850 --> 47:30.230
Kannst auch genau sagen, was für ein Hazard?

47:35.830 --> 47:37.350
Ein statischer Hazard, genau.

47:37.990 --> 47:39.270
Funktions- oder Struktur-Hazard?

47:42.830 --> 47:43.370
Richtig.

47:43.770 --> 47:45.950
Also, wir haben einen statischen Null-Funktions-Hazard.

47:53.790 --> 47:58.330
Das heißt, wir ändern die Eingabe-Variablen einmal, eine Ausgabe

47:58.330 --> 47:59.990
ändert sich aber mindestens zweimal.

48:00.570 --> 48:03.750
Das heißt, wir springen statt konstant auf der 0 zu bleiben, wechselt

48:03.750 --> 48:05.230
man hier kurzfristig auf die 1.

48:06.310 --> 48:11.370
Und hier habe ich natürlich ein Problem, das ist das, was ich will.

48:12.510 --> 48:16.730
Der Hazard ist da und dieser Funktions-Hazard soll nicht auftreten.

48:17.490 --> 48:24.830
Das heißt, wir müssen unsere Verzögerungszeiten dementsprechend

48:24.830 --> 48:26.310
wählen, dass dieser Fehler nicht auftritt.

48:27.750 --> 48:29.450
Wie genau tritt jetzt aber dieser Fehler auf?

48:29.610 --> 48:30.710
Also, hier ist ein bisschen tricky.

48:32.450 --> 48:34.370
Schauen wir mal, ob wir das ein bisschen detaillierter erklären können

48:34.370 --> 48:34.590
hier.

48:37.150 --> 48:43.130
Also, ich habe eine Ursprungsbelegung hier mit R1 und S1 und ich

48:43.130 --> 48:43.890
wechsle auf 0.

48:47.630 --> 48:50.090
Also meine einmalige Änderung beider Variablen.

48:52.310 --> 48:53.210
Was passiert?

48:58.620 --> 49:00.380
Das sehen wir hier im Schaltnetz.

49:00.500 --> 49:08.440
Ich habe meinen aktuellen Zustand, der ist 0.

49:13.820 --> 49:15.640
Bekommt S als Eingabe.

49:16.440 --> 49:18.280
S war vorher 1, wird hier zu 0.

49:19.480 --> 49:23.140
Das heißt 0 oder 0 sind 0, negiert ist 1.

49:23.940 --> 49:29.120
Nach T1-Zeit kommt hier das Ergebnis dieser Operation an.

49:29.940 --> 49:35.200
Wenn ich meinen Ü-Teil angucke, also meinen Folgezustand angucke, habe

49:35.200 --> 49:37.500
ich hier R und das Ergebnis von da oben.

49:38.080 --> 49:41.320
Das Ergebnis von oben war eigentlich P. Das heißt, ich kann hier P

49:41.320 --> 49:41.900
betrachten.

49:43.380 --> 49:46.600
P war auch 0 ursprünglich.

49:47.300 --> 49:48.660
Also, wir fangen jetzt erstmal unten an.

49:49.240 --> 49:52.820
Wir wollen ja, dass zuerst R wechselt.

49:52.860 --> 49:55.800
Das heißt, in unserem Fall ist Tau2 kleiner als Tau1.

49:57.540 --> 50:04.380
Also nach Tau2-Zeit kommt das Ergebnis von dieser und dieser

50:04.380 --> 50:14.300
Vernorgung, also von 0 und 0 genort, also geodert gibt 0, negiert gibt

50:14.300 --> 50:16.580
1, kommt hier bei Q an.

50:17.880 --> 50:27.000
Das heißt, nach T2-Zeit gibt es hier einen Anstieg in Q.

50:33.780 --> 50:35.260
Das ist jetzt diese 1 hier quasi.

50:41.090 --> 50:42.890
Was wird jetzt hier durch bewirkt?

50:42.890 --> 50:47.470
Ich habe ja nochmal die andere Condition hier, dass sich nach T1-Zeit

50:47.470 --> 50:48.850
hier die Eingabe ändert.

50:49.270 --> 50:54.290
Ich habe S und Ü, also 0 und 0.

50:55.670 --> 50:59.750
Das heißt, 0 oder 0 gibt 0, negiert gibt 1.

50:59.970 --> 51:04.170
Das heißt, hier kommt die 1 an P raus, und zwar nach T1-Zeit.

51:04.670 --> 51:05.650
Machen wir das mal blau.

51:08.800 --> 51:12.220
Also nach T1 wechselt sich hier die Flanke nach oben.

51:17.150 --> 51:24.490
Jetzt bewirkt aber dieser Anstieg hier, bewirkt, dass wir nochmal, Ü

51:24.490 --> 51:30.510
wird ja rückgeführt an diesen Eingang, bewirkt, dass wir hier nochmal

51:30.510 --> 51:31.590
eine Änderung haben.

51:32.830 --> 51:36.090
Das heißt, Ü ist jetzt auf einmal 1.

51:36.470 --> 51:40.190
Ich habe hier eine 1 und ich habe S, was konstant auf 0 ist.

51:40.350 --> 51:43.470
Ich habe 1 oder 0, ist eine 1, negiert gibt 0.

51:44.210 --> 51:46.610
Das heißt, nochmal nach T1-Zeit kommt hier eine 0.

51:49.590 --> 51:54.710
Also rot, das ist die zusätzliche T1 hier, und ich bekomme hier

51:54.710 --> 51:55.990
nochmal einen Wechsel auf 0.

51:59.830 --> 52:01.630
Vielleicht ein bisschen anders malen sollen.

52:03.550 --> 52:10.070
Machen wir das mal T1 rot, T2 blau.

52:12.370 --> 52:15.050
So, jetzt habe ich hier T1 gehabt.

52:16.970 --> 52:26.380
Ich habe hier eine Änderung hervorgerufen an P. Und jetzt nach T2

52:26.380 --> 52:29.140
-Zeit, also hier habe ich an P eine Änderung.

52:29.300 --> 52:35.200
Das heißt, ich muss dann hier die 1 nehmen von P und die 0 von R.

52:36.780 --> 52:39.780
Ist 1 oder 0 gibt 1, negiert gibt 0.

52:42.180 --> 52:47.140
Das heißt, nach T2-Zeit hier, V2-Zeit hier,

52:53.190 --> 52:55.590
wirke ich hier wieder einen Abfall an Q.

52:59.980 --> 53:02.100
Gleichzeitig wechselt aber auch P auf 0.

53:05.390 --> 53:06.890
So, was ist jetzt hier passiert?

53:12.430 --> 53:19.490
Unsere Erwartungshaltung war die, dass ich die Ausgabe 0 habe, also

53:19.490 --> 53:25.450
dass Q 0 ist, und dass ich von Q 0 auf Q 0 wechsle, also auf 0 bleibe.

53:26.030 --> 53:29.990
Betrachten wir uns aber jetzt, Q ist durch diesen Hazardfehler

53:29.990 --> 53:32.070
kurzfristig Q auf 1 gesprungen.

53:33.130 --> 53:38.390
Und dieses Springen auf 1 wiederum hat dafür gesorgt, dass P, welches

53:38.390 --> 53:42.950
ja komplementär zu Q ist, anstatt ab hier konstant auf 1 zu bleiben,

53:43.830 --> 53:44.710
abfällt auf die 0.

53:46.570 --> 53:50.430
Und das wiederum verursacht dann im nächsten Schritt, weil ich dann

53:50.430 --> 53:53.450
hier wieder genau den gleichen Anfangszustand habe, bewirkt wiederum,

53:53.510 --> 53:57.750
dass dann Q später nochmal eine Auftaktflanke bekommt, also nach 1

53:57.750 --> 54:01.490
wechselt, was wiederum dafür sorgt, dass P später wieder abfällt auf

54:01.490 --> 54:01.810
die 0.

54:02.770 --> 54:09.320
Das heißt, ich bekomme hier auf einmal eine Oszillation rein.

54:12.080 --> 54:16.360
Ü wird kurzfristig 1, bewirkt über die Rückkopplung, dass P

54:16.360 --> 54:20.000
kurzfristig zu 0 wird, dies zwingt wiederum Ü auf die 1 und so weiter.

54:20.740 --> 54:24.840
Hazardfehler pflanzt sich fort und wir haben hier ein Springverhalten

54:24.840 --> 54:25.480
des Flipflops.

54:28.740 --> 54:47.830
Also auch wenn wir gesagt haben, dass wir von diesem Zustand hier auf

54:47.830 --> 54:55.530
einen stabilen Zustand wechseln, also wir haben gesagt, wir wechseln

54:55.530 --> 54:59.150
mit der 1.1 auf die 0, bleiben hier in einem stabilen Zustand, was wir

54:59.150 --> 55:03.190
eigentlich nicht wollen, aber mit einer zusätzlichen Belegung von R1.0

55:03.190 --> 55:06.210
.0 würde ich ja hier auf einen stabilen Zustand wechseln.

55:06.310 --> 55:10.370
Das heißt, ich könnte direkt danach einen 0.0 anlegen und mein Problem

55:10.370 --> 55:12.350
wäre ja wieder gelöst.

55:13.870 --> 55:16.750
Selbst wenn wir das zulassen würden und sagen, eigentlich

55:16.750 --> 55:19.590
schaltungstechnisch sollte das funktionieren, passiert genau das

55:19.590 --> 55:23.050
Gegenteil und zwar schwingt sich das ganze System auf und wir haben

55:23.050 --> 55:24.630
keinen stabilen Zustand mehr.

55:25.590 --> 55:28.610
Das heißt, auch hier muss man natürlich extra noch mal darauf

55:28.610 --> 55:32.310
beharren, dass tatsächlich P und Q niemals 1 sein dürfen.

55:36.160 --> 55:40.040
Das heißt, wir führen jetzt die Nebenbedingungen ein und wir sagen, R

55:40.040 --> 55:49.080
und S ist immer 0 zu sein.

55:49.200 --> 55:53.760
Das heißt, unsere Eingangsbelegung 0.0 mithalten fällt jetzt hier auch

55:53.760 --> 55:56.480
weg, weil diese Nebenbedingung dann nicht mehr erfüllt ist.

55:58.400 --> 56:02.400
Und diese Nebenbedingungen muss man bei einem asynchronen RS-Flip-Flop

56:02.400 --> 56:09.800
immer einhalten, um genau diesen Hasard-Fehler zu vermeiden, der dafür

56:09.800 --> 56:12.040
sorgt, dass das System sich aufschwingt und oszilliert.

56:15.400 --> 56:17.840
So weit, so gut.

56:19.580 --> 56:22.140
Was wir jetzt machen sind, wir betrachten jetzt noch mal ein paar

56:22.140 --> 56:23.140
verschiedene Flip-Flops.

56:23.960 --> 56:26.440
Was ich vergessen habe, anfangs zu erwähnen, ist, dass wir heute noch

56:26.440 --> 56:27.440
eine Evaluierung machen.

56:28.260 --> 56:30.660
Das heißt, wir haben jetzt noch 15 Minuten, dann kommt der Kollege

56:30.660 --> 56:34.200
vorbei und evaluiert wird dann nur die Vorlesung.

56:34.320 --> 56:37.080
Wir hatten ja letzten Mittwoch schon die Evaluierung der Übung, wurde

56:37.080 --> 56:41.140
nur die Übung bewertet und dieses Mal bitte nur die Vorlesung

56:41.140 --> 56:43.540
bewerten.

56:44.100 --> 56:45.560
Kommen wir aber später nochmal darauf zurück.

56:46.320 --> 56:48.480
Also, wir betrachten noch mal ein paar Flip-Flops.

56:52.600 --> 57:01.100
Wir haben gesagt, asynchrone Schaltwerke haben große Probleme, sind

57:01.100 --> 57:05.760
sehr empfindlich und wir wollen jetzt dieses Problem lösen, indem wir

57:05.760 --> 57:07.160
einen zentralen Takt einführen.

57:08.120 --> 57:10.840
Dann ist das Ganze natürlich nicht mehr asynchron, sondern wir reden

57:10.840 --> 57:16.080
von synchronen Schaltwerken und der Vorteil hier ist natürlich, dass

57:16.080 --> 57:19.480
sich alle Wettläufe erstmal stabilisieren, bevor der nächste Zustand

57:19.480 --> 57:20.140
eingenommen wird.

57:20.640 --> 57:24.820
Das heißt, ich brauche diese Unterscheidungen, was inzwischendrin

57:24.820 --> 57:27.520
passiert, zwischen den Übergängen passiert, brauche ich nicht mehr

57:27.520 --> 57:31.180
durchzuführen, vorausgesetzt natürlich, dass meine Eingabevariablen

57:31.180 --> 57:34.100
sich vor dem Takt stabilisiert haben und sich danach nicht mehr

57:34.100 --> 57:34.280
ändern.

57:38.640 --> 57:43.580
Also genau für sowas verwenden wir Flip-Flops und die verschiedenen

57:43.580 --> 57:45.680
Flip -Flop-Typen, wollen wir jetzt kurz vorstellen.

57:47.000 --> 57:48.460
Das RS-Flip-Flop, das kennen wir ja schon.

57:49.040 --> 57:54.060
Wir haben gesagt, RS-Funktion hat die Funktion, dass wir den Speicher

57:54.060 --> 57:58.480
setzen können, wir können ihn rücksetzen und wir können den Wert

57:58.480 --> 57:59.580
halten.

58:02.080 --> 58:11.680
Wir haben die Schaltfunktion vorgestellt und wir haben das

58:11.680 --> 58:12.820
Schaltsymbol vorgestellt.

58:13.920 --> 58:16.020
Also Schaltsymbol sieht jetzt ein bisschen anders aus.

58:16.440 --> 58:18.660
Wir haben vorher P und Q gehabt.

58:19.960 --> 58:22.500
Jetzt reden wir von Q und Nicht-Q.

58:23.880 --> 58:28.660
Unsere Eingänge bleiben gleich, S und R und wir beschriften jeweils

58:28.660 --> 58:33.100
die Eingänge mit einem S und R, damit auch klar ist, was für Eingänge

58:33.100 --> 58:33.740
es sich handelt.

58:36.460 --> 58:38.240
Die Funktion soll, glaube ich, soweit klar sein.

58:38.340 --> 58:39.900
Ich glaube, das brauchen wir nicht nochmal wiederholen.

58:40.200 --> 58:44.660
S soll setzen, R resetten und R und S gleichzeitig eins ist verboten

58:44.660 --> 58:48.540
und statt P benutzen wir Nicht-Q.

58:51.200 --> 58:54.800
Als nächstes haben wir gesagt, wir wollen ja synchron das Ganze jetzt

58:54.800 --> 58:55.160
verwenden.

58:55.340 --> 58:58.700
Das heißt, wie können wir dafür sorgen, dass dieses RS-Flip-Flop

58:58.700 --> 58:59.660
synchron arbeitet?

59:02.020 --> 59:06.560
Wir erreichen das, indem wir die Eingabesignale nochmal verunden.

59:07.400 --> 59:10.720
Mit einem Takt werden wir zusätzlich nochmal einführen.

59:12.400 --> 59:16.260
Das so entstandene RS-Flip-Flop nennt sich RS-Latch.

59:16.540 --> 59:17.360
Das seht ihr hier rechts.

59:18.160 --> 59:25.500
Und wir haben hier jetzt nochmal zusätzlich den Eingang T für unsere

59:25.500 --> 59:27.000
Clock, also Takt oder Clock.

59:27.680 --> 59:30.300
Und die Beschriftungen sehen jetzt auch wieder ein bisschen anders

59:30.300 --> 59:30.660
aus.

59:31.120 --> 59:36.480
Wir haben hier statt S und R haben wir 1S, 1R und für den Takt haben

59:36.480 --> 59:37.360
wir ein C1.

59:38.780 --> 59:40.040
Was bedeutet das genau?

59:42.040 --> 59:44.040
Diese 1 ist einfach nur eine Durchnummerierung.

59:44.760 --> 59:51.160
Und zwar will man wissen, welche Eingabe-Variablen zu welchen anderen

59:51.160 --> 59:55.340
Eingabe -Variablen gehören, also welche eine Funktion erfüllen, die

59:55.340 --> 59:58.560
zusammengehört.

59:59.700 --> 01:00:03.360
Und die Position der 1 sagt uns jetzt natürlich aus, ob diese

01:00:03.360 --> 01:00:14.320
Abhängigkeit von diesem Eingang abhängt oder ob die Abhängigkeit

01:00:14.320 --> 01:00:15.020
vorausgeht.

01:00:15.700 --> 01:00:20.100
Also ob jetzt zum Beispiel C von S abhängt oder S von C hängt davon

01:00:20.100 --> 01:00:21.660
ab, wo sich die 1 befindet.

01:00:22.300 --> 01:00:24.320
Das heißt, mit der 1 habe ich erstmal markiert, welche Eingänge

01:00:24.320 --> 01:00:25.080
zusammengehören.

01:00:25.660 --> 01:00:30.820
C1 bedeutet, C ist mein Taktgeber, er beeinflusst andere Eingänge und

01:00:30.820 --> 01:00:34.780
1S und 1R bedeutet, dass die von dem anderen Eingang abhängen, der mit

01:00:34.780 --> 01:00:35.460
der 1 endet.

01:00:44.530 --> 01:00:47.770
So, wir betrachten jetzt eine Ansteuertabelle des RS-Flipflops.

01:00:49.570 --> 01:00:52.630
Also wir sind jetzt bei synchronen RS-Flipflops, wollen jetzt aber

01:00:52.630 --> 01:00:56.050
noch mal den anderen Weg gehen.

01:00:56.130 --> 01:01:01.070
Wir haben bisher immer gesagt, bei bestimmten Eingabe-Variablen, was

01:01:01.070 --> 01:01:02.290
passiert im RS-Flipflop.

01:01:03.530 --> 01:01:05.410
Jetzt wollen wir den anderen Weg gehen,

01:01:10.230 --> 01:01:12.810
beziehungsweise wir schauen uns erstmal die Ansteuertabelle nochmal

01:01:12.810 --> 01:01:13.110
an.

01:01:13.710 --> 01:01:15.630
Ich glaube, das ist auch Wiederholung, das sollte auch mittlerweile

01:01:15.630 --> 01:01:16.190
klar sein.

01:01:16.630 --> 01:01:18.490
Speichern, zurücksetzen, hatten wir vorhin schon.

01:01:21.620 --> 01:01:30.520
Setzen mit RS01, rücksetzen mit RS10 und speichern, setzen mit 01001.

01:01:32.480 --> 01:01:37.220
So, was jetzt hier neu ist, ist, dass wir hier diese Eingabebelegung

01:01:37.220 --> 01:01:41.820
zusammenfassen können, von einem 0010 auf ein Don't Care 0 und hier

01:01:41.820 --> 01:01:44.060
von einem 0001 auf ein 0 Don't Care.

01:01:45.800 --> 01:01:48.540
Schauen wir uns unsere Funktionstabelle an, sieht es so aus, dass wir

01:01:48.540 --> 01:01:56.120
sagen, Zustand 0 folgt Zustand 0 mit dieser Eingabebelegung und hier

01:01:56.120 --> 01:02:00.620
die Rotation hat sich auch ein bisschen geändert, statt Ü plus und Ü

01:02:00.620 --> 01:02:05.980
oder Q plus und Q nehmen wir jetzt Qt für einen bestimmten Zeitpunkt

01:02:05.980 --> 01:02:11.440
und Qt plus 1 für den nächsten Zeitpunkt oder Zeitschritt.

01:02:12.340 --> 01:02:17.220
Das heißt, immer wenn ich eine Taktflanke habe, habe ich einen

01:02:17.220 --> 01:02:23.620
bestimmten Abschnitt und diesen Abschnitt kann ich mit einem

01:02:23.620 --> 01:02:26.540
bestimmten Zeitindex versehen und dieser Zeitindex wird dann hier

01:02:26.540 --> 01:02:28.620
dargestellt durch dieses T oder T plus 1.

01:02:31.720 --> 01:02:41.500
Für 1,1 habe ich jetzt 0 Don't Care, also ich bin im Zustand 1 und ich

01:02:41.500 --> 01:02:44.100
bleibe im Zustand 1, habe ich hier die Belegung Don't Care.

01:02:44.560 --> 01:02:48.340
Wenn ich im Zustand 1 gehe auf den Zustand 0, habe ich hier die 1,0.

01:02:49.200 --> 01:02:52.820
Wenn ich in 0,0 und bleibe im Zustand 0, habe ich die Don't Care 0 und

01:02:52.820 --> 01:02:55.760
wenn ich in 0 gehe auf den Zustand 1, habe ich hier die 0,1.

01:02:57.380 --> 01:03:02.160
Das nennt sich die Ansteuertabelle und wir betrachten jetzt die

01:03:02.160 --> 01:03:04.120
Ansteuertabelle des asynchronen Flipflops.

01:03:06.560 --> 01:03:08.360
Und wie gesagt, wir gehen jetzt den anderen Weg.

01:03:08.420 --> 01:03:11.260
Wir haben vorhin immer betrachtet, was sind meine Eingabevariablen und

01:03:11.260 --> 01:03:13.920
was sind die daraus resultierenden Ausgaben und Folgezustände.

01:03:14.600 --> 01:03:19.260
Hier betrachten wir jetzt den Zustand und den Folgezustand und wollen

01:03:19.260 --> 01:03:24.260
wissen, wie muss ich meine Eingabevariablen ändern, dass genau dieses

01:03:24.260 --> 01:03:25.620
Verhalten an den Tag gelegt wird.

01:03:26.000 --> 01:03:30.300
Das ist eine übliche Vorgehensweise beim Entwurf von synchronen

01:03:30.300 --> 01:03:33.700
Schaltwerken, werden wir aber erst im nächsten Kapitel nochmal

01:03:33.700 --> 01:03:34.640
detaillierter betrachten.

01:03:35.060 --> 01:03:37.760
Hier wollen wir tatsächlich nochmal erklären, wieso das mit diesem

01:03:37.760 --> 01:03:42.180
Flipflop funktioniert und wie man die Basics quasi, wie man da

01:03:42.180 --> 01:03:42.520
vorgeht.

01:03:44.600 --> 01:03:48.240
So, dürfen keine unerlaubten Eingangsbelegungen auftreten.

01:03:48.600 --> 01:03:51.460
Das ist heute auch klar, glaube ich, RS-Flipflop.

01:03:53.120 --> 01:03:56.020
Das nächste Flipflop, das wir betrachten wollen, ist ein D-Flipflop.

01:03:58.660 --> 01:04:03.080
Oder wenn wir es taktgesteuert betrachten, ein D-Latch.

01:04:05.800 --> 01:04:07.920
Und wir haben ja gesagt, bei einem RS-Flipflop gibt es die

01:04:07.920 --> 01:04:12.220
Problematik, dass wir gesagt haben, asynchrones RS-Flipflop darf nur

01:04:12.220 --> 01:04:16.140
unter Nebenbedingungen betrieben werden, dass wir hier R und S gleich

01:04:16.140 --> 01:04:16.620
Null ist.

01:04:20.770 --> 01:04:24.050
Übrigens auch die Haltefunktion habe ich vorhin falsch ausgedrückt.

01:04:25.250 --> 01:04:28.170
R und S ist ja immer Null, wenn beide nicht eins sind.

01:04:28.390 --> 01:04:35.090
Das heißt, diese Nebenbedingung verbietet uns nur, die 1,1 anzulegen

01:04:35.090 --> 01:04:35.470
auf RS.

01:04:35.990 --> 01:04:39.650
Also 0,0 ist hier auch erlaubt, weil in der Funktionsbeschreibung

01:04:39.650 --> 01:04:42.450
vorhin die, dass wir gesagt haben, bei 0,0 soll der Inhalt gehalten

01:04:42.450 --> 01:04:42.730
werden.

01:04:43.930 --> 01:04:50.050
Also, Taktgeber R und S kennen wir schon.

01:04:52.290 --> 01:04:58.010
Wenn wir jetzt D bejaht zum S-Eingang und negiert zum R-Eingang

01:04:58.010 --> 01:05:04.170
führen, dann haben wir dieses Problem, dass wir die 1,1 nicht anlegen

01:05:04.170 --> 01:05:06.670
dürfen an das RS-Flipflop, haben wir übergangen.

01:05:08.090 --> 01:05:12.070
Die Eingangsvariable, die ich auf das Flipflop gebe, ist immer positiv

01:05:12.070 --> 01:05:16.170
am S-Eingang und negativ am R-Eingang, also negiert.

01:05:18.190 --> 01:05:22.350
Und damit ändere ich die Funktion des Flipflops natürlich ein

01:05:22.350 --> 01:05:25.630
bisschen, aber ich muss mich nicht mehr darum kümmern, dass diese

01:05:25.630 --> 01:05:28.130
verbotene Eingangsbelegung anliegt.

01:05:30.190 --> 01:05:36.710
Und diesen Eingang nennen wir mal D, ist tatsächlich genau die

01:05:36.710 --> 01:05:41.690
Funktion eines D-Flipflops und dadurch, dass wir hier synchron sind,

01:05:41.850 --> 01:05:43.110
nennen wir das Ganze ein D-Latch.

01:05:44.590 --> 01:05:52.310
Auch hier Takt mit C1 und wir beeinflussen natürlich den Eingang D mit

01:05:52.310 --> 01:05:52.810
1D.

01:05:54.650 --> 01:05:58.270
Was ist jetzt die Funktion von diesem D-Latch?

01:05:59.790 --> 01:06:01.550
Dafür schauen wir uns die Funktionstabelle an.

01:06:02.990 --> 01:06:07.610
Wir haben gesagt, D ist quasi direkt angeschlossen an den S-Eingang

01:06:07.610 --> 01:06:08.610
eines RS-Flipflops.

01:06:08.930 --> 01:06:13.710
Das heißt, mein Null wird auf alle Fälle aus einem Anfangszustand

01:06:13.710 --> 01:06:14.070
Null.

01:06:14.570 --> 01:06:21.290
Bleibe ich im Folgezustand Null, meinem Anfangszustand von 1 setze ich

01:06:21.290 --> 01:06:21.670
zurück.

01:06:24.970 --> 01:06:28.250
Ich lege eine Null auf mein Set bzw.

01:06:28.410 --> 01:06:29.870
eine 1 auf mein Reset.

01:06:30.590 --> 01:06:33.810
Das heißt, egal was ich mache, ich lande im Folgezustand Null.

01:06:35.410 --> 01:06:39.090
Habe ich eine Null auf mein D gelegt, habe ich auch gleichzeitig eine

01:06:39.090 --> 01:06:43.810
1 auf meinem Set und eine Null auf meinem Reset-Eingang.

01:06:44.170 --> 01:06:47.070
Das heißt, ich lande auf alle Fälle im Folgezustand 1.

01:06:48.670 --> 01:06:51.850
Vom Verhalten her können wir jetzt sagen, bei einem D-Flipflop, das,

01:06:51.970 --> 01:06:57.750
was ich am Eingang D anlege, das Datum, das ich anlege an meinem

01:06:57.750 --> 01:06:59.670
Eingang, wird immer gespeichert.

01:07:04.580 --> 01:07:08.220
Die Ansteuertabelle können wir leicht folgern, indem wir einfach ein

01:07:08.220 --> 01:07:09.100
paar Zeilen vertauschen.

01:07:10.740 --> 01:07:15.500
Das heißt, wir ziehen erstmal die Spalte nach rechts mit D und ordnen

01:07:15.500 --> 01:07:16.600
dann hier nochmal ein bisschen um.

01:07:16.800 --> 01:07:21.300
Das heißt, wir kommen hier von Null Null auf Null, von Null Eins auf

01:07:21.300 --> 01:07:21.760
Eins.

01:07:27.900 --> 01:07:36.940
Von Eins Null auf Null und von Eins Eins auf Eins.

01:07:38.000 --> 01:07:40.760
Das heißt, hier haben wir nur Zeilen getauscht und einmal die Spalte

01:07:40.760 --> 01:07:44.180
von D nach rechts genommen und wir bekommen dann hier aus der

01:07:44.180 --> 01:07:46.000
Funktionstabelle direkt die Ansteuertabelle.

01:07:50.020 --> 01:07:53.920
Das Schaltsymbol sieht so aus, hatten wir vorhin auch schon.

01:07:55.400 --> 01:07:59.880
Und hier eine kleine Betrachtung, was passiert genau beim D-Flipflop.

01:08:00.420 --> 01:08:02.140
Dafür schauen wir uns den Takt an.

01:08:02.580 --> 01:08:08.660
Angenommen, das wäre ein Takt, der hier anliegt und wir wissen ja,

01:08:10.220 --> 01:08:12.300
dass der Eingang und der Takt verundet sind.

01:08:13.060 --> 01:08:18.500
Das heißt, für diese gelben Bereiche ist der Eingang meines D

01:08:18.500 --> 01:08:22.460
-Flipflops quasi deaktiviert.

01:08:26.980 --> 01:08:32.100
Angenommen, das Signal, was ich am D-Eingang anlege, ist genau dieses

01:08:32.100 --> 01:08:32.360
hier.

01:08:34.160 --> 01:08:37.380
Dann betrachte ich die Ausgabe von meinem D-Flipflop und die sieht

01:08:37.380 --> 01:08:38.400
dann genau so aus.

01:08:39.260 --> 01:08:46.600
Und zwar wird für den Zeitraum, bei dem sich die Eingabe verändert,

01:08:47.200 --> 01:08:50.680
bei dem der Takt oben ist, wird die sich verändernde Eingabe

01:08:50.680 --> 01:08:52.600
übernommen, wird gespeichert.

01:08:54.540 --> 01:09:01.960
Und für die Bereiche, wo der Takt auf Null ist, werden sämtliche

01:09:01.960 --> 01:09:03.120
Eingaben ignoriert.

01:09:04.160 --> 01:09:07.540
Und mein D-Flipflop bleibt dann genau da, wo er vorher auch schon war.

01:09:08.040 --> 01:09:09.600
Das ist nicht immer das, was man will.

01:09:10.260 --> 01:09:13.560
Letztendlich könnte man ja nämlich hier, wird ja nicht wirklich viel

01:09:13.560 --> 01:09:14.260
gespeichert.

01:09:14.580 --> 01:09:19.360
Ich übernehme einfach nur das Datum, was vorne anliegt, zu dem

01:09:19.360 --> 01:09:21.040
gesamten Bereich meines Taktes.

01:09:21.240 --> 01:09:25.200
Was ich eigentlich will, ist immer, deswegen heißt es ja auch

01:09:25.200 --> 01:09:28.060
Taktgeber, dass ich an ganz bestimmten Positionen, an ganz bestimmten

01:09:28.060 --> 01:09:32.300
Zeitintervallen das Datum übernehme in meinen Flipflop, das anliegende

01:09:32.300 --> 01:09:36.220
Datum speichere und solange ich speichere, bis der nächste Zeitpunkt

01:09:36.220 --> 01:09:36.820
eintrifft.

01:09:38.080 --> 01:09:41.460
Hier habe ich das Problem, dass ich hier einen Taktgeber habe, aber

01:09:41.460 --> 01:09:44.140
tatsächlich innerhalb des Taktes asynchron bin.

01:09:44.900 --> 01:09:47.320
Das heißt, ich habe hier tatsächlich nicht viel Nutzen von meinem

01:09:47.320 --> 01:09:48.260
Taktgeber.

01:09:49.380 --> 01:09:53.140
Was man deswegen macht, ist ein taktflankengesteuertes D-Flipflop, das

01:09:53.140 --> 01:09:57.140
heißt, man reagiert immer zu den Taktflanken, das heißt, wenn der Takt

01:09:57.140 --> 01:09:58.500
hoch oder runter geht.

01:10:00.920 --> 01:10:05.240
Und dafür muss man zwei D-Ledges, zwei D-synchrone D-Flipflops

01:10:05.240 --> 01:10:06.120
hintereinander schalten.

01:10:07.300 --> 01:10:12.040
Und so ein Flipflop, weiß gar nicht mehr, ob man das Master Slave

01:10:12.040 --> 01:10:12.520
nennen darf.

01:10:14.940 --> 01:10:16.460
Ja, müssen wir mal nachgucken.

01:10:17.380 --> 01:10:24.120
Also ursprünglich nannte man das mal Master Slave Flipflop, weil das

01:10:24.120 --> 01:10:26.680
eine Flipflop den anderen steuert.

01:10:29.500 --> 01:10:32.780
Aber ich glaube, da gehen wir jetzt nicht drauf ein und ich werde mal

01:10:32.780 --> 01:10:35.540
nachschauen, ob man die Bezeichnung ändern muss oder nicht.

01:10:37.240 --> 01:10:38.420
So weit, so gut mit der Vorlesung.

01:10:38.580 --> 01:10:40.000
Ich glaube, hier machen wir dann Schluss.

