2016-02-19 6 views
-1

Я хочу использовать пакеты 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); 

но ни работу

помощь от кого-то, кто успешно использовал этот пакет?

+1

Может быть важно увидеть объявления 'sig_name' и' test_sig'. Сообщение об ошибке указывает, что нет ни одного видимого определения 'to_integer', которое соответствует параметру и типам возврата, или более одного (поэтому он не знает, что выбрать). Я также рекомендую имя ассоциации для аргументов, чтобы проблемы были легче выявлены. (И вы компилируете в режиме VHDL-2008, правильно?) –

+1

Вы также можете указать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Два присваивания сигнала с висящим «или» между ними не заполняют читателя четким пониманием того, относится ли ваш вопрос к чему-то еще рядом с вызовами to_integer. – user1155120

+0

Да, я компилирую с vhdl 2008. два сигнала объявлены как std_logic_vectors (31 до 0); Я думаю, проблема в том, что он не может отличить функцию to_integer этого пакета от функции to_integer от числового пакета. Я попытался переименовать функцию и пакет (добавив my_ впереди), но все равно не повезло .... Возможно, есть специальный способ вызвать эти функции fphdl? – user2609910

ответ

0

ok Кажется, я нашел решение вроде этого: используя подтип float32 из пакета в качестве входа функции в _integer, перед этим мне также пришлось использовать функцию to_float для преобразования std_logic_vector в float. результаты кажутся прекрасными! Спасибо за ваши комментарии!!! Я надеюсь, что все получится хорошо на синтезе :)

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

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