1
0

LeftShifter.v.html 505 B

12345678910111213141516171819202122
  1. `timescale 1ns / 1ps // NW 9.11.2016
  2. module LeftShifter(
  3. input [31:0] x,
  4. input [4:0] sc,
  5. output [31:0] y);
  6. // shifter for LSL
  7. wire [1:0] sc0, sc1;
  8. wire [31:0] t1, t2;
  9. assign sc0 = sc[1:0];
  10. assign sc1 = sc[3:2];
  11. assign t1 = (sc0 == 3) ? {x[28:0], 3'b0} :
  12. (sc0 == 2) ? {x[29:0], 2'b0} :
  13. (sc0 == 1) ? {x[30:0], 1'b0} : x;
  14. assign t2 = (sc1 == 3) ? {t1[19:0], 12'b0} :
  15. (sc1 == 2) ? {t1[23:0], 8'b0} :
  16. (sc1 == 1) ? {t1[27:0], 4'b0} : t1;
  17. assign y = sc[4] ? {t2[15:0], 16'b0} : t2;
  18. endmodule