Как написано, ваш вопрос не имеет смысла: std_logic_vector нуждается в интерпретации, чтобы даже рассматривать ее как число.
Итак, давайте предположим, что вы это знали и написали разумное
library ieee;
use ieee.numeric_std.all;
use ieee.std_logic_1164.all;
type x_array is array(integer range <>) of unsigned(2 downto 0);
signal y : x_array(0 to 3);
просто напишите функцию
function maxindex(a : x_array) return integer is
variable index : integer := 0;
unsigned foundmax : unsigned(2 downto 0) := (others => '0');
begin
for i in 0 to a'high loop
if a(i) > foundmax then
index := i;
foundmax := a(i);
end if;
end loop
return index;
end function;
и примените при необходимости.