`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2022/04/03 10:44:57
// Design Name: 
// Module Name: set_clk
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module set_clk(
    output [3:0] set_m1,
    output [3:0] set_m0,
    output [3:0] set_s1,
    output [3:0] set_s0,
    input add_min,
    input add_sec,
    input clk,
    input rst_n,
    input set_enable
    );
    wire ca1, ca2, ca3, ca4;
    reg minadd, secadd;
    
    up_count U_set_m1(
        .value(set_m1),
        .carry(ca4),
        .clk(clk),
        .limit(4'd5),
        .rst_n(rst_n),
        .increase(ca3)
    );
    up_count U_set_m0(
        .value(set_m0),
        .carry(ca3),
        .clk(clk),
        .limit(4'd9),
        .rst_n(rst_n),
        .increase(minadd)
    );
    up_count U_set_s1(
        .value(set_s1),
        .carry(ca2),
        .clk(clk),
        .limit(4'd5),
        .rst_n(rst_n),
        .increase(ca1)
    );
    up_count U_set_s0(
        .value(set_s0),
        .carry(ca1),
        .clk(clk),
        .limit(4'd9),
        .rst_n(rst_n),
        .increase(secadd)
    );
    always@*
        begin
        minadd = add_min & set_enable;
        secadd = add_sec & set_enable;
        end
endmodule