How do you plan to solve it?
/*Write your code here*/
module univ_barrel8
(
input wire [7:0] x,
input wire [2:0] sh,mode,
output reg [7:0] y
);
always@*
begin
case(mode)
3'd0:y=x;
3'd1:
begin
case(sh)
3'd1:y={x[6:0],1'd0};
3'd2:y={x[5:0],2'd0};
3'd3:y={x[4:0],3'd0};
3'd4:y={x[3:0],4'd0};
3'd5:y={x[2:0],5'd0};
3'd6:y={x[1:0],6'd0};
3'd7:y={x[0],7'd0};
3'd0:y=x;
endcase
end
3'd2:
begin
case(sh)
3'd1:y={1'd0,x[7:1]};
3'd2:y={2'd0,x[7:2]};
3'd3:y={3'd0,x[7:3]};
3'd4:y={4'd0,x[7:4]};
3'd5:y={5'd0,x[7:5]};
3'd6:y={6'd0,x[7:6]};
3'd7:y={7'd0,x[7]};
3'd0:y=x;
endcase
end
3'd3:
begin
case(sh)
3'd1:y={x[7],x[7:1]};
3'd2:y={{2{x[7]}},x[7:2]};
3'd3:y={{3{x[7]}},x[7:3]};
3'd4:y={{4{x[7]}},x[7:4]};
3'd5:y={{5{x[7]}},x[7:5]};
3'd6:y={{6{x[7]}},x[7:6]};
3'd7:y={{7{x[7]}},x[7]};
3'd0:y=x;
endcase
end
3'd4:
begin
case(sh)
3'd0:y=x;
3'd1:y={x[6:0],x[7]};
3'd2:y={x[5:0],x[7:6]};
3'd3:y={x[4:0],x[7:5]};
3'd4:y={x[3:0],x[7:4]};
3'd5:y={x[3:0],x[7:3]};
3'd6:y={x[1:0],x[7:2]};
3'd7:y={x[0],x[7:1]};
endcase
end
3'd5:
begin
case(sh)
3'd0:y=x;
3'd1:y={x[0],x[7:1]};
3'd2:y={x[1:0],x[7:2]};
3'd3:y={x[2:0],x[7:3]};
3'd4:y={x[3:0],x[7:4]};
3'd5:y={x[4:0],x[7:5]};
3'd6:y={x[5:0],x[7:6]};
3'd7:y={x[6:0],x[7]};
endcase
end
3'd6:y=x;
3'd7:y=x;
endcase
end
endmodule