firmado con std_logic_vector, resultados de corte

Necesito tomar el valor absoluto de un resultado y solo estoy interesado en los bits más significativos. Esto es lo que he hecho:

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);

Intento verificar la sintaxis y aparece este error:

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

data_ram_h es un std_logic_vector de la dimensión correcta, y elabdominales La función devuelve un signo, para que no haya ningún problema en la conversión a std_logic_vector. La biblioteca que estoy usando es useieee.numeric_std.all.

Donde me equivoco Gracias de antemano c:

Respuestas a la pregunta(2)

Su respuesta a la pregunta