Advertisement
RybaSG

7SEG-działa

Apr 5th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module cnt(CLK,CE,Q,CEO);
  2.  
  3. input CLK,CE;
  4. output reg [27:0] Q;
  5. output CEO;
  6. always @(posedge CLK)
  7. if(CE)
  8. if(Q != 28'd99999999)
  9. Q <= Q + 1;
  10. else
  11. Q <= 28'd0;
  12.  
  13. assign CEO = CE & (Q == 28'd99999999);
  14. endmodule
  15. /////////////////////////////////////////////////
  16. module cnt_mux(CLK,CE_mux,Q_mux,CEO_mux);
  17. input CLK, CE_mux;
  18. output reg [27:0] Q_mux;
  19. output CEO_mux;
  20. always @(posedge CLK)
  21. if(CE_mux)
  22. if(Q_mux != 28'd99999999)
  23. Q_mux <= Q_mux + 1;
  24. else
  25. Q_mux <= 28'd0;
  26.  
  27. assign CEO_mux = CE_mux & (Q_mux == 28'd99999999);
  28. endmodule
  29.  
  30. ////////////////////////////////////////////////
  31. module SHF_REG(CLK,CE,Q);
  32. input CLK, CE;
  33. output [3:0] Q;
  34. reg [3:0] Q;
  35.  
  36. always @(posedge CLK)
  37.  if(CE)
  38.     Q <= {Q[2:0],~&Q[2:0]};
  39.  
  40. endmodule
  41. //////////////////////////////////////////////////////
  42. module mux(IN1, IN2, IN3, IN4, ADD, OUT_M);
  43. input [3:0] IN1, IN2, IN3, IN4;
  44. input [1:0] ADD;
  45. output [3:0] OUT_M;
  46. reg [3:0] OUT_M;
  47.  
  48. always @(ADD or IN1 or IN2 or IN3 or IN4)
  49.     case (ADD)
  50.             2'b00 : OUT_M = IN1;
  51.             2'b01 : OUT_M = IN2;
  52.             2'b10 : OUT_M = IN3;
  53.             2'b11 : OUT_M = IN4;
  54.             //default : OUT_M = 4'b0000;
  55.     endcase
  56. endmodule
  57. //////////////////////////////////////////////////////
  58. //module dekoder(IN_DEK, OUT_DEK);
  59. //input [3:0]IN_DEK;
  60. //output [1:0]OUT_DEK;
  61. //
  62. //reg [1:0]OUT_DEK;
  63. //
  64. //
  65. //always @(IN_DEK)
  66. //begin
  67. //  case(IN_DEK)
  68. //      4'b1110 : OUT_DEK = 2'b00;
  69. //      4'b1101 : OUT_DEK = 2'b01;
  70. //      4'b1011 : OUT_DEK = 2'b10;
  71. //      4'b0111 : OUT_DEK = 2'b11;
  72. //      default : OUT_DEK = 2'b00;
  73. //  endcase
  74. //end
  75. //////////////////////////////////////////////////////
  76. ////////////////////////////////////////////////////
  77. module licznik_mux(CLK, CE, OUT_MUXC);
  78. input CLK, CE;
  79. output reg [1:0]OUT_MUXC;
  80.  
  81.  
  82.     always @(posedge CLK)
  83.     begin
  84.         if(CE)
  85.         OUT_MUXC <= OUT_MUXC + 1;
  86.     end
  87.    
  88. endmodule
  89. ////////////////////////////////////////////////////////
  90. module SEG7(BIN, SEG);
  91. input [3:0] BIN;
  92. output [6:0] SEG;
  93. reg [6:0] SEG;
  94.  
  95.    always @(BIN)  
  96.       case (BIN)
  97.           4'b0001 : SEG = 7'b1111001;   // 1
  98.           4'b0010 : SEG = 7'b0100100;   // 2
  99.           4'b0011 : SEG = 7'b0110000;   // 3
  100.           4'b0100 : SEG = 7'b0011001;   // 4
  101.           4'b0101 : SEG = 7'b0010010;   // 5
  102.           4'b0110 : SEG = 7'b0000010;   // 6
  103.           4'b0111 : SEG = 7'b1111000;   // 7
  104.           4'b1000 : SEG = 7'b0000000;   // 8
  105.           4'b1001 : SEG = 7'b0010000;   // 9
  106.           4'b1010 : SEG = 7'b0001000;   // A
  107.           4'b1011 : SEG = 7'b0000011;   // b
  108.           4'b1100 : SEG = 7'b1000110;   // C
  109.           4'b1101 : SEG = 7'b0100001;   // d
  110.           4'b1110 : SEG = 7'b0000110;   // E
  111.           4'b1111 : SEG = 7'b0001110;   // F
  112.           default : SEG = 7'b1000000;   // 0
  113.       endcase
  114. endmodule
  115. ////////////////////////////////////////////////////////////////
  116. module licznik_in(CLK, CE_in, Q_in);
  117.  
  118. input CLK, CE_in;
  119. output [3:0]Q_in;
  120. reg [3:0]Q_in;
  121.  
  122. always @(posedge CLK)
  123. begin
  124.     if(CE_in)
  125.     Q_in <= Q_in + 1;
  126.  
  127. end
  128.  
  129. endmodule
  130. ////////////////////////////////////////////////////////////////
  131.  
  132. module final(SEG, CLK, CE, OUT, CEO,CEO_mux, CE_mux,IN1, IN2, IN3, IN4,OUT_MUXC,OUT_M, Q_in);
  133. input CLK, CE,CE_mux;
  134. output [3:0] IN1, IN2, IN3, IN4;
  135. output [3:0]OUT;
  136. output [6:0]SEG;
  137. output CEO, CEO_mux;
  138.  
  139. output [1:0] OUT_MUXC;
  140. output [3:0] OUT_M, Q_in;
  141. wire [27:0] Q;
  142. wire [27:0] Q_mux; // dlaczego multipleksuje?
  143.  
  144.  
  145. //module cnt(CLK,CE,Q,CEO);
  146. cnt licznik(CLK,CE,Q,CEO);
  147. //module SHF_REG(CLK,CE,Q);
  148. SHF_REG rejestr(CLK, CEO, OUT);
  149. // module SEG7(BIN, SEG);
  150. SEG7 SEG1(OUT_M, SEG);
  151. //module mux(IN1, IN2, IN3, IN4, ADD, OUT_M)
  152. mux mux1(Q_in, Q_in, Q_in, Q_in, OUT_MUXC, OUT_M);
  153. //module cnt_mux(CLK,CE,Q_mux,CEO_mux);
  154. cnt_mux pres_mux(CLK,CE_mux,Q_mux,CEO_mux);
  155. //module licznik_mux(CLK, CE, OUT_MUXC);
  156. licznik_mux licz_mux(CLK, CEO_mux, OUT_MUXC);
  157. //module licznik_in(CLK, CE_in, Q_in)
  158. licznik_in (CLK, CEO_mux, Q_in);
  159.  
  160. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement