Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module barrel_shift
- (
- input logic [7:0] a,
- input logic [2:0] amt,
- input logic lr;
- output logic [7:0] y
- );
- logic [7:0] s0, s1;
- always_comb begin
- // right rotate
- if(lr) begin
- assign s0 = amt[0] ? {a[0], a[7:1]} : a;
- assign s1 = amt[1] ? {s0[1:0], s0[7:2]} : s0;
- assign y = amt[2] ? {s1[3:0], s[7:4]} : s1;
- end
- // left rotate
- else begin
- assign s0 = amt[0] ? {a[6:0], a[7]} : a;
- assign s1 = amt[1] ? {s0[5:0], s0[7:6]} : s0;
- assign y = amt[2] ? {s1[3:0], s1[7:4]} : s1;
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement