Цитата(andrew_b @ Jul 12 2017, 15:53)

Как только вы пишете слово type, вы вводите абсолютно новый тип, для которого не определена ни одна операция. Вы сами для нового типа должны написать функции сравнения.
Даже если два типа определены абсолютно одинаково (например, std_ulogic_vector, signed, unsigned), это разные типы, и напрямую объекты этих типов между собой сравнивать нельзя.
понял. не знал. но record всегда создается через type. я не могу создать record так
record com is
name : com_str;
arg1 : arg_str;
arg2 : arg_str;
arg3 : arg_str;
name_len : integer;
end record;
а как тогда написать функцию сравнения? В С# был operator override, тут наверно что то похожее.
Цитата(Tausinov @ Jul 12 2017, 16:04)

А мне кажется, тут еще в самом начале с типами ошибка. И должно быть что-то типа такого:
Код
type commands is array(5 downto 0) of std_logic_vector(7 downto 0);
type commands_l is array(natural range <>) of commands;
signal commands_list : commands_l(2 downto 0) := (
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
);
так компайлер ругается
Error (10515): VHDL type mismatch error at parser.vhd(71): std_ulogic type does not match string literal
Сообщение отредактировал Jenya7 - Jul 12 2017, 10:13