USE work.multiplier_types.all; USE work.bv_arithmetic.all; USE std.textio.all; ENTITY adder IS PORT ( a : in word; b : in word; c_in : in bit; s : out word; c_out : out bit); END adder; ARCHITECTURE behaviour OF adder IS BEGIN -- behaviour add : PROCESS (a, b, c_in) CONSTANT Tpd : Time := 8 ns; VARIABLE c : bit; VARIABLE sum : word; VARIABLE L : line; BEGIN -- PROCESS add c := c_in; FOR i IN 0 to word_size-1 LOOP sum(i) := (a(i) XOR b(i)) XOR c; c := (a(i) AND b(i)) OR ((a(i) XOR b(i)) AND c); END LOOP; s <= sum after Tpd; c_out <= c after Tpd; --write(L, string'("adder:")); --write_hex(L, a); --write(L, string'(" + ")); --write_hex(L, b); --write(L, string'(" -> ")); --write_hex(L, sum); --writeline(output, L); END PROCESS add; END behaviour;