Advertisement
potterhead2003

gasb a

Jul 28th, 2021 (edited)
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //`timescale 1ns / 1ps
  2. ////////////////////////////////////////////////////////////////////////////////////
  3. //// Company:
  4. //// Engineer:
  5. ////
  6. //// Create Date:    14:04:54 07/27/2021
  7. //// Design Name:
  8. //// Module Name:    johnsonveri
  9. //// Project Name:
  10. //// Target Devices:
  11. //// Tool versions:
  12. //// Description:
  13. ////
  14. //// Dependencies:
  15. ////
  16. //// Revision:
  17. //// Revision 0.01 - File Created
  18. //// Additional Comments:
  19. ////
  20. ////////////////////////////////////////////////////////////////////////////////////
  21. //
  22. //module a25hzclk(input clk,
  23. //                  input reset,
  24. //                  output a25clk
  25. //                  );
  26. //reg [24:0]ctr;
  27. //assign a25clk=ctr[24];
  28. //
  29. //always@(posedge clk)
  30. //begin
  31. //if (reset) ctr=0;
  32. //else ctr=ctr+1;
  33. //end                  
  34. //endmodule
  35. //
  36. //module a100hzclk(input clk,
  37. //                  input reset,
  38. //                  output a100clk
  39. //                  );
  40. //reg [20:0]ctr;
  41. //assign a100clk=ctr[17];
  42. //
  43. //always@(posedge clk)
  44. //begin
  45. //if (reset) ctr=0;
  46. //else ctr=ctr+1;
  47. //end                  
  48. //endmodule
  49. //
  50. //
  51. //module johnson1(input clk,
  52. //                   input reset,
  53. //                   input reset1,
  54. //                   input reset2,
  55. //                   output reg [3:0] jctr,
  56. //                   output a25clk,
  57. //                   output a100clk,
  58. //                   output reg [3:0] x,
  59. //                   output reg [6:0] y
  60. //                   );
  61. //                   
  62. //a25hzclk a25 (.clk(clk),.reset(reset),.a25clk(a25clk));
  63. //
  64. //a100hzclk a100 (.clk(clk),.reset(reset2),.a100clk(a100clk));
  65. //
  66. //
  67. ///*reg [3:0] jc;
  68. //reg of1;*/
  69. //reg [15:0] sseg;
  70. //reg [1:0] ctr;
  71. //
  72. //
  73. //
  74. //always@(posedge a25clk)
  75. //begin
  76. //if (reset1==1) begin
  77. ////jctr=0;
  78. //sseg=0;
  79. //end
  80. //else begin
  81. ///*{of1,jc}=jctr<<1;
  82. //jctr={jc[3],jc[2],jc[1],(~of1)};
  83. //*/
  84. //{jctr[3:1],jctr[0]}={jctr[2:0],~(jctr[3])};
  85. //{sseg[15:12],sseg[11:8],sseg[7:4],sseg[3:0]}={sseg[11:8],sseg[7:4],sseg[3:0],jctr};
  86. //end
  87. //end
  88. //
  89. //always@(posedge a100clk)
  90. //begin
  91. //if (reset1==1) begin
  92. //
  93. //x=4'b0111;
  94. //ctr=2'b0;
  95. //end
  96. //
  97. //else begin
  98. //{x[3],x[2:0]}={x[0],x[3:1]};
  99. //ctr=ctr+1;
  100. //
  101. //if (ctr==0)
  102. //begin
  103. //case(sseg[15:12])
  104. //0:y=7'b0000001;
  105. //1:y=7'b1001111;
  106. //3:y=7'b0000110;
  107. //7:y=7'b0001111;
  108. //8:y=7'b0000000;
  109. //12:y=7'b0110001;
  110. //14:y=7'b0110000;
  111. //15:y=7'b0111000;
  112. //endcase
  113. //end
  114. //else if (ctr==2'b01)
  115. //begin
  116. //case(sseg[11:8])
  117. //0:y=7'b0000001;
  118. //1:y=7'b1001111;
  119. //3:y=7'b0000110;
  120. //7:y=7'b0001111;
  121. //8:y=7'b0000000;
  122. //12:y=7'b0110001;
  123. //14:y=7'b0110000;
  124. //15:y=7'b0111000;
  125. //endcase
  126. //end
  127. //else if (ctr==2'b10)
  128. //begin
  129. //case(sseg[7:4])
  130. //0:y=7'b0000001;
  131. //1:y=7'b1001111;
  132. //3:y=7'b0000110;
  133. //7:y=7'b0001111;
  134. //8:y=7'b0000000;
  135. //12:y=7'b0110001;
  136. //14:y=7'b0110000;
  137. //15:y=7'b0111000;
  138. //endcase
  139. //end
  140. //else if (ctr==2'b11)
  141. //begin
  142. //case(sseg[3:0])
  143. //0:y=7'b0000001;
  144. //1:y=7'b1001111;
  145. //3:y=7'b0000110;
  146. //7:y=7'b0001111;
  147. //8:y=7'b0000000;
  148. //12:y=7'b0110001;
  149. //14:y=7'b0110000;
  150. //15:y=7'b0111000;
  151. //endcase
  152. //end
  153. //end
  154. //end
  155. //endmodule
  156.  
  157.  
  158. module clk1(input clk, input reset, output a_clk1);
  159. reg [22:0] counter;
  160. assign a_clk1=counter[22];
  161.  
  162. always@(posedge clk)
  163. begin
  164.     if (reset==1'b1) counter=23'b0;
  165.     else counter=counter+23'b1;
  166. end
  167. endmodule
  168.  
  169.  
  170.  
  171. module clk2(input clk, input reset, output a_clk2);
  172. reg [16:0] counter;
  173. assign a_clk2=counter[16];
  174.  
  175. always@(posedge clk)
  176. begin
  177.     if (reset==1'b1) counter=17'b0;
  178.     else counter=counter+17'b1;
  179. end
  180. endmodule
  181.  
  182.  
  183.  
  184. module johnson_counter(input clk, input reset, output reg [6:0]y, output reg[3:0] en, output clk25, output clk200);
  185.  
  186. reg [3:0] x;
  187. reg [15:0] current_display;
  188. reg [1:0] display_counter;
  189.  
  190. clk1 c1(clk,reset,clk25);
  191. clk2 c2(clk,reset,clk200);
  192.  
  193. always@(posedge clk25)
  194. begin
  195.     if (reset==1'b1)
  196.         begin
  197.         x=4'b0000;
  198.         current_display=16'b0;
  199.         end
  200.     else
  201.         begin
  202.         {x[3:1],x[0]}={x[2:0],~x[3]};
  203.         {current_display[15:12],current_display[11:8],current_display[7:4],current_display[3:0]}={current_display[11:8],current_display[7:4],current_display[3:0],x};
  204.         end
  205.    
  206. end
  207.  
  208. always@(posedge clk200)
  209. begin
  210.  
  211. if (reset==1'b1)
  212.     begin
  213.     en=4'b0111;
  214.     display_counter=2'b0;
  215.     end
  216. else
  217.     begin
  218.     {en[3:1],en[0]}={en[2:0],en[3]};
  219.     display_counter=display_counter+1;
  220.    
  221.    
  222.     if (display_counter==2'b00)
  223.         begin
  224.         case(current_display[3:0])
  225.         0:y=7'b0000001;
  226.         1:y=7'b1001111;
  227.         3:y=7'b0000110;
  228.         7:y=7'b0001111;
  229.         8:y=7'b0000000;
  230.         12:y=7'b0110001;
  231.         14:y=7'b0110000;
  232.         15:y=7'b0111000;
  233.         endcase
  234.         end
  235.     else if (display_counter==2'b01)
  236.         begin
  237.         case(current_display[7:4])
  238.         0:y=7'b0000001;
  239.         1:y=7'b1001111;
  240.         3:y=7'b0000110;
  241.         7:y=7'b0001111;
  242.         8:y=7'b0000000;
  243.         12:y=7'b0110001;
  244.         14:y=7'b0110000;
  245.         15:y=7'b0111000;
  246.         endcase
  247.         end
  248.     else if (display_counter==2'b10)
  249.         begin
  250.         case(current_display[11:8])
  251.         0:y=7'b0000001;
  252.         1:y=7'b1001111;
  253.         3:y=7'b0000110;
  254.         7:y=7'b0001111;
  255.         8:y=7'b0000000;
  256.         12:y=7'b0110001;
  257.         14:y=7'b0110000;
  258.         15:y=7'b0111000;
  259.         endcase
  260.         end
  261.     else if (display_counter==2'b11)
  262.         begin
  263.         case(current_display[15:12])
  264.         0:y=7'b0000001;
  265.         1:y=7'b1001111;
  266.         3:y=7'b0000110;
  267.         7:y=7'b0001111;
  268.         8:y=7'b0000000;
  269.         12:y=7'b0110001;
  270.         14:y=7'b0110000;
  271.         15:y=7'b0111000;
  272.         endcase
  273.         end
  274.    
  275.    
  276.     end
  277.    
  278.  
  279. end
  280.  
  281.  
  282.  
  283.  
  284.  
  285. endmodule
  286.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement