Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. ---- Implementação ---------------------------------------------------------------
  2.  
  3. LIBRARY ieee ;
  4. USE ieee.std_logic_1164.all ;
  5. USE ieee.std_logic_unsigned.all;
  6. USE ieee.math_real.all;
  7.  
  8. ENTITY tra_final IS
  9. PORT (
  10. Senha : in std_logic_vector(1 downto 0);
  11. B0,B1: in std_logic;
  12. Clk: in std_logic;
  13. saida_comparadorsenha1 : in std_logic;
  14. saida_comparadorsenha2 : in std_logic;
  15. en_comparadorsenha1 : out std_logic;
  16. en_comparadorsenha2 : out std_logic;
  17. rst_temporizador: out std_logic;
  18. en_temporizador: out std_logic
  19.  
  20.  
  21. );
  22. END tra_final;
  23.  
  24. ARCHITECTURE bloco_controle OF tra_final IS
  25. TYPE ESTADO IS (inicio, espera, senha1, senha2, comparasenha, fimSenha);
  26. SIGNAL estado_atual : ESTADO;
  27. SIGNAL prox_estado : ESTADO;
  28. BEGIN
  29. PROCESS (estado_atual)
  30. BEGIN
  31. CASE estado_atual IS
  32. WHEN inicio =>
  33. en_comparadorsenha1 <= '0';
  34. en_comparadorsenha2 <= '0';
  35. rst_temporizador <= '1';
  36. en_temporizador <= '0';
  37.  
  38. WHEN espera =>
  39. en_comparadorsenha1 <= '0';
  40. en_comparadorsenha2 <= '0';
  41. rst_temporizador <= '0';
  42. en_temporizador <= '0';
  43.  
  44.  
  45. WHEN senha1 =>
  46. en_comparadorsenha1 <= '1';
  47. en_comparadorsenha2 <= '0';
  48. rst_temporizador <= '0';
  49. en_temporizador <= '0';
  50.  
  51. WHEN senha2 =>
  52. en_comparadorsenha1 <= '0';
  53. en_comparadorsenha2 <= '1';
  54. rst_temporizador <= '0';
  55. en_temporizador <= '0';
  56.  
  57. WHEN comparasenha =>
  58.  
  59. en_comparadorsenha1 <= '0';
  60. en_comparadorsenha2 <= '0';
  61. rst_temporizador <= '0';
  62. en_temporizador <= '0';
  63.  
  64. WHEN fimSenha =>
  65.  
  66. en_comparadorsenha1 <= '0';
  67. en_comparadorsenha2 <= '0';
  68. rst_temporizador <= '0';
  69. en_temporizador <= '1';
  70.  
  71.  
  72.  
  73. END CASE;
  74. END PROCESS;
  75.  
  76. -- Seleção de estados
  77. PROCESS (clk)
  78. BEGIN
  79. IF (rising_edge(clk)) THEN
  80. CASE estado_atual IS
  81. WHEN inicio =>
  82. prox_estado <= espera;
  83.  
  84. WHEN espera =>
  85. IF (B0 = '1' AND B1 = '0' ) THEN
  86. prox_estado <= senha1;
  87. ELSE
  88. prox_estado<= espera;
  89. END IF;
  90.  
  91. WHEN senha1 =>
  92. IF (B0 = '0' AND B1 = '1' ) THEN
  93. prox_estado <= senha2;
  94. ELSE
  95. prox_estado <= senha1;
  96. END IF;
  97.  
  98. WHEN senha2 =>
  99. IF (B0 = '0' AND B1 = '1') THEN
  100. prox_estado <= comparasenha;
  101. ELSE
  102. prox_estado <= senha2;
  103. END IF;
  104.  
  105. WHEN comparasenha =>
  106. IF (saida_comparadorsenha1 ='1' and saida_comparadorsenha2 ='1') THEN
  107. prox_estado <= fimSenha;
  108. ELSE
  109. prox_estado <= espera;
  110. END IF;
  111. WHEN fimSenha =>
  112. IF (B0 = '1' AND B1 = '0' ) THEN
  113. prox_estado <= senha1;
  114. ELSE
  115. prox_estado<= fimSenha;
  116. END IF;
  117.  
  118.  
  119.  
  120.  
  121. END CASE;
  122. END IF;
  123. END PROCESS;
  124. END bloco_controle;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement