Advertisement
RybaSG

7SEG_ROM

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