`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