Я хочу использовать пакеты fphdl для преобразования числа с плавающей точкой в целое число в моем коде VHDL. Однако я даже не могу скомпилировать назначение, которое использует связанную функцию to_integer. Я всегда получаю ошибку «не выполнимые записи для подпрограммы в целом»конвертировать float в integer в vhdl с помощью fphdl
функция объявлена как
function to_integer (
arg : UNRESOLVED_float; -- floating point input
constant round_style : round_type := float_round_style; -- rounding option
constant check_error : BOOLEAN := float_check_error) -- check for errors
return INTEGER;
я попытался использовать его как:
library ieee;
use ieee.fixed_float_types.all;
use ieee.fixed_pkg.all;
use ieee.float_pkg.all;
......
test_sig<=to_integer(sig_name); or
test_sig<=to_integer(sig_name,round_zero,false);
но ни работу
помощь от кого-то, кто успешно использовал этот пакет?
Может быть важно увидеть объявления 'sig_name' и' test_sig'. Сообщение об ошибке указывает, что нет ни одного видимого определения 'to_integer', которое соответствует параметру и типам возврата, или более одного (поэтому он не знает, что выбрать). Я также рекомендую имя ассоциации для аргументов, чтобы проблемы были легче выявлены. (И вы компилируете в режиме VHDL-2008, правильно?) –
Вы также можете указать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Два присваивания сигнала с висящим «или» между ними не заполняют читателя четким пониманием того, относится ли ваш вопрос к чему-то еще рядом с вызовами to_integer. – user1155120
Да, я компилирую с vhdl 2008. два сигнала объявлены как std_logic_vectors (31 до 0); Я думаю, проблема в том, что он не может отличить функцию to_integer этого пакета от функции to_integer от числового пакета. Я попытался переименовать функцию и пакет (добавив my_ впереди), но все равно не повезло .... Возможно, есть специальный способ вызвать эти функции fphdl? – user2609910