Я загрузил пакет с плавающей запятой с http://www.vhdl.org/fphdl/ и сделал следующее:

  1. Я включил в свой проект файлы math_utility_pkg.vhd, fixed_pkg_c.vhd и float_pkg_c.vhd
  2. Я назначил их библиотеке (следуя инструкциям в Компиляция *. vhdl в библиотеку, используя Altera Quartus II)
  3. попытался скомпилировать их, сначала установив верхний объект моего проекта как верхний объект, а второй раз установив float_pkg_c.vhd как верхний объект

Я столкнулся с несколькими проблемами:

  1. Я не уверен, использовать ли имя библиотеки ieee_proposed или floatfixlib, поскольку первое предлагается в документации, а второе используется из файлов пакета.
  2. При компиляции я продолжаю получать ошибки в файлах пакета (например, "не удалось разработать вызов подпрограммы" остаток "" и т.п.)
  3. Кажется, есть некоторый спор между тем фактом, что файл пакета имеет суффикс _c, но он должен быть включен без него (например, используйте FLOATFIXLIB.float_pkg.all;), я не могу сейчас добраться до этой ошибки
  4. наконец, когда float_pkg_c.vhd установлен как верхний объект, компилятор генерирует эту ошибку: «Проектный объект верхнего уровня" float_pkg_c "не определен"

Я продолжаю пробовать варианты вышеперечисленных попыток, но никакого прогресса не достигаю.

0
user3209815 27 Мар 2014 в 23:37

2 ответа

Лучший ответ

Вы можете повторно загрузить пакеты. Я не вижу math_utility_pkg и не вижу ссылок на библиотеку floatfixlib в пакетах. У вас должен быть очень старый релиз.

Я только что перекачал дистрибутив Альтеры. В нем я вижу пакеты, упомянутые в сообщении, которое вы перекрестно перечислили: fixed_float_types_c.vhdl, fixed_pkg_c.vhdl и float_pkg_c.vhdl. Я также отмечаю, что отметки даты файла в zip-архиве: 27.08.2009.

1
Jim Lewis 28 Мар 2014 в 16:55

Я посмотрел: pastebin.com/TUtGax7M

Похоже, что пакеты компилируются, и вы пытаетесь скомпилировать свой дизайн, и он терпит неудачу при вызове «to_float». Не видя кода, могу только догадываться. Вызов to_float должен определить диапазон результата, передав ему объект (первое присваивание ниже) или индексы результата (второе присваивание ниже).

signal A_fp32 : float32 ;
. . .

-- Real and/or Integer Literal
A_fp32 <= to_float(6.5, A_fp32); -- size using A_fp32
A_fp32 <= to_float(6.5, 8, -32); -- pass indicies

Я также вижу, что призыв к разделению терпит неудачу. Обратите внимание, что разделение находится на переднем крае синтеза. Продавцы могут поддерживать или не поддерживать разделение. Вкратце, вам, вероятно, нужно будет отправить отчет об ошибке для разделения и вместо этого использовать их макрос / мастер. Обратите внимание, что если они поддерживают макрос / мастер для разделения, тогда они могут выполнять синтез, им просто выгодно, чтобы вы как можно больше использовали код конкретного поставщика.

1
Jim Lewis 31 Мар 2014 в 17:30