Está en la página 1de 2

library ieee;

use ieee.std_logic_1164.all;
entity disp is port(

clk,reset : in std_logic;
x: in std_logic_vector(1 downto 0);
y: out std_logic; ---Entrega dulce si es
1
z: out std_logic_vector(2 downto 0)); ---Cambio

end disp;

architecture disp of disp is

type state_type is(A,B,C,D,E,F);


signal ep,es:state_type;

begin

process(ep,x) begin
case ep is
when A => y <= '0'; ---Indica cuando despachara el dulce
if(x="00")then ---No ingreso nada
es <= A;
elsif(x="01")then ----Ingreso 1 peso
es <= B;

elsif(x="10")then --- ingreso 2 pesos


es <= C;
else ---se ingreso una moneda de 5('11')
es <= F;
z <='001';
end if;

when B => y <= '0';


if(x="00")then ---No ingreso nada
es <= B;
elsif(x="01")then ----Ingreso 1 peso
es <= C;
elsif(x="10")then--- ingreso 2 pesos
es <= D;
else -----se ingreso una moneda de 5
es <= F; -----Por mas intentos que hize no pude colocar la
condición. Por lo que entiendo es en esta parte donde correspondria incluir
z <=´010´; ----La salida del cambio. Pero todas me las
rechazo.
end if;

when C => y <= '0';


if(x="00")then ---No ingreso nada
es <= C;
elsif(x="01")then ----Ingreso 1 peso
es <= D;
elsif(x="10")then--- ingreso 2 pesos
es <= E;
else -----se ingreso una moneda de 5
es <= F;
z <='011'
end if;

when D => y <= '0';


if(x="00")then ---No ingreso nada
es <= D;
elsif(x="01")then ----Ingreso 1 peso
es <= E;
elsif(x="10")then--- ingreso 2 pesos
es <= F;
else -----se ingreso una moneda de 5
es <= F;
z <='100';
end if;

when E => y <= '1';


es <= A;

when F => y <= '1';


es <= A;

end case;

end process;

sec:process(clk,reset)
begin
if(reset='1')then
ep <= A; z <="00";
elsif(clk'event and clk='1')then
ep<=es;
end if;
end process;
end disp;

También podría gustarte