Advertisement
potterhead2003

DigitalClock_LAB_try2

Aug 2nd, 2021
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2.  
  3. module dc_clk(input clk, input reset, output out_clk);
  4.  
  5.     reg [20:0] ctr;   //change it back to 23
  6.     assign out_clk = ctr[20];
  7.    
  8.     always@(posedge clk) begin
  9.         ctr = (reset == 1)?(0):(ctr + 1);
  10.     end
  11.  
  12. endmodule
  13.  
  14. module en_clk(input clk, input reset, output out_clk);
  15.  
  16.     reg [15:0] ctr;
  17.     assign out_clk = ctr[15];
  18.    
  19.     always@(posedge clk) begin
  20.         ctr = (reset == 1)?(0):(ctr + 1);
  21.     end
  22.  
  23. endmodule
  24.  
  25.  
  26. module digital_clock(input clk, input reset1, input reset2, output reg [3:0] EN, output reg [6:0] y, output reg colon
  27.     );
  28.    
  29.     reg [5:0] s;
  30.     reg [5:0] m;
  31.     reg [5:0] h;
  32.    
  33.     reg [1:0] en_ctr;
  34.    
  35.     wire out_clk1, out_clk2;
  36.    
  37.     dc_clk dc1(clk, reset1,out_clk1);
  38.     en_clk en1(clk, reset2, out_clk2);
  39.    
  40.     always@(posedge out_clk1) begin
  41.    
  42.         if (reset1 == 1) begin
  43.             s = 0;
  44.             m = 0;
  45.             h = 0;
  46.         end
  47.        
  48.         else begin
  49.             colon = ~colon;
  50.             if (s == 60) s = 0;
  51.             else s = s + 1;
  52.  
  53.        
  54.             if (s == 60) begin
  55.                 m = m + 1;
  56.             end
  57.            
  58.             if (m == 60) begin
  59.                 h = h + 1;
  60.             end
  61.        
  62.         end
  63.        
  64.     end
  65.    
  66.  
  67.  
  68.     always@(posedge out_clk2) begin
  69.    
  70.     if (reset2 == 1) begin
  71.         EN = 4'b1110;
  72.         en_ctr = 0;
  73.     end
  74.    
  75.     else begin
  76.        
  77.         if (en_ctr == 0) begin
  78.             EN = 4'b1110;
  79.             case(m%10)
  80.             0:y = 7'b0000001;
  81.             1:y = 7'b1001111;
  82.             2:y = 7'b0010010;
  83.             3:y = 7'b0000110;
  84.             4:y = 7'b1001100;
  85.             5:y = 7'b0100100;
  86.             6:y = 7'b0100000;
  87.             7:y = 7'b0001111;
  88.             8:y = 7'b0000000;
  89.             9:y = 7'b0000100;
  90.  
  91.             endcase
  92.         end
  93.        
  94.         else if (en_ctr == 1) begin
  95.             EN = 4'b1101;
  96.             case(m/10)
  97.             0:y = 7'b0000001;
  98.             1:y = 7'b1001111;
  99.             2:y = 7'b0010010;
  100.             3:y = 7'b0000110;
  101.             4:y = 7'b1001100;
  102.             5:y = 7'b0100100;
  103.             6:y = 7'b0100000;
  104.             7:y = 7'b0001111;
  105.             8:y = 7'b0000000;
  106.             9:y = 7'b0000100;
  107.  
  108.             endcase
  109.         end
  110.        
  111.         else if (en_ctr == 2) begin
  112.             EN = 4'b1011;
  113.             case(h%10)
  114.             0:y = 7'b0000001;
  115.             1:y = 7'b1001111;
  116.             2:y = 7'b0010010;
  117.             3:y = 7'b0000110;
  118.             4:y = 7'b1001100;
  119.             5:y = 7'b0100100;
  120.             6:y = 7'b0100000;
  121.             7:y = 7'b0001111;
  122.             8:y = 7'b0000000;
  123.             9:y = 7'b0000100;
  124.  
  125.             endcase
  126.         end
  127.        
  128.         else if (en_ctr == 3) begin
  129.             EN = 4'b0111;
  130.             case(h/10)
  131.             0:y = 7'b0000001;
  132.             1:y = 7'b1001111;
  133.             2:y = 7'b0010010;
  134.             3:y = 7'b0000110;
  135.             4:y = 7'b1001100;
  136.             5:y = 7'b0100100;
  137.             6:y = 7'b0100000;
  138.             7:y = 7'b0001111;
  139.             8:y = 7'b0000000;
  140.             9:y = 7'b0000100;
  141.  
  142.             endcase
  143.         end
  144.        
  145.         en_ctr = en_ctr + 1;
  146.  
  147.        
  148.     end
  149.    
  150.    
  151.     end
  152.  
  153. endmodule
  154.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement