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;
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;
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