Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. module ex3(
  2. output reg AN0,
  3. output reg AN1,
  4. output reg AN2,
  5. output reg AN3,
  6. output reg CA,
  7. output reg CB,
  8. output reg CC,
  9. output reg CD,
  10. output reg CE,
  11. output reg CF,
  12. output reg CG,
  13. output reg DP,
  14. input button,
  15. input reset,
  16. input clk
  17. );
  18.  
  19. localparam STATE_0 = 0;
  20. localparam STATE_1 = 1;
  21. localparam STATE_2 = 2;
  22. localparam STATE_3 = 3;
  23.  
  24. wire buttonInc;
  25. debouncer db(buttonInc, clk, reset, button);
  26.  
  27. reg [1:0] currentState;
  28. reg [1:0] nextState;
  29.  
  30. reg [15:0] delay;
  31.  
  32. reg [15:0] count;
  33. reg buttonPressed;
  34.  
  35.  
  36. always @(posedge clk) begin
  37. if (reset) begin
  38. currentState <= STATE_0;
  39. delay <= 0;
  40. count <= 0;
  41. end else begin
  42. // TODO: Incrementarea contorului.
  43. if (buttonInc && buttonPressed == 0) begin
  44. count <= count + 1;
  45. buttonPressed <= 1;
  46. end
  47. if (buttonInc == 0) begin
  48. buttonPressed <= 0;
  49. end
  50. // TODO: Intarzierea schimbarii de stare.
  51. delay <= delay + 1;
  52. if (delay == 65000) begin
  53. currentState <= nextState;
  54. delay <= 0;
  55. end
  56. end
  57. end
  58.  
  59. always @(*) begin
  60. case (currentState)
  61. STATE_0: begin
  62. AN0 <= 1;
  63. AN1 <= 1;
  64. AN2 <= 1;
  65. AN3 <= 0;
  66. DP <= 1;
  67. show(CA, CB, CC, CD, CE, CF, CG, count / 1000);
  68. nextState <= STATE_1;
  69. end
  70. STATE_1: begin
  71. AN0 <= 1;
  72. AN1 <= 1;
  73. AN2 <= 0;
  74. AN3 <= 1;
  75. show(CA, CB, CC, CD, CE, CF, CG, (count / 100) % 10);
  76. nextState <= STATE_2;
  77. end
  78. STATE_2: begin
  79. AN0 <= 1;
  80. AN1 <= 0;
  81. AN2 <= 1;
  82. AN3 <= 1;
  83. show(CA, CB, CC, CD, CE, CF, CG, (count / 10) % 10);
  84. nextState <= STATE_3;
  85. end
  86. STATE_3: begin
  87. AN0 <= 0;
  88. AN1 <= 1;
  89. AN2 <= 1;
  90. AN3 <= 1;
  91. show(CA, CB, CC, CD, CE, CF, CG, count % 10);
  92. nextState <= STATE_0;
  93. end
  94. endcase
  95. end
  96.  
  97. task show;
  98. output reg CA;
  99. output reg CB;
  100. output reg CC;
  101. output reg CD;
  102. output reg CE;
  103. output reg CF;
  104. output reg CG;
  105. input reg [3:0]digit;
  106. begin
  107. case (digit)
  108. 0: begin
  109. CA <= 0;
  110. CB <= 0;
  111. CC <= 0;
  112. CD <= 0;
  113. CE <= 0;
  114. CF <= 0;
  115. CG <= 1;
  116. end
  117. 1: begin
  118. CA <= 1;
  119. CB <= 0;
  120. CC <= 0;
  121. CD <= 1;
  122. CE <= 1;
  123. CF <= 1;
  124. CG <= 1;
  125. end
  126. 2: begin
  127. CA <= 0;
  128. CB <= 0;
  129. CC <= 1;
  130. CD <= 0;
  131. CE <= 0;
  132. CF <= 1;
  133. CG <= 0;
  134. end
  135. 3: begin
  136. CA <= 0;
  137. CB <= 0;
  138. CC <= 0;
  139. CD <= 0;
  140. CE <= 1;
  141. CF <= 1;
  142. CG <= 0;
  143. end
  144. 4: begin
  145. CA <= 1;
  146. CB <= 0;
  147. CC <= 0;
  148. CD <= 1;
  149. CE <= 1;
  150. CF <= 0;
  151. CG <= 0;
  152. end
  153. 5: begin
  154. CA <= 0;
  155. CB <= 1;
  156. CC <= 0;
  157. CD <= 0;
  158. CE <= 1;
  159. CF <= 0;
  160. CG <= 0;
  161. end
  162. 6: begin
  163. CA <= 0;
  164. CB <= 1;
  165. CC <= 0;
  166. CD <= 0;
  167. CE <= 0;
  168. CF <= 0;
  169. CG <= 0;
  170. end
  171. 7: begin
  172. CA <= 0;
  173. CB <= 0;
  174. CC <= 0;
  175. CD <= 1;
  176. CE <= 1;
  177. CF <= 1;
  178. CG <= 1;
  179. end
  180. 8: begin
  181. CA <= 0;
  182. CB <= 0;
  183. CC <= 0;
  184. CD <= 0;
  185. CE <= 0;
  186. CF <= 0;
  187. CG <= 0;
  188. end
  189. 9: begin
  190. CA <= 0;
  191. CB <= 0;
  192. CC <= 0;
  193. CD <= 0;
  194. CE <= 1;
  195. CF <= 0;
  196. CG <= 0;
  197. end
  198. endcase
  199. end
  200.  
  201. endtask
  202.  
  203. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement