Forum Discussion
Altera_Forum
Honored Contributor
12 years ago --- Quote Start --- to add up 32 bits input in an integrator that outputs 34 bits here we go:
signal sum : std_logic_vector(33 downto 0) := (others => '0');
process(reset_n,clk)
if reset_n = '0' then
sum <= (others => '0');
elsif rising_edge(clk) then
sum <= std_logic_vector(signed(sum) + resize(signed(din),34));
end if;
end process;
dout <= sum;
--- Quote End --- The code for the integrator is as below library IEEE; use IEEE.STD_LOGIC_1164.ALL; USE ieee.numeric_std.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. library UNISIM; use UNISIM.VComponents.all; entity integrator is port( clk:in std_logic; reset:in std_logic; din:in std_logic_vector(32 downto 0) --dout:out std_logic_vector(32 downto 0) ); end integrator; architecture Behavioral of integrator is --signal ifilterout30:std_logic_vector(31 downto 0):=(others =>'0'); signal ifilterout31:std_logic_vector(32 downto 0):=(others =>'0'); signal ifilterout32:std_logic_vector(31 downto 0):=(others =>'0'); --signal ifilterout34:std_logic_vector(33 downto 0):=(others =>'0'); signal ifilterout33:std_logic_vector(33 downto 0):=(others =>'0'); begin process(Clk,reset) begin if reset='0' then ifilterout31<="000000000000000000000000000000000"; ifilterout33<="0000000000000000000000000000000000"; -- dout<="000000000000000000000000"; elsif clk'event and clk='1' then -- ifilterout30 <= std_logic_vector(resize(signed(din),32)); ifilterout31 <= std_logic_vector(signed(din)+signed(ifilterout31)); ifilterout32 <=ifilterout31(31 downto 0); -- ifilterout34 <= std_logic_vector(resize(signed(ifilterout32),34)); ifilterout33 <= std_logic_vector(resize(signed(ifilterout32),34)+signed(ifilterout33)); -- ifilterout34 <= std_logic_vector(resize(signed(ifilterout33),34)); -- ifilterout33 <= std_logic_vector(resize(signed( ifilterout32),34)); -- ifilterout32 <= std_logic_vector(resize(signed(ifilterout31),34)); -- dout <= ifilterout31; -- ifilterout32 <= ifilterout31; -- ifilterout32 <= ifilterout31; end if; end process ; end Behavioral; The final output ifilterout33 is coming as undefined . I tried as you said.But still there is problem in the output.