-- +-----------------------------+ -- | Copyright 1996 DOULOS | -- | Library: arithmetic | -- | designer : Tim Pagden | -- | opened: 28 Jul 1996 | -- +-----------------------------+ -- Architectures: -- 28.07.96 look_ahead library combinatorial; library arithmetic; architecture look_ahead of adder_25 is use combinatorial.xor_2_cmpt.all; use combinatorial.and_2_cmpt.all; use arithmetic.cla_25_cmpt.all; type logic_2_vector is array (integer range <>) of std_logic_vector(1 downto 0); signal p: std_logic_vector(24 downto 0); signal g: std_logic_vector(24 downto 0); signal carry: std_logic_vector(24 downto 0); signal ab_in: logic_2_vector(24 downto 0); signal sum_in: logic_2_vector(24 downto 0); begin pg: for i in 0 to 24 generate s0 : ab_in(i) <= a(i) & b(i); px : xor_2 port map (ab_in(i), p(i)); ga : and_2 port map (ab_in(i), g(i)); sum : xor_2 port map (sum_in(i), y(i)); if_cin: if i = 0 generate s1 : sum_in(i) <= p(i) & c_in; end generate; if_cla_carry: if i /= 0 generate s1 : sum_in(i) <= p(i) & carry(i-1); end generate; end generate; cla: cla_25 port map ( p => p, g => g, c_in => c_in, c => carry, p_out => open, g_out => open ); c_out <= carry(24); end look_ahead;