2015-11-07 2 views
0

У меня есть эти сигналы в архитектуре:назначение вектор сигнала в VHDL

signal sign1: STD_LOGIC_VECTOR (21 downto 0); 
signal sign2: STD_LOGIC; 

Тогда в некотором процессе у меня это назначение. Что это значит? Какое значение будет в знаке2? 21-й бит вектора?

sign2 <= sign1(21); 
+0

VHDL также имеет так называемые атрибуты, поэтому вы можете сделать 'sign2 <= sign1 (sign1'left)', который легче читать и поддерживать, чем закодированные магические числа. –

+0

Правильное выражение назначения сигнала - это проиндексированное имя, которое обозначает и элемент массива ('sign1'). Базовый тип типа элемента типа массива std_logic_vector совпадает с базовым типом std_logic, позволяющим назначать целевой знак 'sign2'. Численный литерал '21' обозначает значение * универсального целого *, которое преобразуется в тип integer, базовый тип типа индекса std_logic_vector и является индексом, который указывает элемент массива. Это ошибка, если значение индекса не попадает в диапазон индексов 'sign1'. – user1155120

ответ

1

Да. Вы назначаете самый левый бит sign1 для sign2.

+0

Всё? Вы даже не можете описать выражение правой руки как индексированное имя? Что это значит? – user1155120

Смежные вопросы