У меня есть эти сигналы в архитектуре:назначение вектор сигнала в VHDL
signal sign1: STD_LOGIC_VECTOR (21 downto 0);
signal sign2: STD_LOGIC;
Тогда в некотором процессе у меня это назначение. Что это значит? Какое значение будет в знаке2? 21-й бит вектора?
sign2 <= sign1(21);
VHDL также имеет так называемые атрибуты, поэтому вы можете сделать 'sign2 <= sign1 (sign1'left)', который легче читать и поддерживать, чем закодированные магические числа. –
Правильное выражение назначения сигнала - это проиндексированное имя, которое обозначает и элемент массива ('sign1'). Базовый тип типа элемента типа массива std_logic_vector совпадает с базовым типом std_logic, позволяющим назначать целевой знак 'sign2'. Численный литерал '21' обозначает значение * универсального целого *, которое преобразуется в тип integer, базовый тип типа индекса std_logic_vector и является индексом, который указывает элемент массива. Это ошибка, если значение индекса не попадает в диапазон индексов 'sign1'. – user1155120