Преобразование VHDL std_logic_vector в знаковый и беззнаковый с помощью numeric_std

У меня есть некоторые сомнения относительно использования преобразований из std_logic_vector в signed/unsigned. Я всегда использую преобразование signed(...), unsigned(...), но когда я пытаюсь использовать преобразования, определенные в библиотеке numeric_std (to_signed, to unsigned), это не работает. Может кто-нибудь объяснить мне, почему это происходит? А почему работает преобразование unsigned() и signed()?


person Gabriel Lozano    schedule 21.01.2013    source источник


Ответы (2)


Поскольку типы std_logic_vector и signed/unsigned тесно связаны между собой, для преобразования можно использовать способ приведения типов. Так что signed(a_std_logic_vector) и unsigned(a_std_logic_vector) в порядке. Однако функции для преобразования также определены в стандарте.

Взгляните на Часто задаваемые вопросы по VHDL. Это старый веб-сайт, созданный в те дни, когда группы новостей были еще популярны, но на нем все еще есть много полезной информации о VHDL.

person vermaete    schedule 21.01.2013

Посмотрите спецификацию пакета для numeric_std. Вы обнаружите, что to_signed преобразуется в signed... из целого числа.

Как говорит «vermaete», подписанный тип тесно связан с std_logic_vector, поэтому вам не нужна функция преобразования.

person user_1818839    schedule 21.01.2013