You are on page 1of 9

Estado Condiciones Estado Acciones

Presente Futuro
S0 Datain(0) = '0'
SI

-> datain(12…8)/=0 S25 dir<=dir-1;


SI dtin<= datain;
wea<="1";

-> S0 dir<= dir + 1;


NO dataout<=(others=>'0');

S1 dtin<= datain;
NO dir<=dir-1;

S1 dataout(1…0)<=dtin(1)&'0';
dataout(5)<='0';
wea <="1";

dtin(5)= '0' S101 dataout(12…8)<=dtin(12…8);


SI dataout(7)<=dtin(7);

S21
NO

-> dtin(6)='1' dataout(6)<=dtin(6);


SI dataout(12… 8)<="00000";

dataout(12… 8)<="11111";
NO
S101 S100 wea<="0";
S100 dtin(12… 8)/=0 and f/="11" S22 dirf<=dir;
SI f<="00";

S2 f<="00";
NO
S2 S11 dataout(12 downto 8)<="00000";
dtin(1)='0'
SI
-> dtin(4..2)
000 dir<= dir+"000000000001";
--> r(1…0) dataout(4… 2) <="000";
00
dir<= (dir(11… 6)-"000001")&(dir(5…
01 0)+"000001");
dataout(4… 2) <= "001";

dir<= (dir(11…6)+"000001")&(dir(5…
10 0)+"000001");
dataout(4 downto 2) <= "111";

Null;
11

001
--> r(1…0) dir<= (dir(11…6)-"000001")&(dir(5…
00 0)+"000001");
dataout(4… 2) <= "001";

dir<= (dir(11… 6)-"000001")&dir(5…


01 0);
dataout(4… 2) <= "010";

10 dir<= dir+"000000000001";
dataout(4… 2) <= "000";

11 Null;

010
--> r(1…0)
00 dir<= (dir(11…6)-"000001")&(dir(5…
0));
dataout(4… 2) <= "010";
01
dir<= (dir(11… 6)-"000001")&(dir(5…
0)- "000001");
dataout(4… 2) <= "011";
10
dir<= (dir(11… 6)-"000001")&(dir(5…
0)+"000001");
dataout(4… 2) <= "001";
11
Null;
011
--> r(1…0)
00
dir<= (dir(11… 6)-"000001")&(dir(5…
0)-"000001");
dataout(4 downto 2) <= "011";
01
dir<= dir(11… 6)&(dir(5…
0)-"000001");
10 dataout(4… 2) <= "100";
dir<= (dir(11… 6)-"000001")&dir(5…
11 0);
dataout(4… 2) <= "010";

100 Null;
--> r(1…0)
00

01 dir<= dir(11… 6)&(dir(5…


0)-"000001");
dataout(4… 2) <= "100";

10 dir<= (dir(11…6)+"000001")&(dir(5…
0)-"000001");
dataout(4 downto 2) <= "101";

11 dir<= (dir(11… 6)-"000001")&(dir(5…


0)-"000001");
dataout(4… 2) <= "011";

101 Null;
--> r(1…0)
00

01 dir<= (dir(11… 6)+"000001")&(dir(5…


0)-"000001");
dataout(4… 2) <= "101";
10
dir<= (dir(11… 6)+"000001")&dir(5…
0);
11 dataout(4… 2) <= "110";

dir<= dir(11… 6)&(dir(5…


110 0)-"000001");
--> r(1…0) dataout(4… 2) <= "100";
00
Null;

01

dir<= (dir(11… 6)+"000001")&dir(5…


10 0);
dataout(4… 2) <= "110";

dir<= (dir(11… 6)+"000001")&(dir(5…


11 0)+"000001");
dataout(4… 2) <= "111";

dir<= (dir(11… 6)+"000001")&(dir(5…


111 0)-"000001");
--> r(1…0) dataout(4… 2) <= "101";
00
Null;

01

10 dir<= (dir(11… 6)+"000001")&(dir(5…


0)+"000001");
dataout(4… 2) <= "111";
11
dir<= dir+"000000000001";
Otros casos dataout(4… 2) <= "000";

dir<= (dir(11… 6)+"000001")&dir(5…


NO 0);
-> Dtin(4…2) dataout(4… 2) <= "110";
000
Null;

001 Null;

010 dir<= dir(11… 6)&(dir(5…


0)-"000001");
dataout(4… 2) <= "100";
011
dir<= (dir(11… 6)+"000001")&(dir(5…
0)+"000001");
dataout(4… 2) <= "111";

100 dir<= (dir(11… 6)+"000001")&dir(5…


0);
dataout(4… 2) <= "110";
101
dir<= (dir(11… 6)+"000001")&(dir(5…
0)-"000001");
dataout(4… 2) <= "101";
110

dir<= dir+"000000000001";
111 dataout(4… 2) <= "000";

dir<= (dir(11… 6)-"000001")&(dir(5…


0)+"000001");
Otros dataout(4… 2) <= "001";

dir<= (dir(11… 6)-"000001")&dir(5…


0);
dataout(4… 2) <= "010";

dir<= (dir(11… 6)-"000001")&(dir(5…


0)-"000001");
dataout(4… 2) <= "011";

Null;
S11 S12 Nada;
S12 S13 dtin(6)<=datain(6);
dtin(7) <= datain(7);
dtin(1) <= datain(1);
dtin(12… 8) <= datain(12… 8);
S13 S14 wea <= "1";
dataout(1)<=dtin(1);
dataout(7)<=dtin(7);
dataout(0)<='1';

dtin(6)='1' dataout(5)<= '1';


SI dataout(12… 8)<="11111";

dataout(12…8)<=dtin(12… 8);
NO

dtin(5)='1' dataout(6)<=dtin(6);
SI

dataout(6)<='0';
NO

S14 contador = 5000000 S15 contador <= (others =>'0');


SI y<=y+1;

S14 contador <= contador +1;


NO
S15 S16 wea<="0";
dir<= dir + 2;
dtin<=(others=> '0');
S16 S0
S17 wea<="0";
dirf<=dir;
f<=(others=>'0');

dir(11… 6)>"011011" dir(11… 6)<=dir(11… 6)-1;


SI
dir(5… 0)<=dir(5… 0)-1;
-> dir(5… 0)>"100000"
SI dir(5… 0)<=dir(5… 0)+1;

-> dir(5… 0)<"100000" Null;


SINO

->
NO
dir(11…. 6)<"011011" dir(11… 6)<=dir(11… 6)+1;
SINO
dir(5… 0)<=dir(5… 0)-1;
-> dir(5… 0)>"100000"
SI dir(5… 0)<=dir(5… 0)+1;

->dir(5… 0)<"100000" Null;


SINO

->
NO

NO
dir(5… 0)<=dir(5… 0)-1;
-> dir(5… 0)>"100000"
SI dir(5… 0)<=dir(5… 0)+1;

-> dir(5… 0)<"100000" Null;


SINO

->
NO
S18 dtin(7)='1' S19 dtin(12… 8)<="00000";
SI

Null;
NO

datain(5)='1' dtin(6)<=datain(6);
SI

Null;
NO
S19 S20 dtin(6)<=datain(6);
dtin(7)<=datain(7);
S20 S14 wea<="1";
dataout(0)<=dtin(0);

dtin(7)='1' dataout(5)<='0';
SI dataout(12… 8)<="00000";
dataout(7)<='1';

dataout(7)<=dtin(7);
NO dataout(5)<=dtin(5);

dtin(6)='1' dataout(12… 8)<="00000";


SI

dataout(12… 8)<=dtin(12… 8);


NO

dtin(5)='1' dataout(6)<= dtin(6);


SI
Null;
NO

S21 S17 dirf<=dir;


S22 dtin(6)='0'
SI
-> dir(11… 6)>"011011"
SI
--> dir(5… 0)>"100000" S23 dir<=dir(11… 6)&(dir(5…
SI 0)+"000001");
--->f(1… 0) S23
00 dir<=(dir(11… 6)+"000001")&dir(5…
S23 0);
01
dir<=(dir(11… 6)+"000001")&(dir(5…
10 S100 0)+"000001");
Nada;

Otros
S23
-->dir(5… 0)<"100000" dir<=dir(11… 6)&(dir(5…
SINO S23 0)-"000001");
---> f(1… 0)
00 S23 dir<=(dir(11… 6)+"000001")&dir(5…
0);
10 S100
dir<=(dir(11… 6)+"000001")&(dir(5…
01 0)-"000001");
Nada;
Otros S23

-->
NO S23 dir<=(dir(11… 6)+"000001")&(dir(5…
---> f(1… 0) 0)+"000001");
00 S23
dir<=(dir(11… 6)+"000001")&dir(5…
S100 0);
10
dir<=(dir(11… 6)+"000001")&(dir(5…
01 0)-"000001");
Nada;
Otros S23

-> dir(11… 6)<"011011" S23


SINO
--> dir(5… 0)>"100000" S23 dir<=dir(11… 6)&(dir(5…
SI 0)+"000001");
---> f(1… 0) S100
00 dir<=(dir(11… 6)-"000001")&dir(5…
0);
01
dir<=(dir(11… 6)-"000001")&(dir(5…
10 S23 0)+"000001");
Nada;
Otros S23

--> dir(5… 0)<"100000" S23


SINO
---> f(1… 0) S100 dir<=dir(11…6)&(dir(5…
00 0)-"000001");

10 dir<=(dir(11… 6)-"000001")&dir(5…
S23 0);
01
dir<=(dir(11… 6)-"000001")&(dir(5…
Otros S23 0)-"000001");
Nada;
--> S23
NO
---> f(1… 0) S100
dir<=(dir(11… 6)-"000001")&(dir(5…
00 0)+"000001");

dir<=(dir(11… 6)-"000001")&dir(5…
10 S23 0);

01 dir<=(dir(11… 6)-"000001")&(dir(5…
S23 0)-"000001");
Otros Nada;
S23
->
NO S100
--> dir(5… 0)>"100000"
SI dir<=(dir(11… 6)+"000001")& (dir(5…
---> f(1… 0) 0)+"000001");
00 S23
dir<=dir(11… 6)&(dir(5…
0)+"000001");
01 S23
dir<=(dir(11… 6)-"000001")&(dir(5…
10 S23 0)+"000001");
Nada;
Otros S100

--> dir(5… 0)<"100000"


SINO S1 dir<=(dir(11… 6)+"000001")&(dir(5…
---> f(1… 0) 0)-"000001");
00
dir<=dir(11… 6)&(dir(5…
0)-"000001");
01
dir<=(dir(11… 6)-"000001")&(dir(5…
10 0)-"000001");
Nada;
Otros

NO
S23 S24
S24 datain(12… 8)/=0 S18
SI
S22 dir<=dirf;
f<=f+1;
NO
S25 S26 dataout<= (dtin(12… 8)-1)&dtin(7…
0);
dtin<=(others=>'0');
S26 S27 wea<="0";
dir<= dir + 1;
S27 S28
S28 S0 dir<=dir+1;

You might also like