Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. ---- Implementação ---------------------------------------------------------------
  2.  
  3. LIBRARY ieee ;
  4. USE ieee.std_logic_1164.all ;
  5. use ieee.math_real.all;
  6.  
  7. ENTITY tra_final IS
  8. GENERIC (
  9. gen : integer :=4;
  10. num_reg : integer := 4
  11. );
  12. PORT (
  13. B0,B1,B2 : in std_logic;
  14. cor : in std_logic (6 downto 0);
  15. Senha : in std_logic_vector(1 downto 0);
  16. clk : in std_logic;
  17. mos_out: in std_logic;
  18. LED: out std_logic;
  19. DISP: out std_logic_vector(6 downto 0);
  20. SON: out std_logic;
  21. cnt_in: out std_logic;
  22. mos_in: out std_logic;
  23. son_in: out std_logic;
  24. tot_rst: out std_logic;
  25. tot_en: out std_logic;
  26. cor_rst: out std_logic
  27. );
  28. END tra_final;
  29.  
  30. ARCHITECTURE processador OF tra_final IS
  31.  
  32. ---- Process (FSM) ---------------------------------------------------------------------------
  33.  
  34.  
  35. TYPE ESTADO IS (inicio,espera,senha1,comparasenha1,senha2,comparasenha2,FimSenha,inicia_cont,para_cont,exibeTot,exibeCor,exibeInt,Som);
  36. SIGNAL estado_atual : ESTADO;
  37. SIGNAL prox_estado : ESTADO;
  38.  
  39. BEGIN
  40. PROCESS (estado_atual)
  41. BEGIN
  42. estado_atual <= prox_estado;
  43.  
  44.  
  45. IF (rising_edge(estado_atual)) THEN
  46.  
  47. IF estado_atual = inicio THEN
  48.  
  49. LED='0';
  50. DISP=cor;
  51. SON='0';
  52. cnt_in='0';
  53. mos_in='0';
  54. son_in='0';
  55. tot_rst='0';
  56. tot_en='0';
  57. cor_rst='0';
  58.  
  59. ELSIF estado_atual = espera THEN
  60. LED='0';
  61. DISP=cor;
  62. SON='0';
  63. cnt_in='0';
  64. mos_in='0';
  65. son_in='0';
  66. tot_rst='0';
  67. tot_en='0';
  68. cor_rst='0';
  69.  
  70. ELSIF estado_atual = senha1 THEN
  71. LED='0';
  72. DISP=cor;
  73. SON='0';
  74. cnt_in='0';
  75. mos_in='0';
  76. son_in='0';
  77. tot_rst='0';
  78. tot_en='0';
  79. cor_rst='0';
  80.  
  81. ELSIF estado_atual = comparasenha1 THEN
  82. LED='0';
  83. DISP=cor;
  84. SON='0';
  85. cnt_in='0';
  86. mos_in='0';
  87. son_in='0';
  88. tot_rst='0';
  89. tot_en='0';
  90. cor_rst='0';
  91.  
  92. ELSIF estado_atual = senha2 THEN
  93. LED='0';
  94. DISP=cor;
  95. SON='0';
  96. cnt_in='0';
  97. mos_in='0';
  98. son_in='0';
  99. tot_rst='0';
  100. tot_en='0';
  101. cor_rst='0';
  102.  
  103. ELSIF estado_atual = comparasenha2 THEN
  104. LED='0';
  105. DISP=cor;
  106. SON='0';
  107. cnt_in='0';
  108. mos_in='0';
  109. son_in='0';
  110. tot_rst='0';
  111. tot_en='0';
  112. cor_rst='0';
  113.  
  114. ELSIF estado_atual = fimSenha THEN
  115. LED='0';
  116. DISP=cor;
  117. SON='0';
  118. cnt_in='0';
  119. mos_in='0';
  120. son_in='0';
  121. tot_rst='0';
  122. tot_en='0';
  123. cor_rst='0';
  124.  
  125. ELSIF estado_atual = inicia_cont THEN
  126.  
  127. LED='0';
  128. DISP=cor;
  129. SON='0';
  130. cnt_in='0';
  131. mos_in='0';
  132. son_in='0';
  133. tot_rst='0';
  134. tot_en='0';
  135. cor_rst='0';
  136.  
  137. ELSIF estado_atual = para_cont THEN
  138. LED='0';
  139. DISP=cor;
  140. SON='0';
  141. cnt_in='0';
  142. mos_in='0';
  143. son_in='0';
  144. tot_rst='0';
  145. tot_en='0';
  146. cor_rst='0';
  147.  
  148. ELSIF estado_atual = exibetot THEN
  149. LED='0';
  150. DISP=cor;
  151. SON='0';
  152. cnt_in='0';
  153. mos_in='0';
  154. son_in='0';
  155. tot_rst='0';
  156. tot_en='0';
  157. cor_rst='0';
  158.  
  159. ELSIF estado_atual = exibeTot THEN
  160. LED='0';
  161. DISP=cor;
  162. SON='0';
  163. cnt_in='0';
  164. mos_in='0';
  165. son_in='0';
  166. tot_rst='0';
  167. tot_en='0';
  168. cor_rst='0';
  169.  
  170. ELSIF estado_atual = exibeCor THEN
  171. LED='0';
  172. DISP=cor;
  173. SON='0';
  174. cnt_in='0';
  175. mos_in='0';
  176. son_in='0';
  177. tot_rst='0';
  178. tot_en='0';
  179. cor_rst='0';
  180.  
  181. ELSIF estado_atual = exibeInt THEN
  182. LED='0';
  183. DISP=cor;
  184. SON='0';
  185. cnt_in='0';
  186. mos_in='0';
  187. son_in='0';
  188. tot_rst='0';
  189. tot_en='0';
  190. cor_rst='0';
  191.  
  192. ELSIF estado_atual = max2 THEN
  193. LED='0';
  194. DISP=cor;
  195. SON='0';
  196. cnt_in='0';
  197. mos_in='0';
  198. son_in='0';
  199. tot_rst='0';
  200. tot_en='0';
  201. cor_rst='0';
  202.  
  203. ELSIF estado_atual = Som THEN
  204. LED='0';
  205. DISP=cor;
  206. SON='0';
  207. cnt_in='0';
  208. mos_in='0';
  209. son_in='0';
  210. tot_rst='0';
  211. tot_en='0';
  212. cor_rst='0';
  213.  
  214.  
  215.  
  216. ELSE
  217. LED='0';
  218. DISP=cor;
  219. SON='0';
  220. cnt_in='0';
  221. mos_in='0';
  222. son_in='0';
  223. tot_rst='0';
  224. tot_en='0';
  225. cor_rst='0';
  226. END IF;
  227. END IF;
  228. end process;
  229.  
  230. -- Seleção de estados
  231. process(clk)
  232. begin
  233. IF (rising_edge(clk)) THEN
  234. CASE estado_atual IS
  235.  
  236. WHEN inicio =>
  237. prox_estado <= espera;
  238. --- "Arvore do espera
  239. WHEN espera =>
  240. prox_estado <= senha1;
  241.  
  242. WHEN espera =>
  243. prox_estado <= Som;
  244.  
  245. WHEN espera =>
  246. prox_estado <= exibeCor;
  247.  
  248. WHEN espera =>
  249. prox_estado <= exibeTot;
  250. ---- se for o Som
  251. WHEN Som =>
  252. prox_estado <= Senha1;
  253. -- Arvore da direita
  254. WHEN exibeTot =>
  255. prox_estado <= exibeInt;
  256.  
  257. WHEN exibeCor =>
  258. prox_estado <= exibeInt;
  259.  
  260. WHEN exibeInt =>
  261. prox_estado <= Espera;
  262. --- Arvore da direita
  263. WHEN senha1 =>
  264. prox_estado <= comparasenha1;
  265.  
  266. WHEN comparasenha1 =>
  267. prox_estado <= senha2;
  268.  
  269. WHEN comparasenha2 =>
  270. prox_estado <= fimSenha;
  271.  
  272. WHEN fimSenha =>
  273. prox_estado <= inicia_cont;
  274.  
  275. WHEN fimSenha =>
  276. prox_estado <= para_cont;
  277.  
  278. WHEN inicia_cont =>
  279. prox_estado <= espera;
  280.  
  281. WHEN para_cont =>
  282. prox_estado <= espera;
  283.  
  284.  
  285. WHEN espera =>
  286. IF (B0='1' AND B1='0' AND B2='0') THEN
  287. prox_estado <= Senha1;
  288. ELSIF (B0='0' AND B1='1' AND B2='0' AND mos_out='1' ) THEN
  289. prox_estado <= exibeCor;
  290. ELSIF (B0='0' AND B1='0' AND B2='1' AND mos_out='0' ) THEN
  291. prox_estado <= exibetot;
  292. ELSE
  293. prox_estado <= espera;
  294. END IF;
  295.  
  296.  
  297.  
  298.  
  299. END CASE;
  300. END IF;
  301. END PROCESS;
  302. END processador;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement