Advertisement
Guest User

Untitled

a guest
Oct 20th, 2012
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff --git a/rtl/verilog/mor1kx_execute_alu.v b/rtl/verilog/mor1kx_execute_alu.v
  2. index fab06f8..8c92468 100644
  3. --- a/rtl/verilog/mor1kx_execute_alu.v
  4. +++ b/rtl/verilog/mor1kx_execute_alu.v
  5. @@ -400,33 +400,50 @@ module mor1kx_execute_alu
  6.        end
  7.     endgenerate
  8.  
  9. +   wire ffl1_valid;
  10.     generate
  11. -      if (FEATURE_FFL1=="ENABLED") begin
  12. -         assign ffl1_result = (opc_alu_secondary_i[2]) ?
  13. -              
  14. -                              (a[31] ? 32 : a[30] ? 31 : a[29] ? 30 :
  15. -                               a[28] ? 29 : a[27] ? 28 : a[26] ? 27 :
  16. -                               a[25] ? 26 : a[24] ? 25 : a[23] ? 24 :
  17. -                               a[22] ? 23 : a[21] ? 22 : a[20] ? 21 :
  18. -                               a[19] ? 20 : a[18] ? 19 : a[17] ? 18 :
  19. -                               a[16] ? 17 : a[15] ? 16 : a[14] ? 15 :
  20. -                               a[13] ? 14 : a[12] ? 13 : a[11] ? 12 :
  21. -                               a[10] ? 11 : a[9] ? 10 : a[8] ? 9 :
  22. -                               a[7] ? 8 : a[6] ? 7 : a[5] ? 6 : a[4] ? 5 :
  23. -                               a[3] ? 4 : a[2] ? 3 : a[1] ? 2 : a[0] ? 1 : 0 ) :
  24. -                              (a[0] ? 1 : a[1] ? 2 : a[2] ? 3 : a[3] ? 4 :
  25. -                               a[4] ? 5 : a[5] ? 6 : a[6] ? 7 : a[7] ? 8 :
  26. -                               a[8] ? 9 : a[9] ? 10 : a[10] ? 11 : a[11] ? 12 :
  27. -                               a[12] ? 13 : a[13] ? 14 : a[14] ? 15 :
  28. -                               a[15] ? 16 : a[16] ? 17 : a[17] ? 18 :
  29. -                               a[18] ? 19 : a[19] ? 20 : a[20] ? 21 :
  30. -                               a[21] ? 22 : a[22] ? 23 : a[23] ? 24 :
  31. -                               a[24] ? 25 : a[25] ? 26 : a[26] ? 27 :
  32. -                               a[27] ? 28 : a[28] ? 29 : a[29] ? 30 :
  33. -                               a[30] ? 31 : a[31] ? 32 : 0);
  34. +      if (FEATURE_FFL1!="NONE") begin
  35. +    wire [OPTION_OPERAND_WIDTH-1:0] ffl1;
  36. +    assign ffl1 = (opc_alu_secondary_i[2]) ?
  37. +              (a[31] ? 32 : a[30] ? 31 : a[29] ? 30 :
  38. +           a[28] ? 29 : a[27] ? 28 : a[26] ? 27 :
  39. +           a[25] ? 26 : a[24] ? 25 : a[23] ? 24 :
  40. +           a[22] ? 23 : a[21] ? 22 : a[20] ? 21 :
  41. +           a[19] ? 20 : a[18] ? 19 : a[17] ? 18 :
  42. +           a[16] ? 17 : a[15] ? 16 : a[14] ? 15 :
  43. +           a[13] ? 14 : a[12] ? 13 : a[11] ? 12 :
  44. +           a[10] ? 11 : a[9] ? 10 : a[8] ? 9 :
  45. +           a[7] ? 8 : a[6] ? 7 : a[5] ? 6 : a[4] ? 5 :
  46. +           a[3] ? 4 : a[2] ? 3 : a[1] ? 2 : a[0] ? 1 : 0 ) :
  47. +              (a[0] ? 1 : a[1] ? 2 : a[2] ? 3 : a[3] ? 4 :
  48. +           a[4] ? 5 : a[5] ? 6 : a[6] ? 7 : a[7] ? 8 :
  49. +           a[8] ? 9 : a[9] ? 10 : a[10] ? 11 : a[11] ? 12 :
  50. +           a[12] ? 13 : a[13] ? 14 : a[14] ? 15 :
  51. +           a[15] ? 16 : a[16] ? 17 : a[17] ? 18 :
  52. +           a[18] ? 19 : a[19] ? 20 : a[20] ? 21 :
  53. +           a[21] ? 22 : a[22] ? 23 : a[23] ? 24 :
  54. +           a[24] ? 25 : a[25] ? 26 : a[26] ? 27 :
  55. +           a[27] ? 28 : a[28] ? 29 : a[29] ? 30 :
  56. +           a[30] ? 31 : a[31] ? 32 : 0);
  57. +    generate
  58. +       if (FEATURE_FFL1=="REGISTERED") begin
  59. +          reg [OPTION_OPERAND_WIDTH-1:0] ffl1_result_r;
  60. +
  61. +          assign ffl1_valid = !decode_valid_i;
  62. +          assign ffl1_result = ffl1_result_r;
  63. +
  64. +          always @(posedge clk)
  65. +        if (decode_valid_i)
  66. +          ffl1_result_r = ffl1;
  67. +       end else begin
  68. +          assign ffl1_result = ffl1;
  69. +          assign ffl1_valid = 1'b1;
  70. +       end
  71. +    endgenerate
  72.        end
  73.        else begin
  74. -         assign ffl1_result = adder_result;
  75. +    assign ffl1_result = adder_result;
  76. +    assign ffl1_valid = alu_result_valid;
  77.        end
  78.     endgenerate
  79.  
  80. @@ -681,6 +698,9 @@ module mor1kx_execute_alu
  81.               `OR1K_ALU_OPC_DIVU:
  82.                 alu_valid = div_valid;
  83.  
  84. +           `OR1K_ALU_OPC_FFL1:
  85. +             alu_valid = ffl1_valid;
  86. +
  87.             `OR1K_ALU_OPC_SHRT:
  88.               alu_valid = shift_valid;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement