library IEEE; use IEEE.std_logic_1164.all; entity adder32bit is port(a,b : in std_logic_vector(31 downto 0); cin : in std_logic; sum : out std_logic_vector(31 downto 0); cout : out std_logic); end adder32bit; architecture behavior of adder32bit is begin adder32bit_process : process(a,b,cin) variable result : std_logic_vector(31 downto 0); variable scin : std_logic; begin scin := cin; result(0) := ((a(0) xor b(0) xor scin) or (a(0) and b(0) and scin)); scin := (a(0) and b(0)) or (a(0) and scin) or (b(0) and scin); result(1) := ((a(1) xor b(1) xor scin) or (a(1) and b(1) and scin)); scin := (a(1) and b(1)) or (a(1) and scin) or (b(1) and scin); result(2) := ((a(2) xor b(2) xor scin) or (a(2) and b(2) and scin)); scin := (a(2) and b(2)) or (a(2) and scin) or (b(2) and scin); result(3) := ((a(3) xor b(3) xor scin) or (a(3) and b(3) and scin)); scin := (a(3) and b(3)) or (a(3) and scin) or (b(3) and scin); result(4) := ((a(4) xor b(4) xor scin) or (a(4) and b(4) and scin)); scin := (a(4) and b(4)) or (a(4) and scin) or (b(4) and scin); result(5) := ((a(5) xor b(5) xor scin) or (a(5) and b(5) and scin)); scin := (a(5) and b(5)) or (a(5) and scin) or (b(5) and scin); result(6) := ((a(6) xor b(6) xor scin) or (a(6) and b(6) and scin)); scin := (a(6) and b(6)) or (a(6) and scin) or (b(6) and scin); result(7) := ((a(7) xor b(7) xor scin) or (a(7) and b(7) and scin)); scin := (a(7) and b(7)) or (a(7) and scin) or (b(7) and scin); result(8) := ((a(8) xor b(8) xor scin) or (a(8) and b(8) and scin)); scin := (a(8) and b(8)) or (a(8) and scin) or (b(8) and scin); result(9) := ((a(9) xor b(9) xor scin) or (a(9) and b(9) and scin)); scin := (a(9) and b(9)) or (a(9) and scin) or (b(9) and scin); result(10) := ((a(10) xor b(10) xor scin) or (a(10) and b(10) and scin)); scin := (a(10) and b(10)) or (a(10) and scin) or (b(10) and scin); result(11) := ((a(11) xor b(11) xor scin) or (a(11) and b(11) and scin)); scin := (a(11) and b(11)) or (a(11) and scin) or (b(11) and scin); result(12) := ((a(12) xor b(12) xor scin) or (a(12) and b(12) and scin)); scin := (a(12) and b(12)) or (a(12) and scin) or (b(12) and scin); result(13) := ((a(13) xor b(13) xor scin) or (a(13) and b(13) and scin)); scin := (a(13) and b(13)) or (a(13) and scin) or (b(13) and scin); result(14) := ((a(14) xor b(14) xor scin) or (a(14) and b(14) and scin)); scin := (a(14) and b(14)) or (a(14) and scin) or (b(14) and scin); result(15) := ((a(15) xor b(15) xor scin) or (a(15) and b(15) and scin)); scin := (a(15) and b(15)) or (a(15) and scin) or (b(15) and scin); result(16) := ((a(16) xor b(16) xor scin) or (a(16) and b(16) and scin)); scin := (a(16) and b(16)) or (a(16) and scin) or (b(16) and scin); result(17) := ((a(17) xor b(17) xor scin) or (a(17) and b(17) and scin)); scin := (a(17) and b(17)) or (a(17) and scin) or (b(17) and scin); result(18) := ((a(18) xor b(18) xor scin) or (a(18) and b(18) and scin)); scin := (a(18) and b(18)) or (a(18) and scin) or (b(18) and scin); result(19) := ((a(19) xor b(19) xor scin) or (a(19) and b(19) and scin)); scin := (a(19) and b(19)) or (a(19) and scin) or (b(19) and scin); result(20) := ((a(20) xor b(20) xor scin) or (a(20) and b(20) and scin)); scin := (a(20) and b(20)) or (a(20) and scin) or (b(20) and scin); result(21) := ((a(21) xor b(21) xor scin) or (a(21) and b(21) and scin)); scin := (a(21) and b(21)) or (a(21) and scin) or (b(21) and scin); result(22) := ((a(22) xor b(22) xor scin) or (a(22) and b(22) and scin)); scin := (a(22) and b(22)) or (a(22) and scin) or (b(22) and scin); result(23) := ((a(23) xor b(23) xor scin) or (a(23) and b(23) and scin)); scin := (a(23) and b(23)) or (a(23) and scin) or (b(23) and scin); result(24) := ((a(24) xor b(24) xor scin) or (a(24) and b(24) and scin)); scin := (a(24) and b(24)) or (a(24) and scin) or (b(24) and scin); result(25) := ((a(25) xor b(25) xor scin) or (a(25) and b(25) and scin)); scin := (a(25) and b(25)) or (a(25) and scin) or (b(25) and scin); result(26) := ((a(26) xor b(26) xor scin) or (a(26) and b(26) and scin)); scin := (a(26) and b(26)) or (a(26) and scin) or (b(26) and scin); result(27) := ((a(27) xor b(27) xor scin) or (a(27) and b(27) and scin)); scin := (a(27) and b(27)) or (a(27) and scin) or (b(27) and scin); result(28) := ((a(28) xor b(28) xor scin) or (a(28) and b(28) and scin)); scin := (a(28) and b(28)) or (a(28) and scin) or (b(28) and scin); result(29) := ((a(29) xor b(29) xor scin) or (a(29) and b(29) and scin)); scin := (a(29) and b(29)) or (a(29) and scin) or (b(29) and scin); result(30) := ((a(30) xor b(30) xor scin) or (a(30) and b(30) and scin)); scin := (a(30) and b(30)) or (a(30) and scin) or (b(30) and scin); result(31) := ((a(31) xor b(31) xor scin) or (a(31) and b(31) and scin)); scin := (a(31) and b(31)) or (a(31) and scin) or (b(31) and scin); sum <= result after 100 ns; cout <= scin after 100 ns; end process adder32bit_process; end behavior;