Advertisement
Geovanny

Gato en Verilog

Dec 31st, 2012
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module paso1(A_0, B_0, C_0, D_0, E_0, F_0, G_0, H_0, I_0,A_1_W, B_1_W, C_1_W, D_1_W, E_1_W , F_1_W, G_1_W, H_1_W);
  2. input [1:0] A_0, B_0, C_0, D_0, E_0, F_0, G_0, H_0, I_0;
  3. output [5:0] A_1_W, B_1_W, C_1_W, D_1_W, E_1_W , F_1_W, G_1_W, H_1_W;
  4.  
  5. assign A_1_W[0] = C_0[0];
  6. assign A_1_W[1] = C_0[1];
  7. assign A_1_W[2] = B_0[0];
  8. assign A_1_W[3] = B_0[1];
  9. assign A_1_W[4] = A_0[0];
  10. assign A_1_W[5] = A_0[1];
  11. assign B_1_W[0] = F_0[0];
  12. assign B_1_W[1] = F_0[1];
  13. assign B_1_W[2] = E_0[0];
  14. assign B_1_W[3] = E_0[1];
  15. assign B_1_W[4] = D_0[0];
  16. assign B_1_W[5] = D_0[1];
  17. assign C_1_W[0] = I_0[0];
  18. assign C_1_W[1] = I_0[1];
  19. assign C_1_W[2] = H_0[0];
  20. assign C_1_W[3] = H_0[1];
  21. assign C_1_W[4] = G_0[0];
  22. assign C_1_W[5] = G_0[1];
  23. assign D_1_W[0] = G_0[0];
  24. assign D_1_W[1] = G_0[1];
  25. assign D_1_W[2] = D_0[0];
  26. assign D_1_W[3] = D_0[1];
  27. assign D_1_W[4] = A_0[0];
  28. assign D_1_W[5] = A_0[1];
  29. assign E_1_W[0] = H_0[0];
  30. assign E_1_W[1] = H_0[1];
  31. assign E_1_W[2] = E_0[0];
  32. assign E_1_W[3] = E_0[1];
  33. assign E_1_W[4] = B_0[0];
  34. assign E_1_W[5] = B_0[1];
  35. assign F_1_W[0] = I_0[0];
  36. assign F_1_W[1] = I_0[1];
  37. assign F_1_W[2] = F_0[0];
  38. assign F_1_W[3] = F_0[1];
  39. assign F_1_W[4] = C_0[0];
  40. assign F_1_W[5] = C_0[1];
  41. assign G_1_W[0] = I_0[0];
  42. assign G_1_W[1] = I_0[1];
  43. assign G_1_W[2] = E_0[0];
  44. assign G_1_W[3] = E_0[1];
  45. assign G_1_W[4] = A_0[0];
  46. assign G_1_W[5] = A_0[1];
  47. assign H_1_W[0] = C_0[0];
  48. assign H_1_W[1] = C_0[1];
  49. assign H_1_W[2] = E_0[0];
  50. assign H_1_W[3] = E_0[1];
  51. assign H_1_W[4] = G_0[0];
  52. assign H_1_W[5] = G_0[1];
  53.  
  54. endmodule
  55.  
  56. ///////////////////////////////////////////////////////////////////////////////////////////////////
  57.  
  58. module paso2(A_1, B_1, C_1, D_1, E_1 , F_1, G_1, H_1,A_2_W, B_2_W, C_2_W, D_2_W, E_2_W , F_2_W, G_2_W, H_2_W);
  59. input [5:0] A_1, B_1, C_1, D_1, E_1, F_1, G_1, H_1;
  60. output [1:0] A_2_W, B_2_W, C_2_W, D_2_W, E_2_W , F_2_W, G_2_W, H_2_W;
  61.  
  62. assign A_2_W[0] = A_1[5] &  ~A_1[4] &  A_1[3] &  ~A_1[2] &  A_1[1] &  ~A_1[0];
  63. assign A_2_W[1] = ~A_1[5] &  A_1[4] &  ~A_1[3] &  A_1[2] &  ~A_1[1] &  A_1[0];
  64.  
  65. assign B_2_W[0] = B_1[5] &  ~B_1[4] &  B_1[3] &  ~B_1[2] &  B_1[1] &  ~B_1[0];
  66. assign B_2_W[1] = ~B_1[5] &  B_1[4] &  ~B_1[3] &  B_1[2] &  ~B_1[1] &  B_1[0];
  67.  
  68. assign C_2_W[0] = C_1[5] &  ~C_1[4] &  C_1[3] &  ~C_1[2] &  C_1[1] &  ~C_1[0];
  69. assign C_2_W[1] = ~C_1[5] &  C_1[4] &  ~C_1[3] &  C_1[2] &  ~C_1[1] &  C_1[0];
  70.  
  71. assign D_2_W[0] = D_1[5] &  ~D_1[4] &  D_1[3] &  ~D_1[2] &  D_1[1] &  ~D_1[0];
  72. assign D_2_W[1] = ~D_1[5] &  D_1[4] &  ~D_1[3] &  D_1[2] &  ~D_1[1] &  D_1[0];
  73.  
  74. assign E_2_W[0] = E_1[5] &  ~E_1[4] &  E_1[3] &  ~E_1[2] &  E_1[1] &  ~E_1[0];
  75. assign E_2_W[1] = ~E_1[5] &  E_1[4] &  ~E_1[3] &  E_1[2] &  ~E_1[1] &  E_1[0];
  76.  
  77. assign F_2_W[0] = F_1[5] &  ~F_1[4] &  F_1[3] &  ~F_1[2] &  F_1[1] &  ~F_1[0];
  78. assign F_2_W[1] = ~F_1[5] &  F_1[4] &  ~F_1[3] &  F_1[2] &  ~F_1[1] &  F_1[0];
  79.  
  80. assign G_2_W[0] = G_1[5] &  ~G_1[4] &  G_1[3] &  ~G_1[2] &  G_1[1] &  ~G_1[0];
  81. assign G_2_W[1] = ~G_1[5] &  G_1[4] &  ~G_1[3] &  G_1[2] &  ~G_1[1] &  G_1[0];
  82.  
  83. assign H_2_W[0] = H_1[5] &  ~H_1[4] &  H_1[3] &  ~H_1[2] &  H_1[1] &  ~H_1[0];
  84. assign H_2_W[1] = ~H_1[5] &  H_1[4] &  ~H_1[3] &  H_1[2] &  ~H_1[1] &  H_1[0];
  85.  
  86. endmodule
  87.  
  88. ///////////////////////////////////////////////////////////////////////////////////////////////////
  89.  
  90. module test(); //En un archivo test-and. Fïjese que no tiene entradas ni salidas. Es una caja negra que envuelve el módulo
  91. reg [1:0] A_0, B_0, C_0, D_0, E_0, F_0, G_0, H_0, I_0;
  92. wire [1:0]  A_0_W, B_0_W, C_0_W, D_0_W, E_0_W, F_0_W, G_0_W, H_0_W, I_0_W;
  93. wire [5:0] A_1_W, B_1_W, C_1_W, D_1_W, E_1_W , F_1_W, G_1_W, H_1_W; // Salida
  94.  
  95. reg [5:0] A_1, B_1, C_1, D_1, E_1, F_1, G_1, H_1;
  96. wire [1:0] A_2_W, B_2_W, C_2_W, D_2_W, E_2_W , F_2_W, G_2_W, H_2_W; // Salida
  97.  
  98. paso1 test1 (.A_0(A_0_W), .B_0(B_0_W), .C_0(C_0_W), .D_0(D_0_W), .E_0(E_0_W), .F_0(F_0_W), .G_0(G_0_W), .H_0(H_0_W), .I_0(I_0_W),.A_1_W(A_1_W), .B_1_W(B_1_W), .C_1_W(C_1_W), .D_1_W(D_1_W), .E_1_W(E_1_W) , .F_1_W(F_1_W), .G_1_W(G_1_W), .H_1_W(H_1_W));
  99.  
  100. paso2 test2 (.A_1(A_1_W), .B_1(B_1_W), .C_1(C_1_W), .D_1(D_1_W), .E_1(E_1_W), .F_1(F_1_W), .G_1(G_1_W), .H_1(H_1_W),.A_2_W(A_2_W), .B_2_W(B_2_W), .C_2_W(C_2_W), .D_2_W(D_2_W), .E_2_W(E_2_W) , .F_2_W(F_2_W), .G_2_W(G_2_W), .H_2_W(H_2_W));
  101.  
  102.  
  103. assign A_0_W = A_0;
  104. assign B_0_W = B_0;
  105. assign C_0_W = C_0;
  106. assign D_0_W = D_0;
  107. assign E_0_W = E_0;
  108. assign F_0_W = F_0;
  109. assign G_0_W = G_0;
  110. assign H_0_W = H_0;
  111. assign I_0_W = I_0;
  112.  
  113. initial
  114. begin
  115.  
  116.  
  117.                                   // AQUÍ SE PUEDE JUGAR  EL GATO                
  118.                                  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  119.  
  120.                             A_0=2'b00;                          D_0=2'b00;                   G_0=2'b00;    
  121.  
  122.  
  123.                             B_0=2'b00;                          E_0=2'b00;                   H_0=2'b00;
  124.  
  125.  
  126.                             C_0=2'b00;                          F_0=2'b00;                   I_0=2'b00;
  127.  
  128.  
  129.                                  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  130.  
  131.  
  132. #10
  133.  
  134. $display();
  135. $display("TIC TAC TOE");
  136. $display();
  137. if (A_0 == 2'b10) $write("[X]"); else if (A_0 == 2'b01) $write("[O]"); else $write("[ ]");
  138. if (D_0 == 2'b10) $write("[X]"); else if (D_0 == 2'b01) $write("[O]"); else $write("[ ]");
  139. if (G_0 == 2'b10) $write("[X]"); else if (G_0 == 2'b01) $write("[O]"); else $write("[ ]");
  140. $display();
  141. if (B_0 == 2'b10) $write("[X]"); else if (B_0 == 2'b01) $write("[O]"); else $write("[ ]");
  142. if (E_0 == 2'b10) $write("[X]"); else if (E_0 == 2'b01) $write("[O]"); else $write("[ ]");
  143. if (H_0 == 2'b10) $write("[X]"); else if (H_0 == 2'b01) $write("[O]"); else $write("[ ]");
  144. $display();
  145. if (C_0 == 2'b10) $write("[X]"); else if (C_0 == 2'b01) $write("[O]"); else $write("[ ]");
  146. if (F_0 == 2'b10) $write("[X]"); else if (F_0 == 2'b01) $write("[O]"); else $write("[ ]");
  147. if (I_0 == 2'b10) $write("[X]"); else if (I_0 == 2'b01) $write("[O]"); else $write("[ ]");
  148. $display();
  149. $display();
  150.  
  151. $display("{Cadena Inicial, 18 bits}");
  152. $display(A_0[0],A_0[1],B_0[0],B_0[1],C_0[0],C_0[1],D_0[0],D_0[1],E_0[0],E_0[1],F_0[0],F_0[1],G_0[0],G_0[1],H_0[0],H_0[1],I_0[0],I_0[1]);
  153. $display();
  154. $display("{Cadena Fragmentadora de gato, 48 bits}");
  155. $display(A_1_W[5],A_1_W[4],A_1_W[3],A_1_W[2],A_1_W[1],A_1_W[0],B_1_W[5],B_1_W[4],B_1_W[3],B_1_W[2],B_1_W[1],B_1_W[0],C_1_W[5],C_1_W[4],C_1_W[3],C_1_W[2],C_1_W[1],C_1_W[0],D_1_W[5],D_1_W[4],D_1_W[3],D_1_W[2],D_1_W[1],D_1_W[0],E_1_W[5],E_1_W[4],E_1_W[3],E_1_W[2],E_1_W[1],E_1_W[0],F_1_W[5],F_1_W[4],F_1_W[3],F_1_W[2],F_1_W[1],F_1_W[0],G_1_W[5],G_1_W[4],G_1_W[3],G_1_W[2],G_1_W[1],G_1_W[0],H_1_W[5],H_1_W[4],H_1_W[3],H_1_W[2],H_1_W[1],H_1_W[0]);
  156. $display();
  157. $display("{Cadena detectora de ganes, 16 bits}");
  158. $display(A_2_W[0],A_2_W[1],B_2_W[0],B_2_W[1],C_2_W[0],C_2_W[1],D_2_W[0],D_2_W[1],E_2_W[0],E_2_W[1],F_2_W[0],F_2_W[1],G_2_W[0],G_2_W[1],H_2_W[0],H_2_W[1]);
  159. $display();
  160. $display("{Ganador, 2 bits}");
  161. $write(A_2_W[0] | B_2_W[0] | C_2_W[0] | D_2_W[0] | E_2_W[0] | F_2_W[0] | G_2_W[0] | H_2_W[0],A_2_W[1] | B_2_W[1] | C_2_W[1] | D_2_W[1] | E_2_W[1] | F_2_W[1] | G_2_W[1] | H_2_W[1]);
  162. if (A_2_W[0] | B_2_W[0] | C_2_W[0] | D_2_W[0] | E_2_W[0] | F_2_W[0] | G_2_W[0] | H_2_W[0]==1) $write(", Jugador 1");
  163. else if (A_2_W[1] | B_2_W[1] | C_2_W[1] | D_2_W[1] | E_2_W[1] | F_2_W[1] | G_2_W[1] | H_2_W[1]) $write(", Jugador 2");
  164. else  $write(", sin ganador aun");
  165.  
  166. $display();$display();$display();$display();$display();$display();$display();
  167.  
  168.  
  169. end //initial
  170.  
  171. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement