`timescale 1ns/1ns module multi_sel( input [7:0]d , input clk, input rst, output reg input_grant, output reg [10:0]out ); //*************code***********// reg [2:0] cnt ; reg [7:0] d_reg; always@(posedge clk or negedge rst)begin if(!rst) cnt <= 'd0; else if(cnt == 'd3 ) cnt <= 'd0; else cnt <= cnt + 1'b1; end always@(posedge clk or negedge rst)begin if(!rst) begin out <= 'd0 ; input_grant <= 1'b0; end else begin case(cnt) 3'd0: begin out <= d ; input_grant <= 1'b1; d_reg <= d; end 3'd1: begin out <= (d_reg<<2)-d_reg ; input_grant <= 1'b0; end 3'd2: begin out <= (d_reg<<3)-d_reg ; input_grant <= 1'b0; end 3'd3: begin out <= (d_reg<<3) ; input_grant <= 1'b0; end default:; endcase end end //*************code***********// endmodule