Advertisement
Guest User

Untitled

a guest
Nov 7th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.87 KB | None | 0 0
  1. --------------------------------
  2. --- Full Adder Components
  3. --- Dr. Amoo
  4. --- 10/25/2017
  5. --------------------------------
  6. --------------------------------------
  7. --- Full Adder -- First- bit- slice
  8. --- Dr. Amoo
  9. --- 10/25/201
  10. --------------------------------------
  11. LIBRARY IEEE;
  12. USE IEEE.std_logic_1164.all;
  13. USE IEEE.std_logic_arith.all;
  14. ENTITY JOSEPH_First_BSlice IS
  15. PORT (
  16. Op_A :IN STD_LOGIC;
  17. Op_B :IN STD_LOGIC;
  18. SUM_Q :OUT STD_LOGIC;
  19. Carry_Q :OUT STD_LOGIC
  20.  );
  21. END JOSEPH_First_BSlice;
  22. ARCHITECTURE BEH_first_BS OF JOSEPH_First_BSlice IS
  23. CONSTANT My_C: STD_LOGIC:='0';
  24. BEGIN
  25. SUM_Q <= OP_A XOR OP_B XOR My_C;
  26. Carry_Q <= ((OP_A XOR OP_B) AND My_C) OR (OP_A AND OP_B);
  27. END BEH_first_BS;
  28.  
  29. --------------------------------
  30. --- Full Adder -- 1-bit slice
  31. --- Dr. Amoo
  32. --- 10/25/2017
  33. --------------------------------
  34. LIBRARY IEEE;
  35. USE IEEE.std_logic_1164.all;
  36. USE IEEE.std_logic_arith.all;
  37. ENTITY JOSEPH_FA_BSlice IS
  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 JOSEPH_FA_BSlice;
  46.  
  47. ARCHITECTURE BEH_BS OF JOSEPH_FA_BSlice IS
  48. BEGIN
  49. SUM_Q <= OP_A XOR OP_B XOR OP_C;
  50. Carry_Q <= ((OP_A XOR OP_B) AND OP_C) OR (OP_A AND OP_B);
  51. END BEH_BS;
  52.  
  53.  
  54. --------------------------------------------------------------
  55. -- Design: Generic inter-slice register for Full Adder
  56. -- Name: Dr. Amoo
  57. -- Date: 10/25/2017
  58. --------------------------------------------------------------
  59. LIBRARY IEEE;
  60. USE IEEE.STD_Logic_1164.all;
  61. ENTITY REG_FA IS
  62.  GENERIC(P: integer:= 16;
  63.  W: integer:= 4;
  64.  E: integer:= 8);
  65. PORT ( CLK :IN STD_LOGIC; --clk
  66. Reset :IN STD_LOGIC; --reset
  67. En :IN STD_LOGIC;
  68. Op_A :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  69. Op_B :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  70. Op_Sum :IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- sum
  71. Op_Carry:IN STD_LOGIC; -- carry
  72. Op_AQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  73. Op_BQ :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  74. Op_SQ :OUT STD_LOGIC_VECTOR(W-1 DOWNTO 0);
  75. Op_C :OUT STD_LOGIC
  76.  );
  77. END REG_FA;
  78.  
  79. ARCHITECTURE RTL OF REG_FA IS
  80. SIGNAL DA : STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  81. SIGNAL DB : STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  82. SIGNAL DS : STD_LOGIC_VECTOR(W-1 DOWNTO 0);
  83. SIGNAL DC : STD_LOGIC;
  84. BEGIN
  85. P_REG_FA: PROCESS(Clk)
  86. BEGIN
  87.  
  88. IF ((Clk'EVENT) AND (Clk= '1')) THEN
  89. IF (Reset = '1') THEN
  90. DA <= (OTHERS => '0');
  91. DB <= (OTHERS => '0');
  92. DS <= (OTHERS => '0');
  93. DC <= '0';
  94. ELSIF (En = '1') THEN
  95. DA <= Op_A;
  96. DB <= Op_B;
  97. DS <= Op_Sum;
  98. DC <= Op_Carry;
  99. ELSE
  100. DA <= DA;
  101. DB <= DB;
  102. DS <= DS;
  103. DC <= DC;
  104. END IF; -- reset
  105. END IF; --clk = 1
  106. END PROCESS P_REG_FA;
  107. OP_AQ <= DA;
  108. OP_BQ <= DB;
  109. OP_SQ <= DS;
  110. OP_C <= DC;
  111. END RTL;
  112.  
  113.  
  114. --------------------------------------------------------------
  115. --------------------------------------------------------------
  116. -- Design: Generic Last-slice register for Full Adder
  117. -- Name: Dr. Amoo
  118. -- Date: 10/25/2017
  119. --------------------------------------------------------------
  120. LIBRARY IEEE;
  121. USE IEEE.STD_Logic_1164.all;
  122. ENTITY REG_FA_lastslice IS
  123.  GENERIC(P: integer:= 16;
  124.  W: integer:= 4;
  125.  E: integer:= 8);
  126. PORT ( CLK :IN STD_LOGIC; --clk
  127. Reset :IN STD_LOGIC; --reset
  128. En :IN STD_LOGIC;
  129. Op_A :IN STD_LOGIC; -- sign bit
  130. Op_B :IN STD_LOGIC; -- sign bit
  131. Op_Sum :IN STD_LOGIC_VECTOR(P-1 DOWNTO 0); -- sum
  132. Op_Carry:IN STD_LOGIC; -- carry
  133. Op_Q :OUT STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  134. Op_F :OUT STD_LOGIC_VECTOR(W-2 DOWNTO 0)
  135.  );
  136. END REG_FA_lastslice;
  137.  
  138. ARCHITECTURE RTL OF REG_FA_lastslice IS
  139. --SIGNAL DA : STD_LOGIC;
  140. --SIGNAL DB : STD_LOGIC;
  141. SIGNAL DS : STD_LOGIC_VECTOR(P-1 DOWNTO 0);
  142. SIGNAL DC : STD_LOGIC_VECTOR(W-2 DOWNTO 0);
  143.  
  144.  
  145. BEGIN
  146. P_REG_FA: PROCESS(Clk)
  147. BEGIN
  148.  
  149. IF ((Clk'EVENT) AND (Clk= '1')) THEN
  150. IF (Reset = '1') THEN
  151. DS <= (OTHERS => '0');
  152. DC <= (OTHERS => '0');
  153. ELSIF (En = '1') THEN
  154. DS <= Op_Sum;
  155. DC <= Op_A & Op_B & Op_Carry;
  156. ELSE
  157. DS <= DS;
  158. DC <= DC;
  159. END IF; -- reset
  160. END IF; --clk = 1
  161. END PROCESS P_REG_FA;
  162. OP_Q <= DS;
  163. OP_F <= DC;
  164. END RTL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement