Sumador 16 Bit
Sumador 16 Bit
Estilo estructural
Sentencia For…Generate
LIBRARY IEEE;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY ADD16 IS
PORT(A,B:IN STD_LOGIC_VECTOR(15 DOWNTO 0);
S:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
CI:IN STD_LOGIC;
C0:OUT STD_LOGIC);
END ADD16;
COMPONENT FULL_ADDER
PORT(CI,A,B:IN STD_LOGIC;
S,C0:OUT STD_LOGIC);
END COMPONENT;
BEGIN
U0:FULL_ADDER PORT MAP(CI,A(0),B(0),S(0),SC(0));
U1_U14:FOR I IN 1 TO 14 GENERATE
U:FULL_ADDER PORT MAP(SC(I-1),A(I),B(I),S(I),SC(I));
END GENERATE;
U16:FULL_ADDER PORT MAP(SC(14),A(15),B(15),S(15),C0);
END BEHAVIORAL;
Component FULL ADDER
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FULL_ADDER IS
PORT(CI,A,B:IN STD_LOGIC;
S,C0:OUT STD_LOGIC);
END FULL_ADDER;
BEGIN
S<=A XOR B XOR CI;
C0<=(A AND B) OR (A AND CI) OR (B AND CI);
END BEHAVIORAL;