Entweder macht Übersetzer manchmal viel seltsame Fehler da sind grammatische Sachen drin die fallen mir aber nicht auf wenn ich das hier diktiere ist mir aber gerade aufgefallen Jetzt ist mir gerade aufgefallen, da stand totaler Schwachsinn. na gut oder? Man muss ja auch aufpassen auf Facebook da können ja auch das können ja selbst Polizisten sein, mal Leute ihren Account freischalten . Keine Sorge, meine Homepage ist nicht zu hacken das ist halt der Unterschied. Ich glaube auch, dass Facebook nicht zu hacken ist, letztenendes aber, dass man sich politisch also rechtsmäßig den Zugangscode legitimen verschaffen kann und wer weiß wer da was dann rein schreibt für ihr Zeug. Das ist bei meiner Homepage nicht möglich  die Homepage wiederum Mag ja unsicherer klingen als Facebook aber sie kommen da einfach nicht rein sonst muss man einfach sagen Sie kommen in meine Homepage nicht rein, weil es ist mein Computer. Das ist halt so. Manchmal sind auch die Vorschläge vom Diktier Dingsbums sehr seltsam, muss ich sagen
Letztenendes muss ich allerdings sagen ist mir die Art und Weise wie ich etwas diktiere scheißegal Sie müssen wissen mir geht's um das Schreiben der VHDL Codes und ich sag mal so mir ist es gerade recht wenn's unsauber rauskommen. Ich hab schon Texte vom Chinesen in Technik gelesen die waren genauso schräg ungefähr so schräg und sie waren lesbar von der technischen Seite her und wir brauchen sie nicht. Ich bin übrigens kein chinesischer Hacker. Ich bin David Vajda
Von der technischen Seite her ist es sogar gut, wenn der Diktier ein bisschen Scheiße macht. Das ist halt Technik und diktiere. So sehe ich das, dass man dann erkennt, dass es Technik und diktiere und nichts anderes weil eigentlich mag ich keine Polemik. Ich weiß nur darauf hin, wie wenig mir das alles gefällt Ansonsten kann der Text ruhig technisch sein und wenn es technisch ist, dann ist es genau richtig weil mir geht's um die Sache vhdl und nicht das andere
Sag ich mal so zum Beispiel Atomwaffentest weil meine Gatter haben mit Atomwaffen Nix zu tun trotzdem wenn sie das mal anschauen als die Amerikaner angefangen haben. Die waren schon längst in der Lage in Atomwaffentest zu machen. So ging's mir mit den MIPS 32 auch trotzdem hab ich gesagt, wir warten wir warten. Wir warten das zweite ist es gibt die Übung 10.000 mal also die noch nicht voll reife Übung einfach um das zu machen und dann steht diesmal Datum und Uhrzeit drauf so wie bei mir und dann der letzte Witz. Ja wenn das halt stattfindet, dann müssen sie halt alles aufnehmen diktieren diktieren diktieren was passiert ob das jetzt 100 % ins Deutschunterricht reinpasst. Vor voller Grammatik ist es egal verstehen tut's von der technischen Seite hinterher jeder so auf die Art und Weise schon dann haben sind sie glücklich, wenn sie sie protokolliert Habenund so kam es halt drüber und das ist eigentlich sogar ne ehrliche Aufnahme im Gegensatz zu anderen
Code: Select all
-- (C) David Vajda
-- MIPS32 - minimal
-- 2024-12-04
library ieee;
use ieee.std_logic_1164.all;
entity rslatch is
port (
r: in std_logic;
s: in std_logic;
q: inout std_logic;
p: inout std_logic
);
end;
architecture behaviour of rslatch is
begin
q <= (r nor p);
p <= (s nor q);
end;
library ieee;
use ieee.std_logic_1164.all;
entity clktriggeredrslatch is
port (
r: in std_logic;
s: in std_logic;
c: in std_logic;
q: inout std_logic
);
end;
architecture behaviour of clktriggeredrslatch is
component rslatch
port (
r: in std_logic;
s: in std_logic;
q: inout std_logic;
p: inout std_logic
);
end component;
signal e, d: std_logic;
begin
rs: rslatch PORT MAP (r=>e, s=>d, q=>q);
d <= c and s;
e <= c and r;
end;
library ieee;
use ieee.std_logic_1164.all;
entity dlatch is
port (
d: in std_logic;
c: in std_logic;
q: inout std_logic
);
end;
architecture behaviour of dlatch is
component clktriggeredrslatch
port (
r: in std_logic;
s: in std_logic;
c: in std_logic;
q: inout std_logic
);
end component;
signal e, f: std_logic;
begin
clkrs: clktriggeredrslatch PORT MAP (r=>f, s=>e, c=>c, q=>q);
e <= d;
f <= not d;
end;
library ieee;
use ieee.std_logic_1164.all;
entity dlatchtestbench is
port (
q: inout std_logic
);
end;
architecture behaviour of dlatchtestbench is
component dlatch
port (
c: in std_logic;
d: in std_logic;
q: inout std_logic
);
end component;
signal d, c: std_logic;
begin
dl: dlatch PORT MAP (d=>d, c=>c, q=>q);
-- diese sind aus dem letzten eingefuegt, damit ich sie nicht noch mal schreiben muss
d <= '1' after 0 ns, '1' after 10 ns, '0' after 20 ns, '0' after 30 ns, '0' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns;
c <= '1' after 0 ns, '0' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '0' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity dff is
port (
d: in std_logic;
c: in std_logic;
q: inout std_logic
);
end;
architecture behaviour of dff is
component dlatch
port (
q: inout std_logic;
d: in std_logic;
c: in std_logic
);
end component;
signal e, a, b: std_logic;
begin
d1: dlatch PORT MAP (c=>a, d=>e, q=>q);
d2: dlatch PORT MAP (c=>b, d=>d, q=>e);
a <= not c;
b <= c;
end;
library ieee;
use ieee.std_logic_1164.all;
entity dfftestbench is
port (
q: inout std_logic
);
end;
architecture behaviour of dfftestbench is
component dff
port (
q: inout std_logic;
d: in std_logic;
c: in std_logic
);
end component;
signal d, c: std_logic;
begin
dl: dff PORT MAP (d=>d, c=>c, q=>q);
-- diese sind aus dem letzten eingefuegt, damit ich sie nicht noch mal schreiben muss
d <= '1' after 0 ns, '1' after 10 ns, '0' after 20 ns, '0' after 30 ns, '0' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns;
c <= '1' after 0 ns, '0' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '0' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity reg32 is
port (
c: in std_logic;
d: in std_logic_vector (31 downto 0);
q: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of reg32 is
component dff
port (
q: inout std_logic;
d: in std_logic;
c: in std_logic
);
end component;
signal p: std_logic_vector (31 downto 0);
begin
gen_reg: FOR i in 31 downto 0 generate
dffx: dff PORT MAP (q=>p(i),d=>d(i),c=>c);
q(i) <= p (i);
end generate;
end;
library ieee;
use ieee.std_logic_1164.all;
entity dffregtestbench is
port (
q: inout std_logic_vector (31 downto 0)
);
end;
architecture behaviour of dffregtestbench is
component reg32
port (
q: out std_logic_vector (31 downto 0);
d: in std_logic_vector (31 downto 0);
c: in std_logic
);
end component;
signal d: std_logic_vector (31 downto 0);
signal c: std_logic;
begin
r32: reg32 PORT MAP (d=>d, c=>c, q=>q);
-- diese sind aus dem letzten eingefuegt, damit ich sie nicht noch mal schreiben muss
d <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 10 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 20 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 30 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 40 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 50 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 60 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 70 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 80 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 90 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 100 ns;
c <= '1' after 0 ns, '0' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '0' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity MUX32_2_1 is
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end;
architecture behaviour of MUX32_2_1 is
begin
MUX_generate: FOR i IN 31 DOWNTO 0 GENERATE
c (i) <= (a (i) and not x) or (b (i) and x);
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity MUX5_2_1 is
port (
c: out std_logic_vector (4 downto 0);
b: in std_logic_vector (4 downto 0);
a: in std_logic_vector (4 downto 0);
x: in std_logic
);
end;
architecture behaviour of MUX5_2_1 is
begin
MUX_generate: FOR i IN 4 DOWNTO 0 GENERATE
c (i) <= (a (i) and not x) or (b (i) and x);
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity MUX32_2_1testbench is
port (
c: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of MUX32_2_1testbench is
component MUX32_2_1 is
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
signal b: std_logic_vector (31 downto 0);
signal a: std_logic_vector (31 downto 0);
signal x: std_logic;
begin
mux: MUX32_2_1 PORT MAP (c=>c, b=>b, a=>a, x=>x);
a <= ('1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0');
b <= ('1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0');
x <= '1' after 0 ns, '0' after 1 ns, '1' after 2 ns, '0' after 3 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity registerset2_32 is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic;
regsrc2: in std_logic;
regdest: in std_logic;
en: in std_logic
);
end;
architecture behaviour of registerset2_32 is
component reg32
port (
c: in std_logic;
d: in std_logic_vector (31 downto 0);
q: out std_logic_vector (31 downto 0)
);
end component;
component MUX32_2_1 is
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
signal q1: std_logic_vector (31 downto 0);
signal q2: std_logic_vector (31 downto 0);
signal c1, c2: std_logic;
begin
reg1: reg32 PORT MAP (q=>q1,d=>destdata,c=>c1);
reg2: reg32 PORT MAP (q=>q2,d=>destdata,c=>c2);
srcmux1: MUX32_2_1 PORT MAP (a=>q1, b=>q2, c=>srcdata1, x=>regsrc1);
srcmux2: MUX32_2_1 PORT MAP (a=>q1, b=>q2, c=>srcdata2, x=>regsrc2);
c1 <= en and not regdest;
c2 <= en and regdest;
end;
library ieee;
use ieee.std_logic_1164.all;
-- use std.textio.all;
-- use ieee.std_logic_textio.all;
entity registerset2_32testbench is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of registerset2_32testbench is
component registerset2_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic;
regsrc2: in std_logic;
regdest: in std_logic;
en: in std_logic
);
end component;
signal destdata: std_logic_vector (31 downto 0);
signal regsrc1: std_logic;
signal regsrc2: std_logic;
signal regdest: std_logic;
signal en: std_logic;
begin
regset_2_32: registerset2_32 PORT MAP (srcdata1=>srcdata1, srcdata2=>srcdata2, destdata=>destdata, regsrc1=>regsrc1, regsrc2=>regsrc2, regdest=>regdest, en=>en);
regdest <= '0' after 0 ns;
destdata <= ('1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 30 ns;
en <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns;
regdest <= '0' after 0 ns;
regsrc1 <= '0' after 0 ns;
regsrc2 <= '0' after 0 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity registerset4_32 is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (1 downto 0);
regsrc2: in std_logic_vector (1 downto 0);
regdest: in std_logic_vector (1 downto 0);
en: in std_logic
);
end;
architecture behaviour of registerset4_32 is
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
component registerset2_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic;
regsrc2: in std_logic;
regdest: in std_logic;
en: in std_logic
);
end component;
signal c1, c2: std_logic;
signal en1, en2: std_logic;
signal srcdata1_1: std_logic_vector (31 downto 0);
signal srcdata1_2: std_logic_vector (31 downto 0);
signal srcdata2_1: std_logic_vector (31 downto 0);
signal srcdata2_2: std_logic_vector (31 downto 0);
begin
mux1: MUX32_2_1 PORT MAP (a=>srcdata1_1, b=>srcdata1_2, c=>srcdata1, x=>regsrc1 (1));
mux2: MUX32_2_1 PORT MAP (a=>srcdata2_1, b=>srcdata2_2, c=>srcdata2, x=>regsrc2 (1));
reg1: registerset2_32 PORT MAP (srcdata1=>srcdata1_1, srcdata2=>srcdata2_1, regsrc1=>regsrc1 (0), regsrc2=>regsrc2 (0), en=>en1, destdata=>destdata, regdest=>regdest (0));
reg2: registerset2_32 PORT MAP (srcdata1=>srcdata1_2, srcdata2=>srcdata2_2, regsrc1=>regsrc1 (0), regsrc2=>regsrc2 (0), en=>en2, destdata=>destdata, regdest=>regdest (0));
en2 <= regdest (1) and en;
en1 <= not regdest (1) and en;
end;
library ieee;
use ieee.std_logic_1164.all;
-- use std.textio.all;
-- use ieee.std_logic_textio.all;
entity registerset4_32testbench is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of registerset4_32testbench is
component registerset4_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (1 downto 0);
regsrc2: in std_logic_vector (1 downto 0);
regdest: in std_logic_vector (1 downto 0);
en: in std_logic
);
end component;
signal destdata: std_logic_vector (31 downto 0);
signal regsrc1: std_logic_vector (1 downto 0);
signal regsrc2: std_logic_vector (1 downto 0);
signal regdest: std_logic_vector (1 downto 0);
signal en: std_logic;
begin
regset_4_32: registerset4_32 PORT MAP (srcdata1=>srcdata1, srcdata2=>srcdata2, destdata=>destdata, regsrc1=>regsrc1, regsrc2=>regsrc2, regdest=>regdest, en=>en);
-- regdest <= ('0','0') after 0 ns;
destdata <= ('1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','0','0','0') after 30 ns, ('1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0') after 40 ns, ('1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1') after 80 ns;
en <= '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 90 ns, '1' after 110 ns, '0' after 120 ns;
regdest <= ('0','0') after 0 ns, ('0','1') after 30 ns, ('1', '0') after 100 ns;
regsrc1 <= ('0','0') after 0 ns, ('0','1') after 30 ns, ('0','0') after 80 ns, ('0', '1') after 90 ns, ('1', '0') after 110 ns, ('0', '1') after 130 ns, ('1', '0') after 140 ns;
regsrc2 <= ('0','0') after 0 ns, ('0','1') after 30 ns;
end;
library ieee;
use ieee.std_logic_1164.all;
entity registerset8_32 is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (2 downto 0);
regsrc2: in std_logic_vector (2 downto 0);
regdest: in std_logic_vector (2 downto 0);
en: in std_logic
);
end;
architecture behaviour of registerset8_32 is
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
component registerset4_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (1 downto 0);
regsrc2: in std_logic_vector (1 downto 0);
regdest: in std_logic_vector (1 downto 0);
en: in std_logic
);
end component;
signal c1, c2: std_logic;
signal en1, en2: std_logic;
signal srcdata1_1: std_logic_vector (31 downto 0);
signal srcdata1_2: std_logic_vector (31 downto 0);
signal srcdata2_1: std_logic_vector (31 downto 0);
signal srcdata2_2: std_logic_vector (31 downto 0);
begin
mux1: MUX32_2_1 PORT MAP (a=>srcdata1_1, b=>srcdata1_2, c=>srcdata1, x=>regsrc1 (2));
mux2: MUX32_2_1 PORT MAP (a=>srcdata2_1, b=>srcdata2_2, c=>srcdata2, x=>regsrc2 (2));
reg1: registerset4_32 PORT MAP (srcdata1=>srcdata1_1, srcdata2=>srcdata2_1, regsrc1=>regsrc1 (1 downto 0), regsrc2=>regsrc2 (1 downto 0), en=>en1, destdata=>destdata, regdest=>regdest (1 downto 0));
reg2: registerset4_32 PORT MAP (srcdata1=>srcdata1_2, srcdata2=>srcdata2_2, regsrc1=>regsrc1 (1 downto 0), regsrc2=>regsrc2 (1 downto 0), en=>en2, destdata=>destdata, regdest=>regdest (1 downto 0));
en2 <= regdest (2) and en;
en1 <= not regdest (2) and en;
end;
library ieee;
use ieee.std_logic_1164.all;
entity registerset16_32 is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (3 downto 0);
regsrc2: in std_logic_vector (3 downto 0);
regdest: in std_logic_vector (3 downto 0);
en: in std_logic
);
end;
architecture behaviour of registerset16_32 is
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
component registerset8_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (2 downto 0);
regsrc2: in std_logic_vector (2 downto 0);
regdest: in std_logic_vector (2 downto 0);
en: in std_logic
);
end component;
signal c1, c2: std_logic;
signal en1, en2: std_logic;
signal srcdata1_1: std_logic_vector (31 downto 0);
signal srcdata1_2: std_logic_vector (31 downto 0);
signal srcdata2_1: std_logic_vector (31 downto 0);
signal srcdata2_2: std_logic_vector (31 downto 0);
begin
mux1: MUX32_2_1 PORT MAP (a=>srcdata1_1, b=>srcdata1_2, c=>srcdata1, x=>regsrc1 (3));
mux2: MUX32_2_1 PORT MAP (a=>srcdata2_1, b=>srcdata2_2, c=>srcdata2, x=>regsrc2 (3));
reg1: registerset8_32 PORT MAP (srcdata1=>srcdata1_1, srcdata2=>srcdata2_1, regsrc1=>regsrc1 (2 downto 0), regsrc2=>regsrc2 (2 downto 0), en=>en1, destdata=>destdata, regdest=>regdest (2 downto 0));
reg2: registerset8_32 PORT MAP (srcdata1=>srcdata1_2, srcdata2=>srcdata2_2, regsrc1=>regsrc1 (2 downto 0), regsrc2=>regsrc2 (2 downto 0), en=>en2, destdata=>destdata, regdest=>regdest (2 downto 0));
en2 <= regdest (3) and en;
en1 <= not regdest (3) and en;
end;
library ieee;
use ieee.std_logic_1164.all;
entity registerset32_32 is
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (4 downto 0);
regsrc2: in std_logic_vector (4 downto 0);
regdest: in std_logic_vector (4 downto 0);
en: in std_logic
);
end;
architecture behaviour of registerset32_32 is
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
component registerset16_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (3 downto 0);
regsrc2: in std_logic_vector (3 downto 0);
regdest: in std_logic_vector (3 downto 0);
en: in std_logic
);
end component;
signal c1, c2: std_logic;
signal en1, en2: std_logic;
signal srcdata1_1: std_logic_vector (31 downto 0);
signal srcdata1_2: std_logic_vector (31 downto 0);
signal srcdata2_1: std_logic_vector (31 downto 0);
signal srcdata2_2: std_logic_vector (31 downto 0);
begin
mux1: MUX32_2_1 PORT MAP (a=>srcdata1_1, b=>srcdata1_2, c=>srcdata1, x=>regsrc1 (4));
mux2: MUX32_2_1 PORT MAP (a=>srcdata2_1, b=>srcdata2_2, c=>srcdata2, x=>regsrc2 (4));
reg1: registerset16_32 PORT MAP (srcdata1=>srcdata1_1, srcdata2=>srcdata2_1, regsrc1=>regsrc1 (3 downto 0), regsrc2=>regsrc2 (3 downto 0), en=>en1, destdata=>destdata, regdest=>regdest (3 downto 0));
reg2: registerset16_32 PORT MAP (srcdata1=>srcdata1_2, srcdata2=>srcdata2_2, regsrc1=>regsrc1 (3 downto 0), regsrc2=>regsrc2 (3 downto 0), en=>en2, destdata=>destdata, regdest=>regdest (3 downto 0));
en2 <= regdest (4) and en;
en1 <= not regdest (4) and en;
end;
-- (C) David Vajda
-- 32 Bit Ripple Carry Chain Adder / Subtrahierer / Volladdierer
-- 2024-12-02
library ieee;
use ieee.std_logic_1164.all;
entity fulladder is
port (
a: in std_logic;
b: in std_logic;
c: out std_logic;
s: in std_logic;
t: out std_logic
);
end;
architecture behaviour of fulladder is
begin
c <= a xor b xor s;
t <= (a and b) or ((a or b) and s);
end;
library ieee;
use ieee.std_logic_1164.all;
entity ripplecarrychainadder32 is
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end;
architecture behaviour of ripplecarrychainadder32 is
component fulladder
port (
a: in std_logic;
b: in std_logic;
c: out std_logic;
s: in std_logic;
t: out std_logic
);
end component;
signal x: std_logic_vector (32 downto 0);
begin
fa_loop: FOR i IN 31 DOWNTO 0 GENERATE
fa: fulladder PORT MAP (a=>a(i), b=>b(i), c=>c(i), s=>x(i), t=>x(i+1));
END GENERATE;
t <= x (32) ;
x (0) <= s;
--fa3: fulladder20241128 PORT MAP (a=>a3, b=>b3, c=>c3, s=>s3, t=>t);
--fa2: fulladder20241128 PORT MAP (a=>a2, b=>b2, c=>c2, s=>s2, t=>s3);
--fa1: fulladder20241128 PORT MAP (a=>a1, b=>b1, c=>c1, s=>s1, t=>s2);
--fa0: fulladder20241128 PORT MAP (a=>a0, b=>b0, c=>c0, s=>s, t=>s1);
end;
library ieee;
use ieee.std_logic_1164.all;
entity ripplecarrychainadder32testbench is
port (
c: out std_logic_vector (31 downto 0);
t: out std_logic
);
end;
architecture behaviour of ripplecarrychainadder32testbench is
component ripplecarrychainadder32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end component;
signal a: std_logic_vector (31 downto 0);
signal b: std_logic_vector (31 downto 0);
signal s: std_logic;
begin
rplcadd: ripplecarrychainadder32 PORT MAP (c=>c, b=>b, a=>a, s=>s, t=>t);
-- 19219 + 14823 = 34042
-- 0b100101100010011 + 0b11100111100111 = 0b1000010011111010
a <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 20 ns;
b <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','1','1', '1','0','0','1', '1','1','1','0', '0','1','1','1') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','1','1', '1','0','0','1', '1','1','1','0', '0','1','1','1') after 20 ns;
s <= '0';
end;
library ieee;
use ieee.std_logic_1164.all;
entity com32 is
port (
x: in std_logic_vector (31 downto 0);
y: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of com32 is
begin
com_connect: FOR i IN 31 DOWNTO 0 GENERATE
y (i) <= not x (i);
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity neg32 is
port (
b: out std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
t: out std_logic
);
end;
architecture behaviour of neg32 is
component com32
port (
x: in std_logic_vector (31 downto 0);
y: out std_logic_vector (31 downto 0)
);
end component;
component ripplecarrychainadder32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end component;
signal c: std_logic_vector (31 downto 0);
signal d: std_logic_vector (31 downto 0);
signal s: std_logic;
begin
neg32_generate_1: FOR i IN 31 DOWNTO 0 GENERATE
d (i) <= '0';
END GENERATE;
s <= '1';
com: com32 PORT MAP (x=>a, y=>c);
add: ripplecarrychainadder32 PORT MAP (b=>d, a=>c, s=>s, t=>t, c=>b);
end;
library ieee;
use ieee.std_logic_1164.all;
entity sub32 is
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
t: out std_logic
);
end;
architecture behaviour of sub32 is
component ripplecarrychainadder32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end component;
component neg32
port (
b: out std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
t: out std_logic
);
end component;
signal x: std_logic_vector (31 downto 0);
signal s: std_logic;
begin
neg: neg32 PORT MAP (a=>a, b=>x);
add: ripplecarrychainadder32 PORT MAP (b=>b, a=>x, c=>c, s=>s, t=>t);
s <= '0';
end;
library ieee;
use ieee.std_logic_1164.all;
entity sub32testbench is
port (
c: out std_logic_vector (31 downto 0);
t: out std_logic
);
end;
architecture behaviour of sub32testbench is
component sub32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
t: out std_logic
);
end component;
signal a: std_logic_vector (31 downto 0);
signal b: std_logic_vector (31 downto 0);
signal s: std_logic;
begin
sub: sub32 PORT MAP (a=>a, b=>b, c=>c, t=>t);
a <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','1','1', '1','0','0','1', '1','1','1','0', '0','1','1','1') after 10 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','1','1', '1','0','0','1', '1','1','1','0', '0','1','1','1') after 20 ns;
b <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','1','1', '1','0','0','1', '1','1','1','0', '0','1','1','1') after 0 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 10 ns, ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','1','0','0', '1','0','1','1', '0','0','0','1' ,'0','0','1','1') after 20 ns;
s <= '0' after 0 ns, '1' after 10 ns;
-- 19219 - 14823 =
end;
library ieee;
use ieee.std_logic_1164.all;
entity or32 is
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of or32 is
begin
genor32: FOR i IN 31 DOWNTO 0 GENERATE
c (i) <= b (i) or a (i);
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity and32 is
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of and32 is
begin
genand32: FOR i IN 31 DOWNTO 0 GENERATE
c (i) <= b (i) and a (i);
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity sram is
port (
en: in std_logic;
addrs: in std_logic_vector (31 downto 0);
writedata: in std_logic_vector (31 downto 0);
readdata: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of sram is
begin
readdata <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','1','0','0');
end;
library ieee;
use ieee.std_logic_1164.all;
entity prom is
port (
addrs: in std_logic_vector (31 downto 0);
readdata: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of prom is
begin
end;
library ieee;
use ieee.std_logic_1164.all;
entity ALU is
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic_vector (2 downto 0);
t: out std_logic;
nul: inout std_logic;
globalcarryflag: out std_logic
);
end;
architecture behaviour of ALU is
component ripplecarrychainadder32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end component;
component sub32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
t: out std_logic
);
end component;
component and32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0)
);
end component;
component or32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0)
);
end component;
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
signal z4, z3, z2, z1: std_logic;
signal x3, x2, x1: std_logic;
signal csub: std_logic_vector (31 downto 0);
signal cor: std_logic_vector (31 downto 0);
signal cmux1: std_logic_vector (31 downto 0);
signal cmux2: std_logic_vector (31 downto 0);
signal cadd: std_logic_vector (31 downto 0);
signal cand: std_logic_vector (31 downto 0);
signal sadd: std_logic;
signal d: std_logic_vector (31 downto 0);
begin
-- 010 add
-- 110 sub
-- 000 and
-- 001 or
-- 111 slt set less than
mux1: MUX32_2_1 PORT MAP (a=>cadd, b=>csub, c=>cmux1, x=>x1);
mux2: MUX32_2_1 PORT MAP (a=>cand, b=>cor, c=>cmux2, x=>x2);
mux3: MUX32_2_1 PORT MAP (a=>cmux1, b=>cmux2, c=>d, x=>x3);
add1: ripplecarrychainadder32 PORT MAP (a=>a, b=>b, s=>sadd, t=>globalcarryflag, c=>cadd);
sub1: sub32 PORT MAP (a=>a, b=>b, t=>globalcarryflag, c=>csub);
and1: and32 PORT MAP (a=>a, b=>b, c=>cand);
or1: or32 PORT MAP (a=>a, b=>b, c=>cor);
z1 <= (not s (2) and s (1) and not s (0));
z2 <= (s(2) and s(1) and not s(0));
z3 <= (not s (2) and not s (1) and not s (0));
z4 <= (not s (2) and not s (1) and s (0));
--
-- z4 z3 z2 z1 x3 x2 x1
-- 0 0 0 1 0 x 0
-- 0 0 1 0 0 x 1
-- 0 1 0 0 1 1 x
-- 1 0 0 0 1 0 x
-- x3 <= z3 or z4
-- x2 <= z3
-- x1 <= z2
x3 <= z3 or z4;
x2 <= z3;
x1 <= z2;
sadd <= '0';
c <= d;
nul <= d (31);
testnull: FOR i IN 30 DOWNTO 0 GENERATE
nul <= d (i) nor nul;
END GENERATE;
end;
library ieee;
use ieee.std_logic_1164.all;
entity opdecode is
port (
opcode: in std_logic_vector (5 downto 0);
memtoreg: out std_logic;
memwrite: out std_logic;
branch: out std_logic;
alusrc: out std_logic;
regdst: out std_logic;
regwrite: out std_logic;
aluop: out std_logic_vector (1 downto 0)
);
end;
architecture behaviour of opdecode is
begin
end;
library ieee;
use ieee.std_logic_1164.all;
entity funcdecode is
port (
aluop: in std_logic_vector (1 downto 0);
func: in std_logic_vector (5 downto 0);
aluoperation: out std_logic_vector (2 downto 0)
);
end;
architecture behaviour of funcdecode is
begin
end;
library ieee;
use ieee.std_logic_1164.all;
entity Bit2Shift is
port (
a: in std_logic_vector (31 downto 0);
b: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of Bit2Shift is
begin
b <= a;
end;
library ieee;
use ieee.std_logic_1164.all;
entity signunit is
port (
a: in std_logic_vector (15 downto 0);
b: out std_logic_vector (31 downto 0)
);
end;
architecture behaviour of signunit is
begin
b <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0');
end;
library ieee;
use ieee.std_logic_1164.all;
entity mips32 is
port (
globalCPUCLK: in std_logic
);
end;
architecture behaviour of mips32 is
component registerset32_32
port (
srcdata1: out std_logic_vector (31 downto 0);
srcdata2: out std_logic_vector (31 downto 0);
destdata: in std_logic_vector (31 downto 0);
regsrc1: in std_logic_vector (4 downto 0);
regsrc2: in std_logic_vector (4 downto 0);
regdest: in std_logic_vector (4 downto 0);
en: in std_logic
);
end component;
component ALU
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic_vector (2 downto 0);
t: out std_logic;
nul: inout std_logic;
globalcarryflag: out std_logic
);
end component;
-- 4 x MUX
component MUX32_2_1
port (
c: out std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
a: in std_logic_vector (31 downto 0);
x: in std_logic
);
end component;
component MUX5_2_1
port (
c: out std_logic_vector (4 downto 0);
b: in std_logic_vector (4 downto 0);
a: in std_logic_vector (4 downto 0);
x: in std_logic
);
end component;
-- befehlszaehler, addierer + 4 u Sprung 2x Addierer
component ripplecarrychainadder32
port (
a: in std_logic_vector (31 downto 0);
b: in std_logic_vector (31 downto 0);
c: out std_logic_vector (31 downto 0);
s: in std_logic;
t: out std_logic
);
end component;
component Bit2Shift
port (
a: in std_logic_vector (31 downto 0);
b: out std_logic_vector (31 downto 0)
);
end component;
component signunit
port (
a: in std_logic_vector (15 downto 0);
b: out std_logic_vector (31 downto 0)
);
end component;
component sram
port (
en: in std_logic;
addrs: in std_logic_vector (31 downto 0);
writedata: in std_logic_vector (31 downto 0);
readdata: out std_logic_vector (31 downto 0)
);
end component;
component prom
port (
addrs: in std_logic_vector (31 downto 0);
readdata: out std_logic_vector (31 downto 0)
);
end component;
component reg32
port (
q: out std_logic_vector (31 downto 0);
d: in std_logic_vector (31 downto 0);
c: in std_logic
);
end component;
component opdecode
port (
opcode: in std_logic_vector (5 downto 0);
memtoreg: out std_logic;
memwrite: out std_logic;
branch: out std_logic;
alusrc: out std_logic;
regdst: out std_logic;
regwrite: out std_logic;
aluop: out std_logic_vector (1 downto 0)
);
end component;
component funcdecode
port (
aluop: in std_logic_vector (1 downto 0);
func: in std_logic_vector (5 downto 0);
aluoperation: out std_logic_vector (2 downto 0)
);
end component;
signal op: std_logic_vector (31 downto 0);
signal aluop: std_logic_vector (1 downto 0);
signal func: std_logic_vector (5 downto 0);
signal aluoperation: std_logic_vector (2 downto 0);
signal memtoreg: std_logic;
signal memwrite: std_logic;
signal branch: std_logic;
signal alusrc: std_logic;
signal regdst: std_logic;
signal regwrite: std_logic;
signal pcsrc: std_logic;
signal regdest: std_logic_vector (4 downto 0);
signal aALUOperandBus, bALUOperandBUS, cALUOperandBus: std_logic_vector (31 downto 0);
signal signunitBUS: std_logic_vector (31 downto 0);
signal memReadData: std_logic_vector (31 downto 0);
signal destdata: std_logic_vector (31 downto 0);
signal srcdata1: std_logic_vector (31 downto 0);
signal srcdata2: std_logic_vector (31 downto 0);
signal nulbit: std_logic;
signal pcBUSplus: std_logic_vector (31 downto 0);
signal pcBUS: std_logic_vector (31 downto 0);
signal Value32_4: std_logic_vector (31 downto 0);
signal add1cBus: std_logic_vector (31 downto 0);
signal add2cBus: std_logic_vector (31 downto 0);
signal Bit2ShiftBus: std_logic_vector (31 downto 0);
signal Value1_0: std_logic;
signal nullbit: std_logic;
begin
funcdecode1: funcdecode PORT MAP (aluoperation=>aluoperation,func=>func,aluop=>aluop);
opdecode1: opdecode PORT MAP (opcode=>op(31 downto 26), aluop=>aluop, memtoreg => memtoreg, memwrite => memwrite, branch => branch, alusrc => alusrc, regdst => regdst, regwrite => regwrite);
mux1: MUX5_2_1 PORT MAP (a=>op (20 downto 16), b=> op (15 downto 11), c=>regdest, x=>regdst);
mux2: MUX32_2_1 PORT MAP (a=>srcdata1, b=>signunitBUS, c=>bALUOperandBUS, x=>alusrc);
mux3: MUX32_2_1 PORT MAP (a=>cALUOperandBus, b=>memReadData, c=>destdata, x=>memtoreg);
mux4: MUX32_2_1 PORT MAP (b=>add2cBus, a=>add1cBus, c=>pcBUSplus, x=>pcsrc);
signunit1: signunit PORT MAP (a=>op (15 downto 0), b=>signunitBUS);
Bit2Shift1: Bit2Shift PORT MAP (a=>signunitBUS, b=>Bit2ShiftBUS);
add1: ripplecarrychainadder32 PORT MAP (a=>pcBUS, b=>Value32_4, c=>add1cBus, s=>Value1_0);
add2: ripplecarrychainadder32 PORT MAP (a=>Bit2ShiftBus, b=>add1cBUS, c=>add2cBUS, s=>Value1_0);
pc: reg32 PORT MAP (q=>pcBUS, d=>pcBUSplus, c=>globalCPUCLK);
alu1: alu PORT MAP (a=>srcdata1, b=>bALUOperandBUS, c=>cALUOperandBus, s=>aluoperation, nul=>nullbit);
regset1: registerset32_32 PORT MAP (regdest=>regdest, destdata=>destdata, srcdata1=>srcdata1, srcdata2=>srcdata2, en=>regwrite, regsrc1=>op (25 downto 21), regsrc2=>op (20 downto 16));
sram1: sram PORT MAP (en=>memwrite, addrs=>cALUOperandBus, writedata=>srcdata2, readdata=>memReadData);
prom1: prom PORT MAP (addrs=>pcBUS, readdata=>op);
pcsrc <= nullbit and branch;
Value32_4 <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','1','0','0');
Value1_0 <= '0';
op (25 downto 21) <= ('0','0','0','0','0');
op (20 downto 16) <= ('0','0','0','0','0');
regdest <= ('0','0','0','0','0') after 0 ns, ('0','0','0','0','0') after 3 ns;
regwrite <= '0' after 0 ns, '1' after 1 ns, '0' after 2 ns, '0' after 3 ns, '1' after 4 ns, '0' after 5 ns;
destdata <= ('0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0', '0','0','0','0' ,'0','1','0','0') after 0 ns;
end;
So, also jetzt funktioniert die Sache schon 100-prozentig und lässt sich übersetzen. Deswegen tut die Sache nur der Unterschied ist halt, dass also die Befehle noch nicht implementiert sind. Jetzt müssen wir den Datenspeicher nicht implementieren weil wir haben ihm nur zwei Befehle. Uns ist eines in Addition, Befehl und das andere ist ein Datentransfer Befehl mit konstanten so und da brauchen wir den Datenspeicher nicht weil es findet in den Registern statt und deswegen hab ich da einfach ein leeres Ding gemacht was einfach nichts wiedergibt. Das ist eine und das andere ist der Befehl Dekodierung Funktion dekodieren, die sind ganz schnell umgesetzt. Die müssen ja sozusagen nur genau zwei Befehle herhalten und die müssen einfach wenn der Befehl reinkommt. Entsprechend müssen müssen Sie entsprechend umsetzen. Ist nicht besonders schwierig ebenso muss genau dieser Befehl von dem ich gerade geredet hat muss dann in den Programm Speicher der muss dann da hintereinander rein aber da muss man keine komplizierten Register benutzen, weil da kann man einfach Tupel nehmen weil mit diesem Tupel, die braucht man einfach nach den Reihen nach wiederzugeben. Ein bisschen umständlich ist es. Ich mach maximal acht Befehle wenn man muss sozusagen dann bei acht Befehlen drei bitte abfragen und dann entsprechend das entsprechende wiedergeben. So das ist das eine und das andere ist, dann müsste man halt sehen, dass in Registers Satz addiert wurde entsprechend und dann kommt noch das letzte das muss unbedingt unbedingt rein bei dem Befehl Reset sonst wird die Sache nicht funktionieren. Das mache ich mit After wie sonst auch das also zu sagen die einzelnen Bit sozusagen nach einem gewissen Zeit abstehenden, sozusagen dann erst mal in die Register eins nach dem anderen auf null gesetzt werden sonst kommt's nachher zu Komplikationen und das muss man als erstes durchlaufen lassen und dann kann man nach und nach die Befehle abfragen
Hier sind die OpCodes, das setze ich jetzt um, und - ich nehme addi, das kann ich zu 0 addieren, damit - weil ich kein li benutze.
Geht mit addi nicht ist es richtig, dass in der zwei Register das ist schon klar
Geht anders, obwohl die Komponenten Verschaltet sind kann ich auf das Signal sozusagen von außen oder zwischendrin zugreifen und es dann initialisieren und dann kann ich auch einen einzigen@Befehl sozusagen also add umsetzen und dann musst es schon gehen
Also das Problem ist es geht so nicht das ist das Problem weil wenn ich das jetzt intern setze, dann wird es trotzdem nicht gesetzt bleiben weil das führt ihn wieder zurück
Mich jetzt einen Trick bedient erst mal war and und or falsch codiert Zweitens hab ich das logische und so gemacht das ist einfach alles auf Null setzt und bisher sieht's gut aus.
Okay, das Ding ist okay. Also erst mal funktioniert sagen wir so da hat sich ein ganz kleiner Fehler eingeschlichen in den gesamten Quelltext. Da ist sagen wir also nicht im Quelltext aber in dem in dem ganzen Blogdiagramm ist ein Fehler. Wenn sie den finden, dann garantiere ich Ihnen Sind Sie mindestens so gut wie ich, dass sie das in VHDL hinschreiben, oder sie sind so gut, dass sie sich das angucken und den VHDL in ihrem Kopf und dabei haben sie auf einmal alles in ihrem Blick. Ich kann ihn erklären das ist ein klitzekleines Problem. Gibt ne kleine Abweichung brauchen Sie. Ich gebe Ihnen Tipp, wenn Sie den Kurs studiert haben, dann können Sie das Wort Zustandselemente und sie müssen sich da keine Sorgen machen.
Eines kann ich Ihnen garantieren den Datenpfad, den ich haben wollte den hat es zu 100 % bedient dass es sicher es hat das getan, was zu tun ist, in dem ich nämlich durch die alu etwas durchgeschickt habe in dem sie die Steuer Wort übernommen hat. Aber denken Sie nach, wo ist der Fehler ich meine sagen wir mal so das Programm würde mit der gewissen abwechslungsreich befehlen wird es Anfang das Richtige zu tun, wenn sie Abwechslung in den Arbeitsspeicher schreiben und Abwechselnd in die Register dann werden Sie das Problem wahrscheinlich los und wahrscheinlich viele Probleme. hinkriegen beim Programmieren ich sag ihm so ein garantieren, dass ein Schaltwerk nicht so funktioniert, wenn sie einmal eins anlegen dann läuft das Ding weiter. Sie müssen immer damit rechnen so sehr sie das Wort wahrscheinlich rising Edge und falling Edge, das ist nichts besonderes das hat nicht die Bedeutung, wie man manchmal malen könnte. Das ist keine Fuzzi Logik. Müsste sich keine Gedanken drüber Sanson Fehler nur wissen Sie Schaltwerk hat halt zwei Zustände. Die müssen rauf und runtergehen. Jetzt singen sie mal nach, was passieren würde. Selbst wenn sie den Takt anlegen dann passiert was ganz komisches. Wenn sie nämlich ist, den Befehl Dekoda nicht mit dem Takt bedienen also den Befehl die Coder der Wechsel zwar jetzt Schöner Weise das Wasser ausgibt, aber unter Umständen bleibt halt das EN also des WE an unserem Registers Satz, ständig eins und wissen Sie, was das vom Schaltwerk bedeutet das ist nämlich das verrückte an der Geschichte. Eigentlich könnten wir ja meinen unter Schaller arbeitet gar nicht. Nein das stimmt nicht. Unser Befehl Speicher läuft mit jedem Takt immer weiter das besteht auch nicht die Gefahr. Letztenendes wenden unser Befehl speicher denn ein einen Takt hätte das hat er in dem Fall nicht, der bei rauf den Befehl liefert und dann bitteschön übernimmt. Ein Flipflop hat immer zwei Zustände, unterscheidet es massiv von anderen. Sie müssen den Clock einspeisen und wenn sie runtergehen dann so und es fehlt übrigens auch an unserem Befehl Speicher in diesem Falle würde der durchlaufen. 
 soll nicht passieren umgekehrt. Wenn er das nicht tut, dann müssen Sie keine Sorge haben dann geht ein Befehl nach dem anderen Takt für Takt. Das macht es von alleine. Jetzt haben sie aber ein Problem. Jetzt denken Sie nachher, sie müssen die Alu rauf und runter schalten nein, müssen Sie alles nicht machen das einzige was in unserem komplexen Schaltwerk unter Computer ist ja sozusagen komplexe Schaltwerk mit einer Besonderheit. Es ist ein Operations Werk des arbeitet nach dem Prinzip, das ist universell ist und damit ein Rechenwerk d.h. es hat ein eine ALU und ein Registers, Satz und Leitwerk ist einfach ein Umschalt Barez steuerwerk dadurch dass Befehle versteht gut jetzt passiert aber gar nicht viel weil sie haben halt ihre Zustandselemente reißen die das sind also unsere Register und das ist unser Arbeitsspeicher. Aber der hat ein Problem das ist halt auch ein Speicher und der geht rauf und runter und wenn er das nicht tut, dann übernimmt er keine Daten nicht nur dass er die zwar übernimmt und die nicht ankommen. Das funktioniert alles fabelhaft. Aber erst wenn wieder das Low erreicht ist, werden die Daten dann übernommen und es fehlt an der Sache, weil unser Befehl dekodieren das hab ich jetzt in Ordnung gebracht. Der hat leider keinen Eingang für einen Takt und das ist nicht gut weil sie müssen sozusagen eine logische Umschaltung machen, dass jedes Mal wenn der Takt nach oben geht dann schaltet das IN oder das WE egal wo auf nullbeziehungsweise auf eins also dann geht's auf eins nach oben und wenn der Takt aber wieder runtergeht, dann musst du es mitschwingen. Dann muss nämlich jedes WE wieder deaktiviert werden sonst funktioniert das nicht. Das hab ich jetzt gemacht und damit funktioniert der Prozessor eigentlich schon