Maybe it is really easy question but I spent two hours looking for solution and information in the internet and still I can't push it to work.

I need to do arithmetic left shit operation. I used standard SLA operator.

ModelSim during compilation shows an error:

> Blockquote
** Error: (vcom-1581) No feasible entries for infix operator 'sla'.
** Error: Bad right hand side (infix expression) in variable assignment.

My code

    constant Vlsb : std_logic_vector(47 downto 0) := x"00002710CB29";
    i_data		: in std_logic_vector(15 downto 0);

 .
 
	process(i_clk) is 
		variable data : std_logic_vector(47 downto 0);
	begin 
		if(i_rst_asyn = '0') then
			data := (others => '0');
		else
			if(rising_edge(i_clk)) then
				if(i_rst_syn = '1') then
					data := (others => '0');
				else
					data(15 downto 0) := i_data;
					data := data sla 31; -- ERROR LINE
					data := std_logic_vector(signed(data) / signed(Vlsb));				
				end if;
			end if;
		end if;	
		o_data <= data;
	end process;

Could sombody tell me what I am doing wrong, please.

Add- I am using std_logic_1164 and numeric_std library in this module.