assinado para std_logic_vector, fatia resultados

Preciso pegar o valor absoluto de um resultado e só estou interessado nos bits mais significativos. Isto é o que eu fiz:

data_ram_h <= std_logic_vector(abs(signed(resize(r4(calc_cnt - 2), data_ram_h'length) + r4(calc_cnt - 1) +
                    r4(calc_cnt) + r4(calc_cnt + 1) + r4(calc_cnt + 2) -
                    r2(calc_cnt - 2) - r2(calc_cnt - 1) - r2(calc_cnt) -
                    r2(calc_cnt + 1) - r2(calc_cnt + 2))))(11 downto 4);

Tento verificar a sintaxe e recebo este erro:

type conversion std_logic_vector is not allowed as a prefix for an slice name.

data_ram_h é um std_logic_vector da dimensão correta e oabdômen A função retorna um sinal, para que não haja problemas na conversão para std_logic_vector. A biblioteca que estou usando é useieee.numeric_std.all.

Onde eu estou errado? Agradecemos antecipadamente c:

questionAnswers(2)

yourAnswerToTheQuestion