LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; USE work.POLY_FIR_PKG.ALL; ENTITY add_blk IS GENERIC(w_out : IN natural); PORT(i_clk : IN std_logic; i_data1 : IN smpl_adder_generic; i_data2 : IN smpl_adder_generic; o_data : OUT smpl_fir_adder_data_out ); END add_blk; ARCHITECTURE add OF add_blk IS SIGNAL smpl_stages_out : smpl_adder_generic := (OTHERS => '0'); BEGIN -- ARCHITECTURE add -- purpose: creates the add process for the adding tree -- type : sequential -- inputs : i_clk, i_data1, i_data2 -- outputs: o_data adding_process : PROCESS (i_clk) IS BEGIN -- PROCESS adding_process IF rising_edge(i_clk) THEN -- rising clock edge smpl_stages_out(w_out DOWNTO 0) <= std_logic_vector(unsigned(signed(i_data1(w_out-1)&i_data1(w_out-1 DOWNTO 0))+signed(i_data2(w_out-1)&i_data2(w_out-1 DOWNTO 0)))); END IF; END PROCESS adding_process; o_data <= smpl_stages_out; END ARCHITECTURE add;