Re: Aufgaben und Übungen,

Ich mache jetzt eine Aufgabe

Anstatt die nächste, mache ich die alte noch mal mit anderen Werten.

Ich mache Aufgabe zu Zustandskodierung.

Zur Sicherheit: 6 7 4
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			4	8				1
2			4	8				0
3			7	4				0
4			6	7				0
5			2	8				1
6			7	4				0
7			4	6				0
8			8	5				1

Zur Sicherheit: 6 7 4
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			4	8				1
2			4	8				0
3			7	4				0
4			6	7				0
5			2	8				1
6			7	4				0
7			4	6				0
8			8	5				1

(1,5)		(4,2)	(8,8)
(1,8)		(4,8)	(8,5)
(5,8)		(2,8)	(2,5)
(2,3)		(4,7)	(4,4)
(2,4)		(4,6)	(4,7)
(2,6)		(4,7)	(4,4)
(2,7)		(4,4)	(4,6)
(3,4)		(7,6)	(7,7)
(3,6)		(7,7)	(7,4)
(3,7)		(7,4)	(7,6)
(4,6)		(6,7)	(6,4)
(4,7)		(6,4)	(6,6)
(6,7)		(7,4)	(7,6)


(1,5)		(4,2)
(1,8)		(4,8)	(8,5)
(5,8)		(2,8)	(2,5)
(2,3)		(4,7)
(2,4)		(4,6)	(4,7)
(2,6)		(4,7)
(2,7)		(4,6)
(3,4)		(7,6)
(3,6)		(7,4)
(3,7)		(7,4)	(7,6)
(4,6)		(6,7)	(6,4)
(4,7)		(6,4)
(6,7)		(7,4)	(7,6)


(1,5)		(2,4)
(1,8)		(4,8)	(5,8)
(2,3)		(4,7)
(2,4)		(4,6)	(4,7)
(2,6)		(4,7)
(2,7)		(4,6)
(3,4)		(6,7)
(3,6)		(4,7)
(3,7)		(4,7)	(6,7)
(4,6)		(6,7)	(4,6)
(4,7)		(4,6)
(5,8)		(2,8)	(2,5)
(6,7)		(4,7)	(6,7)


(1,5)		(2,4)
--(1,8)		--(4,8)	(5,8)
(2,3)		(4,7)
(2,4)		(4,6)	(4,7)
(2,6)		(4,7)
(2,7)		(4,6)
(3,4)		(6,7)
(3,6)		(4,7)
(3,7)		(4,7)	(6,7)
(4,6)		(6,7)	(4,6)
(4,7)		(4,6)
--(5,8)		--(2,8)	(2,5)
(6,7)		(4,7)	(6,7)


(1,5)		(2,4)
(2,3)		(4,7)
(2,4)		(4,6)	(4,7)
(2,6)		(4,7)
(2,7)		(4,6)
(3,4)		(6,7)
(3,6)		(4,7)
(3,7)		(4,7)	(6,7)
(4,6)		(6,7)	(4,6)
(4,7)		(4,6)
(6,7)		(4,7)	(6,7)


Also, das sieht doch schon mal ganz ordentlich aus, f"ur die Menge an unn"otigen Zust"adne

Gut, im nächsten Schritt, kommt das ASM-Diagramm mit reduzierter Anzahl von Registern.

Image asm20240202.jpeg-1

Image asm20240202a

Das Operationswerk würde somit seinen Zweck erfüllen, bis auf eines - Ich habe keinen Vergleicher an R2 in Z4 R2 == 29. den denken wir uns. Von diesem aus geht die Eingangsvariable, die einzige an das Steuerwerk weiter.

Oder, wir erlauben uns einen Spass und malen ihn noch dazu. Was wir auch unbedingt tun müssten, das sind unsere Steuersignale

WE

Zum Beispiel

WE1
WE2
...

Oder

RegWrite1
RegWrite2
RegWrite3
...

damit die Register entsprechend frei geschaltet werden. Das mache ich jetzt noch.

Image asm20240202a1

Image asm20240202.jpeg-1

Image micro20240202

z1+ := z4 and x
z2+ := z1
z3+ := z2
z4+ := z3
z5+ := z4 and not x
z6+ := z5

y0 := z1 or z6
y1 := z2
y2 := z3
y3 := z5
y4 := z6

Image asm20240202finished.jpeg-1

Image micro20240202b

Image asm20240202finished.jpeg-1

Image asm20240202finished.jpeg-2

Zur Sicherheit: 6 2 0
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			3	5				0
2			0	6				1
3			5	7				0
4			8	8				1
5			3	5				1
6			2	0				1
7			8	5				1
8			8	2				0


Zur Sicherheit: 6 2 0
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
2			0	6				1
4			8	8				1
5			3	5				1
6			2	0				1
7			8	5				1


Zur Sicherheit: 6 2 0
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			3	5				0
3			5	7				0
8			8	2				0


Zur Sicherheit: 6 2 0
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
2			0	6				1
4			8	8				1
5			3	5				1
6			2	0				1
7			8	5				1

(2,4)		(0,8)		(6,8)
(2,5)		(0,3)		(6,5)
(2,6)		(0,2)		(6,0)
(2,7)		(0,8)		(6,5)
(4,5)		(8,3)		(8,5)
(4,6)		(8,2)		(8,0)
(4,7)		(8,5)		(8,5)
(5,6)		(3,2)		(5,0)
(5,7)		(3,8)		(5,5)
(6,7)		(2,8)		(0,5)


Zur Sicherheit: 6 2 0
Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			3	5				0
3			5	7				0
8			8	2				0

(1,3)		(3,5)		(5,7)
(1,8)		(3,8)		(5,2)
(3,8)		(5,8)		(7,2)



(2,4)		(0,8)		(6,8)
(2,5)		(0,3)		(6,5)
(2,6)		(0,2)		(6,0)
(2,7)		(0,8)		(6,5)
(4,5)		(8,3)		(8,5)
(4,6)		(8,2)		(8,0)
(4,7)		(8,5)		(8,5)
(5,6)		(3,2)		(5,0)
(5,7)		(3,8)		(5,5)
(6,7)		(2,8)		(0,5)
(1,3)		(3,5)		(5,7)
(1,8)		(3,8)		(5,2)
(3,8)		(5,8)		(7,2)



(1,3)		(3,5)		(5,7)
(1,8)		(3,8)		(5,2)
(2,4)		(0,8)		(6,8)
(2,5)		(0,3)		(6,5)
(2,6)		(0,2)		(6,0)
(2,7)		(0,8)		(6,5)
(3,8)		(5,8)		(7,2)
(4,5)		(8,3)		(8,5)
(4,6)		(8,2)		(8,0)
(4,7)		(8,5)		(8,5)
(5,6)		(3,2)		(5,0)
(5,7)		(3,8)		(5,5)
(6,7)		(2,8)		(0,5)



(1,3)		(3,5)		(5,7)
(1,8)		(3,8)		(2,5)
(2,4)		(0,8)		(6,8)
(2,5)		(0,3)		(5,6)
(2,6)		(0,2)		(0,6)
(2,7)		(0,8)		(5,6)
(3,8)		(5,8)		(2,7)
(4,5)		(3,8)		(5,8)
(4,6)		(2,8)		(0,8)
(4,7)		(5,8)		(5,8)
(5,6)		(2,3)		(0,5)
(5,7)		(3,8)		(5,5)
(6,7)		(2,8)		(0,5)



(1,3)		(3,5)		(5,7)
(1,8)		(3,8)		(2,5)
(2,4)		(0,8)		(6,8)
(2,5)		(0,3)		(5,6)
(2,6)		(0,2)		(0,6)
(2,7)		(0,8)		(5,6)
(3,8)		(5,8)		(2,7)
(4,5)		(3,8)		(5,8)
(4,6)		(2,8)		(0,8)
(4,7)		(5,8)		(5,8)
(5,6)		(2,3)		(0,5)
(5,7)		(3,8)
(6,7)		(2,8)		(0,5)

/* Das bescheuerte ist, dass der Fehler eigentlich nicht drin war. Ich hatte schon vorher dass +1. "Uberall +1. Das ist das bescheuerte. Deswegen waren bisher die Aufgaben auch richtig. Das ist verr"uckt. Der Fehler war in der urspr"unglichen Aufgabe auch nicht drin. Das stimmt nicht und in der auch nicht. Nur in den seltensten F"allen. Ich sage es gleich. Nur in den seltensten

Bisher waren die Aufgaben richtig. Der Witz ist n"amlich, dass alle Zust"ande +1 erzeugt wurden. Das wurde vorher auch schon. Wurde, bei allen +1 erzeugt

Aber ich habe ja den Ring hergestellt. Von den drei zust"anden und selbst, das war vorher richtig. Zumindest beim ersten.

Ich habe ja gesagt, Ring von 3 Zust"anden. Gut und beim ersten vom Ring, war es richtig. Nur beim zweiten und dritten habe ich es vers"aumt. Beim zweiten und dritten und das heisst nicht mal, dass es jedes Mal falsch war. Nicht mal

Weil, der zweite und dritte sind schliesslich zuf"allig gew"ahlt. Im Ring sind der zweite und dritte zuf"allig. nur manchmal werden sie null. Die anderen wurden es nicht, weil es war hier schon richtig.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (void) {
    time_t t;
    int i;
    int a [3];
    int j;

    srand ((int)time (\&amp;t));

    a [0] = (rand () % 8) + 1;
    while ((a [1] = ((rand () % 8)+1)) == a [0]);
    while (((a [2] = ((rand () % 8)+1)) == a [0]) || (a [2] == a [1]));
    j = rand () % 2;

    printf ("Zur Sicherheit: %i %i %in", a [0], a [1], a [2]);

    printf ("ZustandttFolge-Zustand fuertAusgangn");
    printf ("tttx=0tx=1ttttn");
    for (i = 1;  i <= 8;  i++) {
        if (i == a [0])
            printf ("%ittt%it%itttt%in", a [0], a [1], a [2], j);
        else if (i == a [1])
            printf ("%ittt%it%itttt%in", a [1], a [2], a [0], j);
        else if (i == a [2])
            printf ("%ittt%it%itttt%in", a [2], a [0], a [1], j);
        else
            printf ("%ittt%it%itttt%in", i, (rand () % 8) + 1, (rand () % 8) + 1, rand () % 2);
    }

return 0;
}