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.math_real.all;
- ENTITY tra_final IS
- GENERIC (
- gen : integer :=4;
- num_reg : integer := 4
- );
- PORT (
- B0,B1,B2 : in std_logic;
- cor : in std_logic (6 downto 0);
- Senha : in std_logic_vector(1 downto 0);
- clk : in std_logic;
- mos_out: in std_logic;
- LED: out std_logic;
- DISP: out std_logic_vector(6 downto 0);
- SON: out std_logic;
- cnt_in: out std_logic;
- mos_in: out std_logic;
- son_in: out std_logic;
- tot_rst: out std_logic;
- tot_en: out std_logic;
- cor_rst: out std_logic
- );
- END tra_final;
- ARCHITECTURE processador OF tra_final IS
- ---- Process (FSM) ---------------------------------------------------------------------------
- TYPE ESTADO IS (inicio,espera,senha1,comparasenha1,senha2,comparasenha2,FimSenha,inicia_cont,para_cont,exibeTot,exibeCor,exibeInt,Som);
- SIGNAL estado_atual : ESTADO;
- SIGNAL prox_estado : ESTADO;
- BEGIN
- PROCESS (estado_atual)
- BEGIN
- estado_atual <= prox_estado;
- IF (rising_edge(estado_atual)) THEN
- IF estado_atual = inicio THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = espera THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = senha1 THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = comparasenha1 THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = senha2 THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = comparasenha2 THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = fimSenha THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = inicia_cont THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = para_cont THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = exibetot THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = exibeTot THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = exibeCor THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = exibeInt THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = max2 THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSIF estado_atual = Som THEN
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- ELSE
- LED='0';
- DISP=cor;
- SON='0';
- cnt_in='0';
- mos_in='0';
- son_in='0';
- tot_rst='0';
- tot_en='0';
- cor_rst='0';
- END IF;
- END IF;
- end process;
- -- Seleção de estados
- process(clk)
- begin
- IF (rising_edge(clk)) THEN
- CASE estado_atual IS
- WHEN inicio =>
- prox_estado <= espera;
- --- "Arvore do espera
- WHEN espera =>
- prox_estado <= senha1;
- WHEN espera =>
- prox_estado <= Som;
- WHEN espera =>
- prox_estado <= exibeCor;
- WHEN espera =>
- prox_estado <= exibeTot;
- ---- se for o Som
- WHEN Som =>
- prox_estado <= Senha1;
- -- Arvore da direita
- WHEN exibeTot =>
- prox_estado <= exibeInt;
- WHEN exibeCor =>
- prox_estado <= exibeInt;
- WHEN exibeInt =>
- prox_estado <= Espera;
- --- Arvore da direita
- WHEN senha1 =>
- prox_estado <= comparasenha1;
- WHEN comparasenha1 =>
- prox_estado <= senha2;
- WHEN comparasenha2 =>
- prox_estado <= fimSenha;
- WHEN fimSenha =>
- prox_estado <= inicia_cont;
- WHEN fimSenha =>
- prox_estado <= para_cont;
- WHEN inicia_cont =>
- prox_estado <= espera;
- WHEN para_cont =>
- prox_estado <= espera;
- WHEN espera =>
- IF (B0='1' AND B1='0' AND B2='0') THEN
- prox_estado <= Senha1;
- ELSIF (B0='0' AND B1='1' AND B2='0' AND mos_out='1' ) THEN
- prox_estado <= exibeCor;
- ELSIF (B0='0' AND B1='0' AND B2='1' AND mos_out='0' ) THEN
- prox_estado <= exibetot;
- ELSE
- prox_estado <= espera;
- END IF;
- END CASE;
- END IF;
- END PROCESS;
- END processador;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement