Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIBRARY ieee;
- USE ieee.std_logic_1164.all;
- ENTITY detector_c IS
- PORT ( CLK, i, y, g, r, b: IN STD_LOGIC; -- declaração dos sinais de entrada
- a : buffer STD_LOGIC;
- s: out std_logic;
- END EXEMPLO;
- ARCHITECTURE comportamental OF detector_c IS
- TYPE type_state IS (E0,E1,E2,E3,E4,E5); -- criação de tipos enumerados
- SIGNAL Estado: type_state; -- declaração de variável de estado
- SIGNAL Entradas: STD_LOGIC_VECTOR(4 DOWNTO 1); -- declaração de vetor auxiliar
- BEGIN
- Entradas<= y & g & r & b; -- concatenação dos sinais de entrada RE e RD como um vetor
- PROCESS (CLK, i) -- declaração da sensibilidade do processo
- BEGIN
- IF (i='0') THEN Estado <= E0; s='0'; -- estado de reset do sistema
- ELSIF (CLK'event and CLK='1') THEN -- detecção de borda de subida do clk
- CASE Estado IS
- WHEN E1 =>
- IF a= '0' THEN Estado <= E1; s='0'; -- transição E1->E2
- ELSIF Entradas= "1000" THEN Estado <= E2; s='0';-- transição E1->E4
- else Estado <= E0; s='0'
- END IF;
- WHEN E2 =>
- IF a= '0' THEN Estado <= E2; s='0'; -- transição E1->E2
- ELSIF Entradas= "0100" THEN Estado <= E3; s='0';-- transição E1->E4
- else Estado <= E0; V <= "000"
- END IF;
- WHEN E3 =>
- IF a= '0' THEN Estado <= E3; V <= s='0'; -- transição E1->E2
- ELSIF Entradas= "0010" THEN Estado <= E4; s='0';-- transição E1->E4
- else Estado <= E0; s='0';
- END IF;
- WHEN E4 =>
- IF a= '0' THEN Estado <= E4; s='0'; -- transição E1->E2
- ELSIF Entradas= "0001" THEN Estado <= E2; s='0';-- transição E1->E4
- else Estado <= E0; V <= "000"
- END IF;
- WHEN E5 =>
- s='1';
- Estado <= E0;
- END CASE;
- END IF;
- END PROCESS;
- END comportamental;
Add Comment
Please, Sign In to add comment