Re: Aufgaben und Übungen,

Image automat2024_01_01

	b a x	b a y
0	0 0 0	1 1 1
1	0 0 1	0 0 1
2	0 1 0	1 0 0
3	0 1 1	1 1 0
4	1 0 0	1 0 0
5	1 0 1	1 1 1
6	1 1 0	1 0 0
7	1 1 1	0 0 1


	b a x	b
0	0 0 0	1
1	0 0 1	0
2	0 1 0	1
3	0 1 1	1
4	1 0 0	1
5	1 0 1	1
6	1 1 0	1
7	1 1 1	0

	b a x	a
0	0 0 0	1
1	0 0 1	0
2	0 1 0	0
3	0 1 1	1
4	1 0 0	0
5	1 0 1	1
6	1 1 0	0
7	1 1 1	0

	b a x	y
0	0 0 0	1
1	0 0 1	1
2	0 1 0	0
3	0 1 1	0
4	1 0 0	0
5	1 0 1	1
6	1 1 0	0
7	1 1 1	1


	b a x	b
0	0 0 0	1
2	0 1 0	1
3	0 1 1	1
4	1 0 0	1
5	1 0 1	1
6	1 1 0	1

	b a x	a
0	0 0 0	1
3	0 1 1	1
5	1 0 1	1

	b a x	y
0	0 0 0	1
1	0 0 1	1
5	1 0 1	1
7	1 1 1	1



	b a x	b
Gruppe 0:
0	0 0 0	1
Gruppe 1:
2	0 1 0	1
4	1 0 0	1
Gruppe 2:
3	0 1 1	1
5	1 0 1	1
6	1 1 0	1

	b a x	a
Gruppe 0:
0	0 0 0	1
Gruppe 2:
3	0 1 1	1
5	1 0 1	1

	b a x	y
Gruppe 0:
0	0 0 0	1
Gruppe 1:
1	0 0 1	1
Gruppe 2:
5	1 0 1	1
Gruppe 3:
7	1 1 1	1



	b a x	b
Gruppe 0:
0	0 0 0	1
Gruppe 1:
2	0 1 0	1
4	1 0 0	1
Gruppe 2:
3	0 1 1	1
5	1 0 1	1
6	1 1 0	1

0:2		0 - 0
0:4		- 0 0
2:3		0 1 -
2:6		- 1 0
4:5		1 0 -
4:6		1 - 0


0:2		0 - 0
4:6		1 - 0

0:2:4:6		- - 0

0:4		- 0 0
2:6		- 1 0

0:4:2:6		- - 0

2:3		0 1 -
4:5		1 0 -

	b <= (not x) or (b xor a);





	b a x	a
Gruppe 0:
0	0 0 0	1
Gruppe 2:
3	0 1 1	1
5	1 0 1	1

	a <= (not b and not a and not x) or
			(not b and a and x) or
			(b and not a and x);
	a <= not (
			(b or a or x) and
			(b or not a or not x) and
			(not b or a or not x);
		);

	b a x	y
Gruppe 0:
0	0 0 0	1
Gruppe 1:
1	0 0 1	1
Gruppe 2:
5	1 0 1	1
Gruppe 3:
7	1 1 1	1

0:1		0 0 -
1:5		- 0 1
5:7		1 - 1

		0	1	5	7
0:1		*	*
1:5			*	*
5:7				*	*

		0	1	5	7
0:1		*	*
5:7				*	*

	y <= (not b and not a) or
		(b and x);
	y <= not (
			(b or a) and
			(not b or not x)
		);




	bout <= (not x) or (b xor a);
	aout <= (not b and not a and not x) or
			(not b and a and x) or
			(b and not a and x);
	y <= (not b and not a) or
		(b and x);
library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01uebergangsschaltnetz is
port (
	b, a, x: in std_logic;
	bout, aout: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01uebergangsschaltnetz is
begin
	bout <= (not x) or (b xor a);
	aout <= (not b and not a and not x) or
			(not b and a and x) or
			(b and not a and x);
end;

library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01ausgangsschaltnetz is
port (
	b, a, x: in std_logic;
	y: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01ausgangsschaltnetz is
begin
	y <= (not b and not a) or
		(b and x);

end;

library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01testbench is
port (
	bout, aout: out std_logic;
	y: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01testbench is
	component meinschaltwerk2024_01_01uebergangsschaltnetz
	port (
		b, a, x: in std_logic;
		bout, aout: out std_logic
	);
	end component;
	component meinschaltwerk2024_01_01ausgangsschaltnetz
	port (
		b, a, x: in std_logic;
		y: out std_logic
	);
	end component;
	signal b, a, x: std_logic;
begin
	sn1: meinschaltwerk2024_01_01uebergangsschaltnetz PORT MAP (b=>b, a=>a, x=>x, bout=>bout, aout=>aout);
	sn2: meinschaltwerk2024_01_01ausgangsschaltnetz PORT MAP (b=>b, a=>a, x=>x, y=>y);


	x <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	a <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	b <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;
end;

Image Screenshot_20240101_105108

library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01uebergangsschaltnetz is
port (
	b, a, x: in std_logic;
	bout, aout: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01uebergangsschaltnetz is
begin
	bout <= (not x) or (b xor a);
	aout <= (not b and not a and not x) or
			(not b and a and x) or
			(b and not a and x);
end;

library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01ausgangsschaltnetz is
port (
	b, a, x: in std_logic;
	y: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01ausgangsschaltnetz is
begin
	y <= (not b and not a) or
		(b and x);

end;

library ieee;
use ieee.std_logic_1164.all;

entity meinschaltwerk2024_01_01testbench is
port (
	bout, aout: out std_logic;
	y: out std_logic
);
end;

architecture verhalten of meinschaltwerk2024_01_01testbench is
	component meinschaltwerk2024_01_01uebergangsschaltnetz
	port (
		b, a, x: in std_logic;
		bout, aout: out std_logic
	);
	end component;
	component meinschaltwerk2024_01_01ausgangsschaltnetz
	port (
		b, a, x: in std_logic;
		y: out std_logic
	);
	end component;
	signal b, a, x: std_logic;
begin
	sn1: meinschaltwerk2024_01_01uebergangsschaltnetz PORT MAP (b=>b, a=>a, x=>x, bout=>bout, aout=>aout);
	sn2: meinschaltwerk2024_01_01ausgangsschaltnetz PORT MAP (b=>b, a=>a, x=>x, y=>y);


	x <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	a <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	b <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;
end;

Image Screenshot_20240101_105108

Image automat2024_01_01

	b a x	b a y
0	0 0 0	1 1 1
1	0 0 1	0 0 1
2	0 1 0	1 0 0
3	0 1 1	1 1 0
4	1 0 0	1 0 0
5	1 0 1	1 1 1
6	1 1 0	1 0 0
7	1 1 1	0 0 1

So, sieht es bisher aus, ich glaube die Tabelle kommt hier nicht richtig raus, aber auf meiner Homepages

Die Ausgabe - Status-Signal (das sind nicht die Register R0, R1, R2 - wir sind im Schaltwerk)
ist die Abfrage, PC < R0
Die Abfrage PC < 5
Aber doch ein wenig die Register
Ausgabe:

Enable PC, R0, R1, R2

PC < R0 ist Eingabe f"ur das Steuerwerk
PC < 5 ist Eingabe f"ur das Steuwerk
Enable PC, R0, R1, R2 ist Ausgbae f"ur das Steuerwerk
Und man braucht noch was man da rein schreibt, das heisst, Multiplexer, das muss man kodieren

Also

R0:
1.) In Z0: R0(7:0) <- X(15:8)

R1:
1.) In R1(15:0) wir X(31:16) geschrieben
3.) R1 <- R1+M[PC]
4.) R1 <- R1+2

In PC
1.) Z0: PC(7:0) <- X(7:0)
2.) Z1, Z6: PC <- PC+1
3.) Z4, PC <- 0

Wir haben also Zwei Multiplexer

F"ur PC einen und f"ur R1 einen.

Sie haben zwischen 3 und 3 M"oglichkeiten brauchen als 2 Bit jeweils, insgesamt 4 Bit

Das macht einen Steuervektor von 4 Bit

Dieser heisst

S(3:0)

S3, S2, S1, S0

S3, S2: F"ur PC
S1, S0: F"ur R1

Aber wir brauchen Enable, deswegen sind es drei Bits, pro Register, als 2 Bit mehr

S(5:0)

Das Most Significant Bit ist das Enable des jeweiligen Registers

Wir haben den Statusvektor V(1:0)

V1 und V0, stehen f"ur:

PC < R0
und
PC < 5

Aktueller Zustand       Eingabe - Status Signal         Ausgabe - Status Signal     Folgezustand    Code-Folgezustand
    0                   00                              100100                      1
    0                   01                              100100                      1
    0                   10                              100100                      1
    0                   11                              100100                      1
    1                   00                              0xx0xx
    1                   01                              0xx0xx
    1                   10                              0xx0xx
    1                   11                              0xx0xx
    2                   00                              101101
    2                   01                              101101
    2                   10                              101101
    2                   11                              101101
    3                   00                              1100xx
    3                   01                              1100xx
    3                   10                              1100xx
    3                   11                              1100xx
    4                   00                              0xx0xx
    4                   01                              0xx0xx
    4                   10                              0xx0xx
    4                   11                              0xx0xx
    5                   00                              101110
    5                   01                              101110
    5                   10                              101110
    5                   11                              101110
    6                   00                              0xx0xx
    6                   01                              0xx0xx
    6                   10                              0xx0xx
    6                   11                              0xx0xx

So, ist es richtig, jetzt mache ich die Tabelle f"ur Facebook

Die Ausgabe - Status-Signal (das sind nicht die Register R0, R1, R2 - wir sind im Schaltwerk)
ist die Abfrage, PC < R0
Die Abfrage PC < 5
Aber doch ein wenig die Register
Ausgabe:

Enable PC, R0, R1, R2

PC < R0 ist Eingabe f"ur das Steuerwerk
PC < 5 ist Eingabe f"ur das Steuwerk
Enable PC, R0, R1, R2 ist Ausgbae f"ur das Steuerwerk
Und man braucht noch was man da rein schreibt, das heisst, Multiplexer, das muss man kodieren

Also

R0:
1.) In Z0: R0(7:0) <- X(15:8)

R1:
1.) In R1(15:0) wir X(31:16) geschrieben
3.) R1 <- R1+M[PC]
4.) R1 <- R1+2

In PC
1.) Z0: PC(7:0) <- X(7:0)
2.) Z1, Z6: PC <- PC+1
3.) Z4, PC <- 0

Wir haben also Zwei Multiplexer

F"ur PC einen und f"ur R1 einen.

Sie haben zwischen 3 und 3 M"oglichkeiten brauchen als 2 Bit jeweils, insgesamt 4 Bit

Das macht einen Steuervektor von 4 Bit

Dieser heisst

S(3:0)

S3, S2, S1, S0

S3, S2: F"ur PC
S1, S0: F"ur R1

Aber wir brauchen Enable, deswegen sind es drei Bits, pro Register, als 2 Bit mehr

S(5:0)

Das Most Significant Bit ist das Enable des jeweiligen Registers

Wir haben den Statusvektor V(1:0)

V1 und V0, stehen f"ur:

PC < R0
und
PC < 5

Aktueller Zustand       Eingabe - Status Signal         Ausgabe - Status Signal     Folgezustand    Code-Folgezustand
    0                   00                              100100                      1               000001
    0                   01                              100100                      1               000001
    0                   10                              100100                      1               000001
    0                   11                              100100                      1               000001
    1                   00                              0xx0xx                      3               000100
    1                   01                              0xx0xx                      3               000100
    1                   10                              0xx0xx                      2               000010
    1                   11                              0xx0xx                      2               000010
    2                   00                              101101                      1               000001
    2                   01                              101101                      1               000001
    2                   10                              101101                      1               000001
    2                   11                              101101                      1               000001
    3                   00                              1100xx                      4               001000
    3                   01                              1100xx                      4               001000
    3                   10                              1100xx                      4               001000
    3                   11                              1100xx                      4               001000
    4                   00                              0xx0xx                      6               100000
    4                   01                              0xx0xx                      5               010000
    4                   10                              0xx0xx                      6               100000
    4                   11                              0xx0xx                      5               010000
    5                   00                              101110                      4               001000
    5                   01                              101110                      4               001000
    5                   10                              101110                      4               001000
    5                   11                              101110                      4               001000
    6                   00                              0xx0xx                      6               100000
    6                   01                              0xx0xx                      6               100000
    6                   10                              0xx0xx                      6               100000
    6                   11                              0xx0xx                      6               100000

A     B   C             D E
    0     00  100100        1 000001
    0     01  100100        1 000001
    0     10  100100        1 000001
    0     11  100100        1 000001
    1     00  0xx0xx        3 000100
    1     01  0xx0xx        3 000100
    1     10  0xx0xx        2 000010
    1     11  0xx0xx        2 000010
    2     00  101101        1 000001
    2     01  101101        1 000001
    2     10  101101        1 000001
    2     11  101101        1 000001
    3     00  1100xx        4 001000
    3     01  1100xx        4 001000
    3     10  1100xx        4 001000
    3     11  1100xx        4 001000
    4     00  0xx0xx        6 100000
    4     01  0xx0xx        5 010000
    4     10  0xx0xx        6 100000
    4     11  0xx0xx        5 010000
    5     00  101110        4 001000
    5     01  101110        4 001000
    5     10  101110        4 001000
    5     11  101110        4 001000
    6     00  0xx0xx        6 100000
    6     01  0xx0xx        6 100000
    6     10  0xx0xx        6 100000
    6     11  0xx0xx        6 100000

Aktueller Zustand: A
Eingabe - Status Signal: B
Ausgabe - Status Signal: C
Folgezustand: D
Code-Folgezustand: E

Jetzt kann ich damit beginnen, unnötigen Einträge in der Tabelle zu vermeiden. Wenn ein Zustand, keine Eingabe hat, davon unabhängig ist, unweigerlich ein Zustand folgt, kann von der Eingabe ins Steuwerk bei der Eingabe xx stehen und der Zustand ist in jedem Fall der Zustand, der folgt.

A     B   C             D E
    0     xx  100100        1 000001
    1     0x  0xx0xx        3 000100
    1     1x  0xx0xx        2 000010
    2     xx  101101        1 000001
    3     xx  1100xx        4 001000
    4     x0  0xx0xx        6 100000
    4     x1  0xx0xx        5 010000
    5     xx  101110        4 001000
    6     xx  0xx0xx        6 100000

Aktueller Zustand: A
Eingabe - Status Signal: B
Ausgabe - Status Signal: C
Folgezustand: D
Code-Folgezustand: E

Die Einträge in der letzten Spalte heissen eigentlich

z7+, z6+, z5+

    A     B   C             D E
    0     xx  100100        1 000001
    1     0x  0xx0xx        3 000100
    1     1x  0xx0xx        2 000010
    2     xx  101101        1 000001
    3     xx  1100xx        4 001000
    4     x0  0xx0xx        6 100000
    4     x1  0xx0xx        5 010000
    5     xx  101110        4 001000
    6     xx  0xx0xx        6 100000

=

z1 = z0+
z2 = z1+ AND v1
z3 = z1+ AND NOT v1
z4 = z3+ OR z5+
z5 = z4+ AND v0
z6 = (z4+ AND NOT v0) OR (z6+)
Wir haben
 wird n"amlich erst durch den Addierer gejagt.\\
    A     B   C             D E\\
    0     xx  100100        1 000001\\
    1     0x  0xx0xx        3 000100\\
    1     1x  0xx0xx        2 000010\\
    2     xx  101101        1 000001\\
    3     xx  1100xx        4 001000\\
    4     x0  0xx0xx        6 100000\\
    4     x1  0xx0xx        5 010000\\
    5     xx  101110        4 001000\\
    6     xx  0xx0xx        6 100000\\
\\
\\
Aktueller Zustand: A\\
Eingabe - Status Signal: B\\
Ausgabe - Status Signal: C\\
Folgezustand: D\\
Code-Folgezustand: E\\

\begin{verbatim}
z1+ = z0
z2+ = z1 AND v1
z3+ = z1 AND NOT v1
z4+ = z3 OR z5
z5+ = z4 AND v0
z6+ = (z4 AND NOT v0) OR (z6)

s5 = z0

    A     B   C             D E
    0     xx  100100        1 000001
    1     0x  0xx0xx        3 000100
    1     1x  0xx0xx        2 000010
    2     xx  101101        1 000001
    3     xx  1100xx        4 001000
    4     x0  0xx0xx        6 100000
    4     x1  0xx0xx        5 010000
    5     xx  101110        4 001000
    6     xx  0xx0xx        6 100000

Aktueller Zustand: A
Eingabe - Status Signal: B
Ausgabe - Status Signal: C
Folgezustand: D
Code-Folgezustand: E

z1+ = z0
z2+ = z1 AND v1
z3+ = z1 AND NOT v1
z4+ = z3 OR z5
z5+ = z4 AND v0
z6+ = (z4 AND NOT v0) OR (z6)

s5 = z0 OR z2 OR z3 OR z5
s4 = z3
s3 = z2 OR z5
s2 = z0 OR s2 OR s5
s1 = s5
s0 = z5