Guest User

Untitled

a guest
Nov 23rd, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3.  
  4. entity ticTacToe is
  5. port(
  6. hex: OUT STD_LOGIC_VECTOR(0 TO 6);
  7. useless : out bit := '1';
  8. win_X : out bit := '1';
  9. win_O : out bit := '1';
  10. row0line0_in : in std_logic := 'U';
  11. row1line0_in : in std_logic := 'U';
  12. row2line0_in : in std_logic := 'U';
  13. row0line1_in : in std_logic := 'U';
  14. row1line1_in : in std_logic := 'U';
  15. row2line1_in : in std_logic := 'U';
  16. row0line2_in : in std_logic := 'U';
  17. row1line2_in : in std_logic := 'U';
  18. row2line2_in : in std_logic := 'U'
  19. );
  20. end ticTacToe;
  21.  
  22.  
  23. architecture behaviour of ticTacToe is
  24. signal player : bit; --X starts game
  25. shared variable wins : boolean := false;
  26.  
  27. shared variable row0line0 : std_logic := 'U';
  28. shared variable row1line0 : std_logic := 'U';
  29. shared variable row2line0 : std_logic := 'U';
  30. shared variable row0line1 : std_logic := 'U';
  31. shared variable row1line1 : std_logic := 'U';
  32. shared variable row2line1 : std_logic := 'U';
  33. shared variable row0line2 : std_logic := 'U';
  34. shared variable row1line2 : std_logic := 'U';
  35. shared variable row2line2 : std_logic := 'U';
  36.  
  37.  
  38. function winner(row0line0, row0line1, row0line2, row1line0, row1line1,
  39. row1line2, row2line0, row2line1, row2line2:std_logic) return boolean is
  40. begin
  41. --check if X wins
  42. if(row0line0 = '1' and row0line1 = '1' and row0line2 = '1') then
  43. win_X <= '0';
  44. end if;
  45. if(row0line0 = '1' and row1line0 = '1' and row2line0 = '1') then
  46. win_X <= '0';
  47. end if;
  48. if(row0line0 = '1' and row1line1 = '1' and row2line2 = '1') then
  49. win_X <= '0';
  50. end if;
  51. if(row1line0 = '1' and row1line1 = '1' and row1line2 = '1') then
  52. win_X <= '0';
  53. end if;
  54. if(row2line0 = '1' and row2line1 = '1' and row2line2 = '1') then
  55. win_X <= '0';
  56. end if;
  57. if(row2line0 = '1' and row1line1 = '1' and row0line2 = '1') then
  58. win_X <= '0';
  59. end if;
  60. if(row0line1 = '1' and row1line1 = '1' and row2line1 = '1') then
  61. win_X <= '0';
  62. end if;
  63. if(row0line2 = '1' and row1line2 = '1' and row2line2 = '1') then
  64. win_X <= '0';
  65. end if;
  66.  
  67. --check if O wins
  68. if(row0line0 = '0' and row0line1 = '0' and row0line2 = '0') then
  69. win_O <= '0';
  70. end if;
  71. if(row0line0 = '0' and row1line0 = '0' and row2line0 = '0') then
  72. win_O <= '0';
  73. end if;
  74. if(row0line0 = '0' and row1line1 = '0' and row2line2 = '0') then
  75. win_O <= '0';
  76. end if;
  77. if(row1line0 = '0' and row1line1 = '0' and row1line2 = '0') then
  78. win_O <= '0';
  79. end if;
  80. if(row2line0 = '0' and row2line1 = '0' and row2line2 = '0') then
  81. win_O <= '0';
  82. end if;
  83. if(row2line0 = '0' and row1line1 = '0' and row0line2 = '0') then
  84. win_O <= '0';
  85. end if;
  86. if(row0line1 = '0' and row1line1 = '0' and row2line1 = '0') then
  87. win_O <= '0';
  88. end if;
  89. if(row0line2 = '0' and row1line2 = '0' and row2line2 = '0') then
  90. win_O <= '0';
  91. end if;
  92.  
  93. return false;
  94. end winner;
  95.  
  96. begin
  97. --variable becomes '0' for player O and '1' for player X
  98. process(row0line0_in, row0line1_in, row0line2_in, row1line0_in, row1line1_in,
  99. row1line2_in, row2line0_in, row2line1_in, row2line2_in)is
  100. begin
  101. if(row0line0_in'event and row0line0_in = '1')then
  102. if(player = '0')then
  103. row0line0 := '1';
  104. else
  105. useless <= '0';
  106. row0line0 := '0';
  107. end if;
  108. end if;
  109.  
  110. if(row0line1_in'event and row0line1_in = '1')then
  111. if(player = '0')then
  112. row0line1 := '1';
  113. else
  114. row0line1 := '0';
  115. end if;
  116. end if;
  117.  
  118. if(row0line2_in'event and row0line2_in = '1')then
  119. if(player = '0')then
  120. row0line2 := '1';
  121. else
  122. row0line2 := '0';
  123. end if;
  124. end if;
  125.  
  126. if(row1line0_in'event and row1line0_in = '1')then
  127. if(player = '0')then
  128. row1line0 := '1';
  129. else
  130. row1line0 := '0';
  131. end if;
  132. end if;
  133.  
  134. if(row1line1_in'event and row1line1_in = '1')then
  135. if(player = '0')then
  136. row1line1 := '1';
  137. else
  138. row1line1 := '0';
  139. end if;
  140. end if;
  141.  
  142. if(row1line2_in'event and row1line2_in = '1')then
  143. if(player = '0')then
  144. row1line2 := '1';
  145. else
  146. row1line2 := '0';
  147. end if;
  148. end if;
  149.  
  150. if(row2line0_in'event and row2line0_in = '1')then
  151. if(player = '0')then
  152. row2line0 := '1';
  153. else
  154. row2line0 := '0';
  155. end if;
  156. end if;
  157.  
  158. if(row2line1_in'event and row2line1_in = '1')then
  159. if(player = '0')then
  160. row2line1 := '1';
  161. else
  162. row2line1 := '0';
  163. end if;
  164. end if;
  165.  
  166. if(row2line2_in'event and row2line2_in = '1') then
  167. if(player = '0')then
  168. row2line2 := '1';
  169. else
  170. row2line2 := '0';
  171. end if;
  172. end if;
  173. player <= not player;
  174. end process;
  175.  
  176. --check winner
  177. process(player)is
  178. begin
  179. wins := winner(row0line0, row0line1, row0line2, row1line0, row1line1,
  180. row1line2, row2line0, row2line1, row2line2);
  181. end process;
  182. end behaviour;
Add Comment
Please, Sign In to add comment