2016-08-21 13 views
0

есть оператор + в vhdl для операции добавления, то почему нам нужно добавить ieee.std_logic_unsigned, и в этой библиотеке есть функция для +, так почему эта функция определена, если у нас уже есть оператор + в vhdl?В чем разница между оператором + и функцией + vhdl?

+0

Предопределенные математические операции по умолчанию для типов массивов не предоставляются. Они находятся в пакетах specificc в библиотеке IEEE. См. IEEE Std 1076-2008 16.8 Стандартные пакеты синтеза, в частности 16.8.5. Пакеты для арифметики с использованием битовых и стандартных логических значений. В версии -2008 эти пакеты являются частью стандарта. – user1155120

ответ

1

Оператор +, как и все операторы VHDL, также имеет функциональные обозначения. a+b и "+"(a,b) точно такие же. Хорошим аспектом этого является то, что вы можете перегружать операторы VHDL для работы с типами, для которых они не определены по умолчанию. Просто определите функцию "+", которая принимает два аргумента вашего собственного типа my_type и вуаля. Теперь вы можете использовать a+b, где a и b имеют тип my_type.

Оператор + по умолчанию не определен по типам std_ulogic_vector или std_logic_vector. Это факт. Вы можете не согласиться с этим, но это стандарт VHDL. Итак, если вы хотите использовать его с этими типами, вам нужно так или иначе определить его.

Пакет ieee.std_logic_unsigned перегружает на них арифметические операторы. Это не стандартный пакет и имеет ничего сделать в стандартизированной ieee библиотеки. Do нет используйте. Вместо этого используйте стандартный ieee.numeric_std, который объявляет типы unsigned и signed и перегружает на них арифметические операторы.

Обратите внимание, что, как упоминалось пользователем1155120, VHDL 2008 представил несколько новых пакетов синтеза. Один из них - ieee.numeric_std_unsigned, и он перегружает арифметические операторы по типу std_ulogic_vector, которые рассматриваются как неподписанные натуральные целые числа.

+0

IEEE Std 1076-2008 16.8.5 Пакеты для арифметики с использованием битовых и стандартных логических значений, 16.8.5.1 параграф 5 (частично): «... Аналогично, пакет NUMERIC_STD_UNSIGNED обеспечивает те же операции, что и пакет NUMERIC_STD на UNSIGNED, но работает с операндами STD_ULOGIC_VECTOR, интерпретируемыми как представляющие двоичные целые числа без знака. " Преобразует операнд и время результата в/из без знака. В -2008 подтип STD_LOGIC_VECTOR (разрешен) STD_ULOGIC_VECTOR; ' – user1155120

+0

спасибо, отличный ответ! –

+0

Можете ли вы сказать мне, что когда мы пишем <= b и c после 20n, значит, это [после 20n] повлияет только на симуляцию или на фактическую цифровую модель для загрузки в виде битового файла? –

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

  • Нет связанных вопросов^_^