Sie sind auf Seite 1von 4

1.

Std_logic paras definir un estado digital

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity MAQUINADEESTADO is
Port ( clk : in STD_LOGIC;
pulsador : in STD_LOGIC;
rst : in STD_LOGIC;
estados_bits : out STD_LOGIC_VECTOR (1 downto 0));
end MAQUINADEESTADO;

architecture Behavioral of MAQUINADEESTADO is

TYPE estados is (Inicio,Leer,Parar);

signal ep: estados;--como el objeto de una clase


signal clk_1Hz_s : std_logic;--/std_logic es para definir un estado logico 0 o 1

begin

PROCESS(clk,rst)
VARIABLE T : INTEGER range 0 to 50000000;--Se da un rango para la variacion

BEGIN
IF rst = '1' then--segnu la graifca el clock empieza en 1
T := 0;
clk_1Hz_s <= '1';

ElSIF (rising_edge(clk)) then


T:=T+1;
IF (T<=1) THEN
clk_1Hz_s <= '1';
ELSIF (T<50000000) THEN
clk_1Hz_s <= '0';
ELSE
T:=0;
END IF;
END IF;
END PROCESS;

PROCESS(clk_1Hz_s,rst)
begin
IF rst= '1' then
ep<= Inicio;
elsif (rising_edge(clk_1Hz_s)) THEN

CASE ep is
when Inicio =>
if pulsador = '1' then
ep <=Leer;
else
ep <=Inicio;
end if;
when Leer =>
if pulsador = '1' then
ep <=Parar;
else
ep <=Inicio;
end if;
when Parar =>
if pulsador = '1' then
ep <=Parar;
else
ep <=Leer;
end if;
end case;
end if;
end process;

PROCESS(ep)
begin
case ep is
when Inicio =>

estados_bits <= "01";


when Leer =>
estados_bits <= "10";
when Parar =>
estados_bits <= "11";
when OTHERS =>
estados_bits <= "00";
end case;
end process;

end Behavioral;

Das könnte Ihnen auch gefallen