Advertisement
Guest User

Untitled

a guest
Nov 7th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 4.05 KB | None | 0 0
  1. LIBRARY IEEE;
  2. USE IEEE.std_logic_1164.all;
  3. USE IEEE.std_logic_arith.all;
  4. ENTITY FAMAKIN_2_STAGE_ADDER IS
  5.  GENERIC(P: integer:= 16;
  6. W: integer:= 4;
  7.  E: integer:= 8);
  8. PORT ( CLK :IN STD_LOGIC; --clk
  9. Reset :IN STD_LOGIC; --reset
  10. En :IN STD_LOGIC;
  11. Op_A :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  12. Op_B :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  13. Op_Q :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  14. Op_F :OUT STD_LOGIC_VECTOR(W-2 DOWNTO 0)
  15.  );
  16. END FAMAKIN_2_STAGE_ADDER;
  17.  
  18. ARCHITECTURE STRUCTURAL OF FAMAKIN_2_STAGE_ADDER IS
  19. COMPONENT FAMAKIN_First_BSlice
  20. PORT (
  21. Op_A :IN STD_LOGIC;
  22. Op_B :IN STD_LOGIC;
  23. SUM_Q :OUT STD_LOGIC;
  24. Carry_Q :OUT STD_LOGIC
  25.  );
  26. END COMPONENT;
  27. COMPONENT FAMAKIN_FA_BSlice
  28. PORT (
  29. Op_A :IN STD_LOGIC;
  30. Op_B :IN STD_LOGIC;
  31. Op_C :IN STD_LOGIC;
  32. SUM_Q :OUT STD_LOGIC;
  33. Carry_Q :OUT STD_LOGIC
  34.  );
  35. END COMPONENT;
  36.  
  37.  
  38. COMPONENT REG_FA
  39.  GENERIC(P: integer:= 16;
  40.  W: integer:= 4;
  41.  E: integer:= 8);
  42. PORT ( CLK :IN STD_LOGIC; --clk
  43. Reset :IN STD_LOGIC; --reset
  44. En :IN STD_LOGIC;
  45. Op_A :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  46. Op_B :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  47. Op_Sum :IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- sum
  48. Op_Carry:IN STD_LOGIC; -- carry
  49. Op_AQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  50. Op_BQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  51. Op_SQ :OUT STD_LOGIC_VECTOR(W-1 DOWNTO 0);
  52. Op_C :OUT STD_LOGIC
  53.  );
  54. END COMPONENT;
  55.  
  56.  
  57. COMPONENT REG_FA_lastslice
  58.  GENERIC(P: integer:= 16;
  59.  W: integer:= 4;
  60.  E: integer:= 8);
  61. PORT ( CLK :IN STD_LOGIC; --clk
  62. Reset :IN STD_LOGIC; --reset
  63. En :IN STD_LOGIC;
  64. Op_A :IN STD_LOGIC; -- sign bit
  65. Op_B :IN STD_LOGIC; -- sign bit
  66. Op_Sum :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0); -- sum
  67. Op_Carry:IN STD_LOGIC; -- carry
  68. Op_Q :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  69. Op_F :OUT STD_LOGIC_VECTOR(W-2 DOWNTO 0)
  70.  );
  71. END COMPONENT;
  72.  
  73. SIGNAL S_A1: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  74. SIGNAL S_B1: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  75.  
  76. SIGNAL SUM_Q1: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  77. SIGNAL SUM_Q2: STD_LOGIC_VECTOR(4*W-1 DOWNTO 0);
  78.  
  79. SIGNAL SOP_C1: STD_LOGIC;
  80. SIGNAL SOP_C2: STD_LOGIC;
  81. SIGNAL SOP_C3: STD_LOGIC;
  82. SIGNAL SOP_C4: STD_LOGIC;
  83. SIGNAL SOP_C5: STD_LOGIC;
  84. SIGNAL SOP_C6: STD_LOGIC;
  85. SIGNAL SOP_C7: STD_LOGIC;
  86. SIGNAL SOP_C8: STD_LOGIC;
  87. SIGNAL SOP_C9: STD_LOGIC;
  88. SIGNAL SOP_C10: STD_LOGIC;
  89. SIGNAL SOP_C11: STD_LOGIC;
  90. SIGNAL SOP_C12: STD_LOGIC;
  91. SIGNAL SOP_C13: STD_LOGIC;
  92. SIGNAL SOP_C14: STD_LOGIC;
  93. SIGNAL SOP_C15: STD_LOGIC;
  94. SIGNAL SOP_C16: STD_LOGIC;
  95. SIGNAL SOP_C17: STD_LOGIC;
  96.  
  97. BEGIN
  98. A1: FAMAKIN_First_BSlice
  99. PORT MAP(Op_A(W-4), Op_B(W-4), SUM_Q1(W-4),SOP_C1);
  100. A2: FAMAKIN_FA_BSlice
  101. PORT MAP(Op_A(W-3), Op_B(W-3), SOP_C1, SUM_Q1(W-3), SOP_C2);
  102. A3: FAMAKIN_FA_BSlice
  103. PORT MAP(Op_A(W-2), Op_B(W-2), SOP_C2, SUM_Q1(W-2), SOP_C3);
  104. A4: FAMAKIN_FA_BSlice
  105. PORT MAP(Op_A(W-1), Op_B(W-1), SOP_C3, SUM_Q1(W-1), SOP_C4);
  106. A5: FAMAKIN_FA_BSlice
  107. PORT MAP(Op_A(W), Op_B(W), SOP_C4, SUM_Q1(W), SOP_C5);
  108. A6: FAMAKIN_FA_BSlice
  109. PORT MAP(Op_A(W+1), Op_B(W+1), SOP_C5, SUM_Q1(W+1), SOP_C6);
  110. A7: FAMAKIN_FA_BSlice
  111. PORT MAP(Op_A(W+2), Op_B(W+2), SOP_C6, SUM_Q1(W+2), SOP_C7);
  112. A8: FAMAKIN_FA_BSlice
  113. PORT MAP(Op_A(W+3), Op_B(W+3), SOP_C7, SUM_Q1(W+3), SOP_C8);
  114. A9: REG_FA GENERIC MAP(P-2*W, 2*W, E)
  115. PORT MAP(Clk, Reset, En, Op_A(P-1 DOWNTO 2*W), Op_B(P-1 DOWNTO
  116. 2*W), SUM_Q1, SOP_C8, S_A1, S_B1, SUM_Q2(2*W-1 DOWNTO 0), SOP_C9);
  117.  
  118.  
  119. B1: FAMAKIN_FA_BSlice
  120. PORT MAP(S_A1(W-4), S_B1(W-4), SOP_C9, SUM_Q2(2*W), SOP_C10);
  121. B2: FAMAKIN_FA_BSlice
  122. PORT MAP(S_A1(W-3), S_B1(W-3), SOP_C10, SUM_Q2(2*W+1), SOP_C11);
  123. B3: FAMAKIN_FA_BSlice
  124. PORT MAP(S_A1(W-2), S_B1(W-2), SOP_C11, SUM_Q2(2*W+2), SOP_C12);
  125. B4: FAMAKIN_FA_BSlice
  126. PORT MAP(S_A1(W-1), S_B1(W-1), SOP_C12, SUM_Q2(2*W+3), SOP_C13);
  127. B5: FAMAKIN_FA_BSlice
  128. PORT MAP(S_A1(W), S_B1(W), SOP_C13, SUM_Q2(3*W), SOP_C14);
  129. B6: FAMAKIN_FA_BSlice
  130. PORT MAP(S_A1(W+1), S_B1(W+1), SOP_C14, SUM_Q2(3*W+1), SOP_C15);
  131. B7: FAMAKIN_FA_BSlice
  132. PORT MAP(S_A1(W+2), S_B1(W+2), SOP_C15, SUM_Q2(3*W+2), SOP_C16);
  133. B8: FAMAKIN_FA_BSlice
  134. PORT MAP(S_A1(W+3), S_B1(W+3), SOP_C16, SUM_Q2(3*W+3), SOP_C17);
  135. B9: REG_FA_lastslice GENERIC MAP(P, W, E)
  136. PORT MAP(Clk, Reset, En, S_A1(2*W-1), S_B1(2*W-1),SUM_Q2, SUM_Q2(P-1), OP_Q,
  137. OP_F);
  138. END STRUCTURAL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement