`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output [4:0]out,
output validout
);
//*************code***********//
reg [4:0] out;
reg validout;
reg [15:0] data_clock;
always@(posedge clk or negedge rst) begin
    if(!rst) begin
        out <= 0;
        validout <= 0;
        data_clock <= 0;
    end
    else begin
        case(sel)
            2'd0: begin
                out <= 0;
                validout <= 0;
                data_clock <= d;
            end
            2'd1:begin
                out <= data_clock[3:0] + data_clock[7:4];
                validout <= 1;
            end
            2'd2:begin
                out <= data_clock[3:0] + data_clock[11:8];
                validout <= 1;
            end
            2'd3:begin
                out <= data_clock[3:0] + data_clock[15:12];
                validout <= 1;
            end
            default:begin
                out <= 0;
                validout <= 0;
            end
        endcase
    end
end
//*************code***********//
endmodule