2x1-Bit Speicher

Neue Frage »

Auf diesen Beitrag antworten »
Shizmo 2x1-Bit Speicher

Weiter gehts großes Grinsen

Also hier verwirrt mich die Angabe etwas:

Zitat:
Entwickeln Sie einen 2x1-Bit Speicher mit JK-Flipflops. Die Schaltung hat einen Adresseingang a, der eines der zwei Bits auswählt, einen Daten-Input i, dessen Zustand in das durch a ausgewählte JK-Flipflop übernommen wird, wenn der Read-Write Eingang w auf 1 ist. Der Ausgang o soll den Zustand des durch a ausgewählten Flipflops ausgeben.


Okay also ich weiß ich brauch 2 Flipflops, also habe ich auch 2 Bits [Ausgänge] (Q0 und Q1).

Wie setze ich die Werte der Tabelle? Ich hab 5 Variablen, w - a - i - q0 - q1 - Puh also das wären dann 32 Zeilen, da mich bei w aber nur die Werte mit 1 interessieren, kann ich es auf 16 reduzieren oder?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
| w | a | i | q1 | q0 |
|---|---|---|----|----|
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 0 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |
| 1 | 1 |   |    |    |


Ich versteh nicht ganz was i macht.

LG
 
Auf diesen Beitrag antworten »
eulerscheZahl

Ein Code sagt mehr als tausend Worte (hoffe ich zumindest).
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
static int q1 = 0;
static int q0 = 0;
static int takt(int w, int a, int i) {
	if (w == 0) { //lesen
		if (a == 0) { //schreibe in den einen Speicher
			q0 = i; //i wird geschrieben
		} else { //a = 1, also der andere Speicher
			q1 = i;
		}
		return 0; //wir wollen das sowieso nicht lesen
	} else {//w=1 entspricht schreiben
		//hier interessiert i nicht, da wir nichts schreiben wollen
		if (a == 0) {
			return q0;
		} else { //a = 1
			return q1;				
		}
	}
}
Auf diesen Beitrag antworten »
Shizmo

Vielen Dank für deine Antwort, kapiere es aber trotzdem nicht.

Habe gerade die Tabelle einer Musterlösung gesehen und die sieht so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
w a i q1 q0 J1 K1 J0 K0
----------------------
0 X X X  X  0  0  0  0
1 0 0 X  0  0  0  0  X
1 0 0 X  1  0  0  X  1
1 0 1 X  0  0  0  1  X
1 0 1 X  1  0  0  X  0
1 1 0 0  X  0  X  0  0
1 1 0 1  X  X  1  0  0
1 1 1 0  X  1  X  0  0
1 1 1 1  X  X  0  0  0


Auch die kann ich nicht nachvollziehen... verwirrt
Auf diesen Beitrag antworten »
eulerscheZahl

Beim Lesen wird der Speicherinhalt nicht geändert, also werden die Flipflops weder gesetzt, noch rückgesetzt. Dabei ist es unerheblich, was an den anderen Eingängen ist.

In den folgenden 4 Zeilen entscheidet deine Lösung, was in den Speicher geschrieben werden soll und ob es schon drinsteht. Wenn schon eine 0 drin ist und eine 0 geschrieben werden soll, gibt es dafür zwei Möglichkeiten: den Zustand beibehalten oder zurücksetzen.
code:
1:
2:
3:
4:
5:
6:
w a i q1 q0 J1 K1 J0 K0
----------------------
1 0 0 X  0  0  0  0  X
1 0 0 X  1  0  0  X  1
1 0 1 X  0  0  0  1  X
1 0 1 X  1  0  0  X  0

Man könnte auch immer setzen bzw. rücksetzen:
code:
1:
2:
3:
4:
5:
w a i J1 K1 J0 K0
-----------------
0 X X 0  0  0  0
1 0 0 0  0  0  1
1 0 1 0  0  1  0

Es kann aber sein, dass die Schaltung dann größer wird.
 
Auf diesen Beitrag antworten »
Shizmo

Zitat:
Beim Lesen wird der Speicherinhalt nicht geändert, also werden die Flipflops weder gesetzt, noch rückgesetzt. Dabei ist es unerheblich, was an den anderen Eingängen ist.

Ja okay, deshalb ist Zeile 1 voller X
code:
1:
2:
3:
w a i q1 q0 J1 K1 J0 K0
----------------------
0 X X X  X  0  0  0  0


Zitat:
In den folgenden 4 Zeilen entscheidet deine Lösung, was in den Speicher geschrieben werden soll und ob es schon drinsteht. Wenn schon eine 0 drin ist und eine 0 geschrieben werden soll, gibt es dafür zwei Möglichkeiten: den Zustand beibehalten oder zurücksetzen.
[...]
Man könnte auch immer setzen bzw. rücksetzen:
[...]


Okay das ist mir auch klar, das verstehe ich alles soweit, mein Problem ist noch früher.
Wie weiß ich, dass die Tabelle 16 Zeilen hat (in der Musterlösung 9, weil ja die anderen 7 Fälle mit w=0 gleich wären) obwohl ich 5 "Variablen" habe, also sollten es ja schon mal 32 Zeilen sein, minus den 15 w=0 --> 17 Zeilen.
Mein Hauptproblem ist, glaub ich, immer noch, dass ich immer noch nicht ganz verstehe, was das i macht und daraus kann ich dann auch q0 und q1 folgern.
w und a sind klar.
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast ja schon erkannt, dass mehrere Zeilen zu einer zusammengefasst sind. Dabei kommt es auf die Zahl der 'X' bei den Eingängen an, Für jedes 'X' verdoppelt sich die Zahl der Zeilen, da es ja für 0 oder 1 stehen kann. Also Zeilen = [latex]2^{\hbox{Anzahl X}}[/latex]
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
w a i q1 q0 J1 K1 J0 K0
----------------------
0 X X X  X  0  0  0  0 //16 zeilen
1 0 0 X  0  0  0  0  X //2 zeilen
1 0 0 X  1  0  0  X  1 //2 zeilen
1 0 1 X  0  0  0  1  X //2 zeilen
1 0 1 X  1  0  0  X  0 //2 zeilen
1 1 0 0  X  0  X  0  0 //2 zeilen
1 1 0 1  X  X  1  0  0 //2 zeilen
1 1 1 0  X  1  X  0  0 //2 zeilen
1 1 1 1  X  X  0  0  0 //2 zeilen

Macht in Summe 32
Auf diesen Beitrag antworten »
Shizmo

Achso Zunge raus Zunge raus

Haha super vielen Dank!!

Und jetzt einfach wieder KV-Diagramme machen und eine Schaltung zeichnen oder? Und am Schluss noch den Ausgang o dazuzeichnen...
Auf diesen Beitrag antworten »
eulerscheZahl

Genau.
Für den Ausgang am besten einen Multiplexer nehmen.

Beachte, dass es 5 Variablen sind, du brauchst also 2 KV Diagramme übereinander, die auch in der 3. Dimension verbunden sind.
Auf diesen Beitrag antworten »
Shizmo

Okay noch eine Frage:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
w a i q1 q0 J1 K1 J0 K0
----------------------
0 X X X  X  0  0  0  0
1 0 0 X  0  0  0  0  X
1 0 0 X  1  0  0  X  1
1 0 1 X  0  0  0  1  X
1 0 1 X  1  0  0  X  0
1 1 0 0  X  0  X  0  0
1 1 0 1  X  X  1  0  0
1 1 1 0  X  1  X  0  0
1 1 1 1  X  X  0  0  0


Jetzt bei den FF-Eingägen, egal ob J1K1 oder J0K0, wenn ich von irgendwas (X) auf irgendwas (X,0,1) folgt, dann ist in dieser Tabelle immer 0 0. Kann ich das nicht mit X X schreiben, dann kann ich später bei den KV-Diagrammen viel mehr minimieren, als wie wenn ich alles Nullen habe.

UND:
Die 2te und 3te Zeile bei q0 - also von 0 auf 1, warum hat er bei J0-K0 in der Zeile 2: 0 X (0 X würde ja bedeuten von 0 auf 0, wir bräuchten aber ein 1 X) oder übersehe ich da was?
Auf diesen Beitrag antworten »
eulerscheZahl

Versuchst du gerade, die Zustandsübergänge zwischen den Zeilen zu machen? Das ist falsch.

code:
1:
2:
3:
w a i q1 q0 J1 K1 J0 K0
----------------------
1 0 0 X  0  0  0  0  X

qo ist offensichtlich 0. Da i=0, wollen wir eine 0 reinschreiben. Das geht, indem wir nichts machen oder das Flipflop rücksetzen, also 0X für J0K0.
Gleichzeitig soll der Inhalt von q1 erhalten bleiben. Deshalb J1K1 = 00, alles andere könnte den Inhalt überschreiben.
Auf diesen Beitrag antworten »
Shizmo

Ich hab einfach von Anfang an komplett falsch gedacht, jetzt macht das alles Sinn. Danke!

Komme mit den Diagrammen auf:
J0 = [latex]w \overline a i[/latex]
K0 = [latex]w \overline a \, \overline i[/latex]

J1 = [latex]w a i[/latex]
K1 = [latex]w a \overline i[/latex]

Schaut doch schonmal ganz gut aus.

Zitat:
Der Ausgang o soll den Zustand des durch a ausgewählten Flipflops ausgeben.


Also könnte o auch so sein oder?:
[latex]\overline a q0 \vee a q1[/latex]
Auf diesen Beitrag antworten »
eulerscheZahl

Kein Einwände Daumen hoch
Auf diesen Beitrag antworten »
Shizmo

Wunderbar, vielen Dank für die Hilfe!!! smile smile
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »