Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---- Implementação ---------------------------------------------------------------
- LIBRARY ieee ;
- USE ieee.std_logic_1164.all ;
- USE ieee.std_logic_unsigned.all;
- USE ieee.math_real.all;
- ENTITY tra_final IS
- PORT (
- Senha : in std_logic_vector(1 downto 0);
- B0,B1: in std_logic;
- Clk: in std_logic;
- saida_comparadorsenha1 : in std_logic;
- saida_comparadorsenha2 : in std_logic;
- en_comparadorsenha1 : out std_logic;
- en_comparadorsenha2 : out std_logic;
- rst_temporizador: out std_logic;
- en_temporizador: out std_logic
- );
- END tra_final;
- ARCHITECTURE bloco_controle OF tra_final IS
- TYPE ESTADO IS (inicio, espera, senha1, senha2, comparasenha, fimSenha);
- SIGNAL estado_atual : ESTADO;
- SIGNAL prox_estado : ESTADO;
- BEGIN
- -- Seleção de estados
- PROCESS (clk,B0,B1)
- BEGIN
- estado_atual <= prox_estado;
- IF (rising_edge(clk)) THEN
- CASE estado_atual IS
- WHEN inicio =>
- prox_estado <= espera;
- WHEN espera =>
- IF (B0 = '1' AND B1 = '0' ) THEN
- prox_estado <= senha1;
- ELSE
- prox_estado<= espera;
- END IF;
- WHEN senha1 =>
- IF (B0 = '0' AND B1 = '1' ) THEN
- prox_estado <= senha2;
- ELSE
- prox_estado <= senha1;
- END IF;
- WHEN senha2 =>
- IF (B0 = '0' AND B1 = '1') THEN
- prox_estado <= comparasenha;
- ELSE
- prox_estado <= senha2;
- END IF;
- WHEN comparasenha =>
- IF (saida_comparadorsenha1 ='1' and saida_comparadorsenha2 ='1') THEN
- prox_estado <= fimSenha;
- ELSE
- prox_estado <= senha1;
- END IF;
- WHEN fimSenha =>
- IF (B0 = '1' AND B1 = '0' ) THEN
- prox_estado <= senha1;
- ELSE
- prox_estado<= fimSenha;
- END IF;
- END CASE;
- END IF;
- END PROCESS;
- ----- transicoes
- PROCESS (estado_atual)
- BEGIN
- CASE estado_atual IS
- WHEN inicio =>
- en_comparadorsenha1 <= '0';
- en_comparadorsenha2 <= '0';
- rst_temporizador <= '1';
- en_temporizador <= '0';
- WHEN espera =>
- en_comparadorsenha1 <= '0';
- en_comparadorsenha2 <= '0';
- rst_temporizador <= '0';
- en_temporizador <= '0';
- WHEN senha1 =>
- en_comparadorsenha1 <= '1';
- en_comparadorsenha2 <= '0';
- rst_temporizador <= '0';
- en_temporizador <= '0';
- WHEN senha2 =>
- en_comparadorsenha1 <= '0';
- en_comparadorsenha2 <= '1';
- rst_temporizador <= '0';
- en_temporizador <= '0';
- WHEN comparasenha =>
- en_comparadorsenha1 <= '0';
- en_comparadorsenha2 <= '0';
- rst_temporizador <= '0';
- en_temporizador <= '0';
- WHEN fimSenha =>
- en_comparadorsenha1 <= '0';
- en_comparadorsenha2 <= '0';
- rst_temporizador <= '0';
- en_temporizador <= '1';
- END CASE;
- END PROCESS;
- END bloco_controle;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement