`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 [1:0]   cnt;
reg [7:0]   d_reg;  //存储输入的d值

always@(posedge clk or negedge rst)
    if(!rst)
        cnt <=  2'd0;
    else    
        cnt <=  cnt + 1'b1;


always@(posedge clk or negedge rst)
    if(!rst)
        input_grant <=  1'b0;
    else    if(cnt==2'd0)
        input_grant <=  1'b1;
    else
        input_grant <=  1'b0;

always@(posedge clk or negedge rst)
    if(!rst)
        d_reg   <= 8'd0;
    else    if(cnt==2'd0)
        d_reg   <=  d;
    else    
        d_reg   <=  d_reg;


always@(posedge clk or negedge rst)
    if(!rst)
        out <=  10'd0;
    else    if(cnt==2'd0)
        out <=  d;
    else    if(cnt==2'd1)
        out <=  (d_reg<<1) + d_reg;
    else    if(cnt==2'd2)
        out <=  (d_reg<<2) + (d_reg<<1) + d_reg;
    else    if(cnt==2'd3)
        out <=  d_reg<<3;


//*************code***********//
endmodule