Skip to main content
2 of 2
converted profanity into right meaning
Chetan Bhargava
  • 4.6k
  • 5
  • 28
  • 40

VHDL SLA operator

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 shift 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.

e2p
  • 187
  • 3
  • 13