есть оператор + в vhdl для операции добавления, то почему нам нужно добавить ieee.std_logic_unsigned, и в этой библиотеке есть функция для +, так почему эта функция определена, если у нас уже есть оператор + в vhdl?В чем разница между оператором + и функцией + vhdl?
ответ
Оператор +
, как и все операторы 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
, которые рассматриваются как неподписанные натуральные целые числа.
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
спасибо, отличный ответ! –
Можете ли вы сказать мне, что когда мы пишем <= b и c после 20n, значит, это [после 20n] повлияет только на симуляцию или на фактическую цифровую модель для загрузки в виде битового файла? –
Предопределенные математические операции по умолчанию для типов массивов не предоставляются. Они находятся в пакетах specificc в библиотеке IEEE. См. IEEE Std 1076-2008 16.8 Стандартные пакеты синтеза, в частности 16.8.5. Пакеты для арифметики с использованием битовых и стандартных логических значений. В версии -2008 эти пакеты являются частью стандарта. – user1155120