Advertisement
Guest User

Untitled

a guest
Nov 7th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 5.53 KB | None | 0 0
  1. --------------------------------
  2. --- Full Adder in 4 stages
  3. -- Pipelined
  4. -- Clock Cycles
  5. --- Dr. Amoo
  6. --- 10/25/2017
  7. --------------------------------
  8. LIBRARY IEEE;
  9. USE IEEE.std_logic_1164.all;
  10. USE IEEE.std_logic_arith.all;
  11. --USE IEEE.std_logic_unsigned.all;
  12. ----USE IEEE.NUMERIC_STD.all;
  13. ENTITY JOSEPH_4_STAGE_ADDER IS
  14.  GENERIC(P: integer:= 16;
  15.  
  16. W: integer:= 4;
  17.  E: integer:= 8);
  18. PORT ( CLK :IN STD_LOGIC; --clk
  19. Reset :IN STD_LOGIC; --reset
  20. En :IN STD_LOGIC;
  21. Op_A :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  22. Op_B :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  23. Op_Q :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  24. Op_F :OUT STD_LOGIC_VECTOR(W-2 DOWNTO 0)
  25.  );
  26. END JOSEPH_4_STAGE_ADDER;
  27.  
  28. ARCHITECTURE STRUCTURAL OF JOSEPH_4_STAGE_ADDER IS
  29. COMPONENT JOSEPH_First_BSlice
  30. PORT (
  31. Op_A :IN STD_LOGIC;
  32. Op_B :IN STD_LOGIC;
  33. SUM_Q :OUT STD_LOGIC;
  34. Carry_Q :OUT STD_LOGIC
  35.  );
  36. END COMPONENT;
  37. COMPONENT JOSEPH_FA_BSlice
  38. PORT (
  39. Op_A :IN STD_LOGIC;
  40. Op_B :IN STD_LOGIC;
  41. Op_C :IN STD_LOGIC;
  42. SUM_Q :OUT STD_LOGIC;
  43. Carry_Q :OUT STD_LOGIC
  44.  );
  45. END COMPONENT;
  46.  
  47.  
  48. COMPONENT REG_FA
  49.  GENERIC(P: integer:= 16;
  50.  W: integer:= 4;
  51.  E: integer:= 8);
  52. PORT ( CLK :IN STD_LOGIC; --clk
  53. Reset :IN STD_LOGIC; --reset
  54. En :IN STD_LOGIC;
  55. Op_A :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  56. Op_B :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  57. Op_Sum :IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- sum
  58. Op_Carry:IN STD_LOGIC; -- carry
  59. Op_AQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  60. Op_BQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  61. Op_SQ :OUT STD_LOGIC_VECTOR(W-1 DOWNTO 0);
  62. Op_C :OUT STD_LOGIC
  63.  );
  64. END COMPONENT;
  65.  
  66.  
  67. COMPONENT REG_FA_lastslice
  68.  GENERIC(P: integer:= 16;
  69.  W: integer:= 4;
  70.  E: integer:= 8);
  71. PORT ( CLK :IN STD_LOGIC; --clk
  72. Reset :IN STD_LOGIC; --reset
  73. En :IN STD_LOGIC;
  74. Op_A :IN STD_LOGIC; -- sign bit
  75. Op_B :IN STD_LOGIC; -- sign bit
  76. Op_Sum :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0); -- sum
  77. Op_Carry:IN STD_LOGIC; -- carry
  78. Op_Q :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  79. Op_F :OUT STD_LOGIC_VECTOR(W-2 DOWNTO 0)
  80.  );
  81. END COMPONENT;
  82.  
  83. SIGNAL S_A1: STD_LOGIC_VECTOR(3*W-1 DOWNTO 0);
  84. SIGNAL S_A2: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  85. SIGNAL S_A3: STD_LOGIC_VECTOR(1*W-1 DOWNTO 0);
  86. SIGNAL S_B1: STD_LOGIC_VECTOR(3*W-1 DOWNTO 0);
  87. SIGNAL S_B2: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  88. SIGNAL S_B3: STD_LOGIC_VECTOR(1*W-1 DOWNTO 0);
  89. SIGNAL My_SUM_Q1: STD_LOGIC_VECTOR(W-1 DOWNTO 0);
  90. SIGNAL My_SUM_Q2: STD_LOGIC_VECTOR(2*W-1 DOWNTO 0);
  91. SIGNAL My_SUM_Q3: STD_LOGIC_VECTOR(3*W-1 DOWNTO 0);
  92. SIGNAL My_SUM_Q4: STD_LOGIC_VECTOR(4*W-1 DOWNTO 0);
  93. SIGNAL SOP_C1: STD_LOGIC;
  94. SIGNAL SOP_C2: STD_LOGIC;
  95. SIGNAL SOP_C3: STD_LOGIC;
  96. SIGNAL SOP_C4: STD_LOGIC;
  97. SIGNAL SOP_C5: STD_LOGIC;
  98. SIGNAL SOP_C6: STD_LOGIC;
  99. SIGNAL SOP_C7: STD_LOGIC;
  100. SIGNAL SOP_C8: STD_LOGIC;
  101. SIGNAL SOP_C9: STD_LOGIC;
  102. SIGNAL SOP_C10: STD_LOGIC;
  103. SIGNAL SOP_C11: STD_LOGIC;
  104. SIGNAL SOP_C12: STD_LOGIC;
  105. SIGNAL SOP_C13: STD_LOGIC;
  106. SIGNAL SOP_C14: STD_LOGIC;
  107. SIGNAL SOP_C15: STD_LOGIC;
  108. SIGNAL SOP_C16: STD_LOGIC;
  109. SIGNAL SOP_C17: STD_LOGIC;
  110. SIGNAL SOP_C18: STD_LOGIC;
  111. SIGNAL SOP_C19: STD_LOGIC;
  112.  
  113.  
  114.  
  115. BEGIN
  116. ----------------------------------------------------
  117. -- 1st STAGE: 4-Bit Add
  118. ----------------------------------------------------
  119. A1: JOSEPH_First_BSlice
  120. PORT MAP(Op_A(W-4), Op_B(W-4), My_SUM_Q1(W-4),SOP_C1);
  121. A2: JOSEPH_FA_BSlice
  122. PORT MAP(Op_A(W-3), Op_B(W-3), SOP_C1, My_SUM_Q1(W-3), SOP_C2);
  123. A3: JOSEPH_FA_BSlice
  124. PORT MAP(Op_A(W-2), Op_B(W-2), SOP_C2, My_SUM_Q1(W-2), SOP_C3);
  125. A4: JOSEPH_FA_BSlice
  126. PORT MAP(Op_A(W-1), Op_B(W-1), SOP_C3, My_SUM_Q1(W-1), SOP_C4);
  127. A5: REG_FA GENERIC MAP(P-W, W, E)
  128. PORT MAP(Clk, Reset, En, Op_A(P-1 DOWNTO W), Op_B(P-1 DOWNTO
  129. W),My_SUM_Q1, SOP_C4, S_A1, S_B1, My_SUM_Q2(W-1 DOWNTO 0), SOP_C5);
  130.  
  131.  
  132.  
  133. ----------------------------------------------------
  134. -- 2nd STAGE: 4-Bit Add
  135. ----------------------------------------------------
  136. B1: JOSEPH_FA_BSlice
  137. PORT MAP(S_A1(W-4), S_B1(W-4), SOP_C5, My_SUM_Q2(2*W-4),SOP_C6);
  138. B2: JOSEPH_FA_BSlice
  139. PORT MAP(S_A1(W-3), S_B1(W-3), SOP_C6, My_SUM_Q2(2*W-3), SOP_C7);
  140. B3: JOSEPH_FA_BSlice
  141. PORT MAP(S_A1(W-2), S_B1(W-2), SOP_C7, My_SUM_Q2(2*W-2), SOP_C8);
  142. B4: JOSEPH_FA_BSlice
  143. PORT MAP(S_A1(W-1), S_B1(W-1), SOP_C8, My_SUM_Q2(2*W-1), SOP_C9);
  144. B5: REG_FA GENERIC MAP(P-2*W, 2*W, E)
  145. PORT MAP(Clk, Reset, En, S_A1(3*W-1 DOWNTO W), S_B1(3*W-1 DOWNTO
  146. W),My_SUM_Q2, SOP_C9, S_A2, S_B2, My_SUM_Q3(2*W-1 DOWNTO 0), SOP_C10);
  147.  
  148. ----------------------------------------------------
  149. -- 3rd STAGE: 4-Bit Add
  150. ----------------------------------------------------
  151. C1: JOSEPH_FA_BSlice
  152. PORT MAP(S_A2(W-4), S_B2(W-4), SOP_C10, My_SUM_Q3(3*W-4), SOP_C11);
  153. C2: JOSEPH_FA_BSlice
  154. PORT MAP(S_A2(W-3), S_B2(W-3), SOP_C11, My_SUM_Q3(3*W-3), SOP_C12);
  155. C3: JOSEPH_FA_BSlice
  156. PORT MAP(S_A2(W-2), S_B2(W-2), SOP_C12, My_SUM_Q3(3*W-2), SOP_C13);
  157. C4: JOSEPH_FA_BSlice
  158. PORT MAP(S_A2(W-1), S_B2(W-1), SOP_C13, My_SUM_Q3(3*W-1), SOP_C14);
  159. C5: REG_FA GENERIC MAP(P-3*W, 3*W, E)
  160. PORT MAP(Clk, Reset, En, S_A2(2*W-1 DOWNTO W), S_B2(2*W-1 DOWNTO
  161. W),My_SUM_Q3, SOP_C14, S_A3, S_B3, My_SUM_Q4(3*W-1 DOWNTO 0), SOP_C15);
  162.  
  163. ----------------------------------------------------
  164. -- 4rd STAGE: 4-Bit Add
  165. ----------------------------------------------------
  166. D1: JOSEPH_FA_BSlice
  167. PORT MAP(S_A3(W-4), S_B3(W-4), SOP_C15, My_SUM_Q4(4*W-4), SOP_C16);
  168. D2: JOSEPH_FA_BSlice
  169. PORT MAP(S_A3(W-3), S_B3(W-3), SOP_C16, My_SUM_Q4(4*W-3), SOP_C17);
  170. D3: JOSEPH_FA_BSlice
  171. PORT MAP(S_A3(W-2), S_B3(W-2), SOP_C17, My_SUM_Q4(4*W-2), SOP_C18);
  172. D4: JOSEPH_FA_BSlice
  173. PORT MAP(S_A3(W-1), S_B3(W-1), SOP_C18, My_SUM_Q4(4*W-1), SOP_C19);
  174. D5: REG_FA_lastslice GENERIC MAP(P, W, E)
  175. PORT MAP(Clk, Reset, En, S_A3(W-1), S_B3(W-1),My_SUM_Q4, My_SUM_Q4(P-1), OP_Q,
  176. OP_F);
  177. END STRUCTURAL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement