`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