Sunteți pe pagina 1din 12

library ieee;

use ieee.std_logic_1164.all;
use ieee.numeric_std.all;


entity core_test is
port(clk1:in bit;
datain1,datain2,datain3,datain4 : in std_logic;
div_factor : in integer;
dataout1,dataout2,dataout3,dataout4:out std_logic;
time : out integer);
end core_test;

architecture arch_core of core_test is

signal q1,q2,q3,q4,s1,s2,s3,s4,s5,s6,carry,diff : std_logic;
signal k : integer:=0;-- integer
signal time11_sig : integer;

begin

process(clk1)

variable count:integer:=0;
variable time1 : integer:=0;
variable timesig : integer:=0;
variable time11 : integer;
variable dataout4_sig : std_logic;

--variable count : integer;
begin



if clk1'event then



if time11_sig =100 then
q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';
q4<=dataout4_sig;
elsif time11_sig=200 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';
q4<=dataout4_sig;

elsif time11_sig=300 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';
q4<=dataout4_sig;

elsif time11_sig=400 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
q4<=dataout4_sig;



elsif(time11_sig=500 ) then


q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';
-- q4<='U';


elsif time11_sig=600 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';
-- q4<='U';

elsif time11_sig=700 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';



elsif time11_sig=400 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';

q4<=dataout4_sig;


elsif (time11_sig=900 ) then
q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';


elsif time11_sig=1000 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';

elsif time11_sig=1100 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';


elsif time11_sig=1200 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
q4<=dataout4_sig;





elsif (time11_sig=1300 ) then





q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';


elsif time11_sig=1400 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q2<='U';
q1<='U';

elsif time11_sig=1500 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';


elsif time11_sig=1600 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
-- q2<='U';
-- q1<='U';
q4<=dataout4_sig;






elsif (time11_sig=1700 ) then
q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';


elsif time11_sig=1800 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';

elsif time11_sig=1900 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;

q2<='U';
q1<='U';


elsif time11_sig=2000 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
-- q2<='U';
-- q1<='U';
q4<=dataout4_sig;


elsif (time11_sig=2100 ) then
q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';


elsif time11_sig=2200 then

q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';

elsif time11_sig=2300 then


q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';
-- end if;
--elsif time1=time1+400 then
elsif time11_sig=2400 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
-- q2<='U';
-- q1<='U';
q4<=dataout4_sig;



elsif (time11_sig=2500 ) then
q1 <= datain1 and datain2 and datain3 and datain4;
q2<='U';
q3<='U';

--end if;
elsif time11_sig=2600 then
--- elsif time1=time1+100 then
q2<=datain1 xor datain2 xor datain3;
s1 <= datain1 and datain2;
s2<= datain1 xor datain2;
s3<=s2 and datain3;
carry <= s3;
q1<='U';
q3<='U';

--end if;
elsif time11_sig=2700 then

--elsif time1=time1+200 then
q3<=datain2 xor datain3 xor datain4;
s4 <= not datain2 and datain3;
s5<= datain1 xor datain2;
s6<= not s2 and datain3;
diff <= s3;
q2<='U';
q1<='U';
-- end if;
--elsif time1=time1+400 then

elsif time11_sig=2800 then
if(count<div_factor) then

count:=count+1;
dataout4<='0';
dataout4_sig:='0';
else

count:=0;
dataout4<='1';
dataout4_sig:='1';
end if;

q2<='U';
q1<='U';
q3<='U';
-- q2<='U';
-- q1<='U';
q4<=dataout4_sig;
end if;




time<=time1+100;
time11:=time1+100;
time11_sig<=time11;

time1:=time1+100;
end if;

dataout1<=q1;
dataout2<=q2;
dataout3<=q3;
dataout4<=q4;

end process;

end arch_core;




MULTICLOCK OUTPUT :










CORE OUTPUT :

S-ar putea să vă placă și