Build a 100-bit left/right rotator, with synchronous load and left/right enable. A rotator shifts-in the shifted-out bit from the other end of the register, unlike a shifter that discards the shifted-out bit and shifts in a zero. If enabled, a rotator rotates the bits around and does not modify/discard them.
题目网站
1 module top_module(
2 input clk,
3 input load,
4 input [1:0] ena,
5 input [99:0] data,
6 output reg [99:0] q);
7 always @(posedge clk) begin
8 if(load) begin
9 q <= data;
10 end
11 else begin
12 case (ena)
13 2'b01:q <= {q[0],q[99:1]};
14 2'b10:q <= {q[98:0],q[99]};
15 default:q <= q;
16 endcase
17 end
18 end
19
20 endmodule