The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Code
By Guest on 14th May 2019 04:19:22 PM | Syntax: VERILOG | Views: 1



New paste | Download | Show/Hide line no. | Copy text to clipboard
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date:    10:37:33 04/30/2019
  7. // Design Name:
  8. // Module Name:    counter
  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. module counter(
  22.         input wire clk_1hz,
  23.         input wire clk_3hz,
  24.         input wire pauseButton,
  25.         input wire resetButton,
  26.         input wire adjustButton,
  27.         output reg [3:0] s0,
  28.         output reg [3:0] s1,
  29.         output reg [3:0] m0,
  30.         output reg [3:0] m1
  31.         );
  32.  
  33.     //reg [3:0] s0;
  34.     //reg [3:0] s1;
  35.     //reg [3:0] m0;
  36.     //reg [3:0] m1;
  37.    
  38.     reg play;
  39.     reg adjust_seconds;
  40.     reg adjust_minutes;
  41.     reg adjust_none;
  42.    
  43.     initial begin
  44.         s0 = 0;
  45.         s1 = 0;
  46.         m0 = 0;
  47.         m1 = 0;
  48.         play = 1;
  49.         adjust_seconds = 0;
  50.         adjust_minutes = 0;
  51.         adjust_none = 1;
  52.     end
  53.    
  54.      always @(posedge clk_1hz)
  55.      begin
  56.      
  57.         if (resetButton) begin
  58.             s0 = 0;
  59.             s1 = 0;
  60.             m0 = 0;
  61.             m1 = 0;
  62.         end
  63.         else begin
  64.         if (pauseButton) play = !play;
  65.      
  66.         if (play && adjust_none) begin
  67.         if (m1 == 5 && m0 == 9 && s1 == 5 && s0 == 9) begin
  68.             s0 = 0; s1 = 0; m0 = 0; m1 = 0;
  69.         end
  70.         else if (m0 == 9 && s1 == 5 && s0 == 9) begin
  71.             m1 = m1 + 1; m0 = 0; s1 = 0; s0 = 0;
  72.         end
  73.         else if (s1 == 5 && s0 == 9) begin
  74.             m0 = m0 + 1;  s1 = 0; s0 = 0;
  75.         end
  76.         else if (s0 == 9) begin
  77.             s1 = s1 + 1; s0 = 0;
  78.         end
  79.         else
  80.             begin
  81.             s0 = s0 + 1;
  82.             //$display(s0);
  83.         end
  84.         end
  85.        
  86.         if (adjustButton) begin
  87.             if (adjust_none) begin
  88.                 adjust_none = 0;
  89.                 adjust_minutes = 1;
  90.             end
  91.             else if (adjust_minutes) begin
  92.                 adjust_seconds = 1;
  93.                 adjust_minutes = 0;
  94.             end
  95.             else if (adjust_seconds) begin
  96.                 adjust_none = 1;
  97.                 adjust_seconds = 0;
  98.             end
  99.         end
  100.  
  101.         if (play && adjust_minutes) begin
  102.             if (m1 == 5 && m0 >= 5) begin
  103.                 m1 = 0; m0 = (m0 + 5) % 10 ;
  104.             end
  105.             else if (m0 >= 5) begin
  106.                 m1 = m1 + 1; m0 = (m0 + 5) % 10 ;
  107.                 end
  108.             else begin
  109.                 m0 = m0 + 5;
  110.             //$display(s0);
  111.                 end
  112.         end
  113.  
  114.         if (play && adjust_seconds) begin
  115.             if (s1 == 5 && s0 >= 5) begin
  116.                 s1 = 0; s0 = (s0 + 5) % 10 ;
  117.             end
  118.             else if (s0 >= 5) begin
  119.                 s1 = s1 + 1; s0 = (s0 + 5) % 10 ;
  120.                 end
  121.             else begin
  122.                 s0 = s0 + 5;
  123.             //$display(s0);
  124.             end
  125.         end
  126.      end
  127. endmodule



  • Recent Pastes