Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.84 KB | None | 0 0
  1. module top(hz100,reset,pb,ss7,ss6,ss5,ss4,ss3,ss2,ss1,ss0,left,right,red,green,blue);
  2. input hz100, reset;
  3. input [20:0] pb;
  4. output [7:0] ss7,ss6,ss5,ss4,ss3,ss2,ss1,ss0;
  5. output [7:0] left,right;
  6. output red,green,blue;
  7.  
  8. wire[7:0] hz4, Q, Q2;
  9. wire[2:0] pos;
  10.  
  11. count8du c(.CLK(Q2[4]), .M(pb[1]), .E(pb[2]), .AR(reset), .Q(Q));
  12. decode_led d0(.value(Q[3:0]), .ss(ss0), .enable(1'b1));
  13. decode_led d1(.value(Q[7:4]), .ss(ss1), .enable(1'b1));
  14.  
  15. countn div(.CLK(hz100), .MAX(8'd24), .AR(reset), .E(1'b1), .Q(Q2));
  16.  
  17. // NEXT PART
  18. // updown3 u(.AR(reset), .CLK(hz4[4]), .Q(pos));
  19. // display_ball disp(pos, ss0, ss1, ss2, ss3, ss4, ss5, ss6, ss7);
  20.  
  21. // countn div(.CLK(hz100), .MAX(8'd24), .AR(reset), .E(1'b1), .Q(hz4));
  22. endmodule
  23.  
  24. module display_ball(pos, ss0, ss1, ss2, ss3, ss4, ss5, ss6, ss7);
  25. input wire[2:0] pos;
  26. output wire[7:0] ss0, ss1, ss2, ss3, ss4, ss5, ss6, ss7;
  27.  
  28. assign ss0 = (pos == 3'b000) ? 8'b01011100 : 8'b00000000;
  29. assign ss1 = (pos == 3'b001) ? 8'b01011100 : 8'b00000000;
  30. assign ss2 = (pos == 3'b010) ? 8'b01011100 : 8'b00000000;
  31. assign ss3 = (pos == 3'b011) ? 8'b01011100 : 8'b00000000;
  32. assign ss4 = (pos == 3'b100) ? 8'b01011100 : 8'b00000000;
  33. assign ss5 = (pos == 3'b101) ? 8'b01011100 : 8'b00000000;
  34. assign ss6 = (pos == 3'b110) ? 8'b01011100 : 8'b00000000;
  35. assign ss7 = (pos == 3'b111) ? 8'b01011100 : 8'b00000000;
  36. endmodule
  37.  
  38. module updown3(AR, CLK, Q);
  39. input wire AR, CLK;
  40. output reg[2:0] Q;
  41.  
  42. reg dir;
  43. reg next_dir;
  44. reg[2:0] nQ;
  45.  
  46. always @ (Q) begin
  47. if (AR) begin
  48. Q <= 3'b000;
  49. dir <= 0;
  50. end
  51. else
  52. Q <= nQ;
  53. dir <= next_dir;
  54. end
  55.  
  56. always @ (posedge CLK) begin
  57. if (dir == 1'b1) begin
  58. nQ[0] = ~Q[0];
  59. nQ[1] = Q[1] ^ (~Q[0]);
  60. nQ[2] = Q[2] ^ (~Q[0] & ~Q[1]);
  61. nQ[3] = Q[3] ^ (~Q[0] & ~Q[1] & ~Q[2]);
  62. end
  63. else begin
  64. nQ[0] = ~Q[0];
  65. nQ[1] = Q[1] ^ (Q[0]);
  66. nQ[2] = Q[2] ^ (Q[0] & Q[1]);
  67. nQ[3] = Q[3] ^ (Q[0] & Q[1] & Q[2]);
  68. end
  69.  
  70. if (nQ == 3'd7)
  71. next_dir = 1;
  72. else if (nQ == 3'd0)
  73. next_dir = 0;
  74. end
  75. endmodule
  76.  
  77. module countn(E, AR, CLK, Q, MAX);
  78. input wire E, AR, CLK;
  79. input wire[7:0] MAX;
  80. output wire[7:0] Q;
  81.  
  82. wire r;
  83. assign r = AR | (MAX == Q);
  84.  
  85. count8du c(.E(E), .M(1'b1), .AR(r), .CLK(CLK), .Q(Q));
  86.  
  87. endmodule
  88.  
  89. module count8du(E, M, AR, CLK, Q);
  90. input wire E, M, AR, CLK;
  91. output reg[7:0] Q;
  92.  
  93. reg[7:0] nQ;
  94.  
  95. always @ (posedge CLK or posedge AR) begin
  96. if (AR)
  97. Q <= 8'b00000000;
  98. else if (E) begin
  99. Q <= nQ;
  100. end
  101. end
  102.  
  103. always @ (Q, M) begin
  104. if (M == 1'b0) begin
  105. nQ[0] = ~Q[0];
  106. nQ[1] = Q[1] ^ (~Q[0]);
  107. nQ[2] = Q[2] ^ (~Q[0] & ~Q[1]);
  108. nQ[3] = Q[3] ^ (~Q[0] & ~Q[1] & ~Q[2]);
  109. nQ[4] = Q[4] ^ (~Q[0] & ~Q[1] & ~Q[2] & ~Q[3]);
  110. nQ[5] = Q[5] ^ (~Q[0] & ~Q[1] & ~Q[2] & ~Q[3] & ~Q[4]);
  111. nQ[6] = Q[6] ^ (~Q[0] & ~Q[1] & ~Q[2] & ~Q[3] & ~Q[4] & ~Q[5]);
  112. nQ[7] = Q[7] ^ (~Q[0] & ~Q[1] & ~Q[2] & ~Q[3] & ~Q[4] & ~Q[5] & ~Q[6]);
  113. end
  114. else begin
  115. nQ[0] = ~Q[0];
  116. nQ[1] = Q[1] ^ (Q[0]);
  117. nQ[2] = Q[2] ^ (Q[0] & Q[1]);
  118. nQ[3] = Q[3] ^ (Q[0] & Q[1] & Q[2]);
  119. nQ[4] = Q[4] ^ (Q[0] & Q[1] & Q[2] & Q[3]);
  120. nQ[5] = Q[5] ^ (Q[0] & Q[1] & Q[2] & Q[3] & Q[4]);
  121. nQ[6] = Q[6] ^ (Q[0] & Q[1] & Q[2] & Q[3] & Q[4] & Q[5]);
  122. nQ[7] = Q[7] ^ (Q[0] & Q[1] & Q[2] & Q[3] & Q[4] & Q[5] & Q[6]);
  123. end
  124. end
  125. endmodule
  126.  
  127. module decode_led(ss, value, enable);
  128. input wire[3:0] value;
  129. input wire enable;
  130. input wire[6:0] ss;
  131.  
  132. assign ss[0] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & value[0]) | (~value[3] & value[2] & ~value[1] & value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (~value[3] & value[2] & value[1] & value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & value[2] & ~value[1] & ~value[0]) | (value[3] & value[2] & value[1] & ~value[0]) | (value[3] & value[2] & value[1] & value[0]): 0;
  133. assign ss[1] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & ~value[2] & ~value[1] & value[0]) | (~value[3] & ~value[2] & value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & value[0]) | (~value[3] & value[2] & ~value[1] & ~value[0]) | (~value[3] & value[2] & value[1] & value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & value[2] & ~value[1] & value[0]): 0;
  134. assign ss[2] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & ~value[2] & ~value[1] & value[0]) | (~value[3] & ~value[2] & value[1] & value[0]) | (~value[3] & value[2] & ~value[1] & ~value[0]) | (~value[3] & value[2] & ~value[1] & value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (~value[3] & value[2] & value[1] & value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & value[1] & value[0]) | (value[3] & value[2] & ~value[1] & value[0]): 0;
  135. assign ss[3] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & value[0]) | (~value[3] & value[2] & ~value[1] & value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & value[0]) | (value[3] & value[2] & ~value[1] & ~value[0]) | (value[3] & value[2] & ~value[1] & value[0]) | (value[3] & value[2] & value[1] & ~value[0]): 0;
  136. assign ss[4] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & ~value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & value[1] & value[0]) | (value[3] & value[2] & ~value[1] & ~value[0]) | (value[3] & value[2] & ~value[1] & value[0]) | (value[3] & value[2] & value[1] & ~value[0]) | (value[3] & value[2] & value[1] & value[0]): 0;
  137. assign ss[5] = (enable == 1) ? (~value[3] & ~value[2] & ~value[1] & ~value[0]) | (~value[3] & value[2] & ~value[1] & ~value[0]) | (~value[3] & value[2] & ~value[1] & value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & value[1] & value[0]) | (value[3] & value[2] & ~value[1] & ~value[0]) | (value[3] & value[2] & value[1] & ~value[0]) | (value[3] & value[2] & value[1] & value[0]): 0;
  138. assign ss[6] = (enable == 1) ? (~value[3] & ~value[2] & value[1] & ~value[0]) | (~value[3] & ~value[2] & value[1] & value[0]) | (~value[3] & value[2] & ~value[1] & ~value[0]) | (~value[3] & value[2] & ~value[1] & value[0]) | (~value[3] & value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & ~value[0]) | (value[3] & ~value[2] & ~value[1] & value[0]) | (value[3] & ~value[2] & value[1] & ~value[0]) | (value[3] & ~value[2] & value[1] & value[0]) | (value[3] & value[2] & ~value[1] & value[0]) | (value[3] & value[2] & value[1] & ~value[0]) | (value[3] & value[2] & value[1] & value[0]): 0;
  139. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement