спасибо большое.
финальная версия такая
Код
type str_t is array(integer range<>) of std_logic_vector(7 downto 0);
type commands is array(integer range<>) of str_t(0 to COM_SIZE);
constant commands_list : commands(0 to COM_COUNT) :=
(
0 => (0 => x"00", 1 => x"01", 2 => x"10", 3 => x"11", 4 => x"20", 5 => x"21"), --stop
1 => (0 => x"00", 1 => x"01", 2 => x"10", 3 => x"11", 4 => x"20", 5 => x"21"), --fwd
2 => (0 => x"00", 1 => x"01", 2 => x"10", 3 => x"11", 4 => x"20", 5 => x"21") --rev
);
signal rx_command : str_t(0 to 31);
signal arg1 : str_t(0 to 9);
signal arg2 : str_t(0 to 9);
signal arg3 : str_t(0 to 9);
и тогда оператор сравнения компилируется
Код
for i in 0 to COM_COUNT loop
if (commands_list(i) /= rx_command) then
end if;
end loop;
осталось написать тестбенч и проверить работает или нет. или в железо загоню и там проверю.