potterhead2003

Lab5

Jul 27th, 2021 (edited)
65
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. end
  79. else begin
  80. /*{of1,jc}=jctr<<1;
  81. jctr={jc[3],jc[2],jc[1],(~of1)};
  82. */
  83. {jctr[3:1],jctr[0]}={jctr[2:0],~(jctr[3])};
  84. {sseg[15:12],sseg[11:8],sseg[7:4],sseg[3:0]}={sseg[11:8],sseg[7:4],sseg[3:0],jctr};
  85. end
  86. end
  87.  
  88. always@(posedge a100clk)
  89. begin
  90. if (reset1==1) begin
  91. x=4'b0111;
  92. ctr=2'b0;
  93. end
  94.  
  95. else begin
  96. {x[3],x[2:0]}={x[0],x[3:1]};
  97. ctr=ctr+1;
  98.  
  99. if (ctr==0)
  100. begin
  101. case(sseg[15:12])
  102. 0:y=7'b0000001;
  103. 1:y=7'b1001111;
  104. 3:y=7'b0000110;
  105. 7:y=7'b0001111;
  106. 8:y=7'b0000000;
  107. 12:y=7'b0110001;
  108. 14:y=7'b0110000;
  109. 15:y=7'b0111000;
  110. endcase
  111. end
  112. else if (ctr==2'b01)
  113. begin
  114. case(sseg[11:8])
  115. 0:y=7'b0000001;
  116. 1:y=7'b1001111;
  117. 3:y=7'b0000110;
  118. 7:y=7'b0001111;
  119. 8:y=7'b0000000;
  120. 12:y=7'b0110001;
  121. 14:y=7'b0110000;
  122. 15:y=7'b0111000;
  123. endcase
  124. end
  125. else if (ctr==2'b10)
  126. begin
  127. case(sseg[7:4])
  128. 0:y=7'b0000001;
  129. 1:y=7'b1001111;
  130. 3:y=7'b0000110;
  131. 7:y=7'b0001111;
  132. 8:y=7'b0000000;
  133. 12:y=7'b0110001;
  134. 14:y=7'b0110000;
  135. 15:y=7'b0111000;
  136. endcase
  137. end
  138. else if (ctr==2'b11)
  139. begin
  140. case(sseg[3:0])
  141. 0:y=7'b0000001;
  142. 1:y=7'b1001111;
  143. 3:y=7'b0000110;
  144. 7:y=7'b0001111;
  145. 8:y=7'b0000000;
  146. 12:y=7'b0110001;
  147. 14:y=7'b0110000;
  148. 15:y=7'b0111000;
  149. endcase
  150. end
  151. end
  152. end
  153. endmodule
  154.  
Add Comment
Please, Sign In to add comment