Katerina13 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба Раньше все мои программы не затрагивали типы float, real, universal_real, и сейчас я не понимаю, как писать код. Камень преткновения заключен в следующей строчке: a_res_zero <= conv_integer(sum_a_zero)/256; a_res_zero - сигнал (вещественное число), далее, я хотела отделить верхние разряды от нижних и присвоить их двум числам типа std_logic_vector, которые были бы выходами тестбенча. Но как это сделать? На этапе, когда я ещё не задумывалась о том, что результат вещественный, vivado выдавал мне, что текущий тип integer, а ожидаемый тип universal_real. Ищу какую-то информацию об этом типе не один день - тщетно. Также пробовала задавать тип Real - всё равно хочет universal_real Сейчас вижу два решения проблемы и прошу вашей помощи или каких-то советов: 1) Найти какую-то инфу про этот неведомый тип. 2) Найти хорошее описание подходящей мне библиотеки для float или real, чтобы понимать, как пользоваться той или иной функцией. А ещё, я вычитала, что вещественные типы не пригодны для синтеза. Что же делать, если в конечном варианте, я должна буду прошить прогу в кристалл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
agregat 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба А как же 32х разрядное float которое потому и называется 32х разрядным, что состоит из 32х бит. Информацию на библиотеки можно посмотреть в соответствующих папках, где лежат исходники стандартных библиотек. Ну или установите эти исходники. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Katerina13 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба Спасибо за ответ! Да, про float - почитала Дело в том, что я буду иметь только положительные числа, и мне нужно максимально экономить ресурсы. Очень хотелось бы отсечь разряд знака. Но я не знаю, как это сделать А где могут лежать исходники библиотек? И где взять исходники для установки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба А ещё, я вычитала, что вещественные типы не пригодны для синтеза. Напрямую действительно не пригодны (пока). Что же делать, если в конечном варианте, я должна буду прошить прогу в кристалл? Четко поставить задачу, сделать ее декомпозицию на подзадачи, спроектировать структуру модулей решающих подзадачи и задачу, спроектировать функционал этих модулей, отладить модули, собрать все в кучку, отладить кучку, зашить в плис, убедиться что работает. Если нет, то снова отлаживать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Katerina13 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба Добиться отсутствия вещественных чисел я попробую домножением на 10^n и оператором конкатенации, буду выводить отдельно целую и дробную части. Всё бы хорошо, если бы у меня было четкое описание типа float и набора функций к нему, заключенных в определенную библиотеку. Где можно его найти, не подскажете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба Может быть Вам имеет смысл работать с числами с фиксированной (не плавающей) точкой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Katerina13 0 29 февраля, 2016 Опубликовано 29 февраля, 2016 · Жалоба Возможно, спасибо! Это числа типа real? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба Всё бы хорошо, если бы у меня было четкое описание типа float и набора функций к нему, заключенных в определенную библиотеку. Может вам нужно было сделать сопроцессор плавающей точки? Тогда нужно садиться, изучать форматы представления чисел с плавающей точкой, правила математики и реализовывать модули, выполняющие расчет. Библиотеки, для синтеза, вы врядли найдете. Вот, например, народ делает акселераторы плавающей точки. http://opencores.org/project,fpuvhdl http://opencores.org/project,floating_point_multiplier http://opencores.org/project,floating_point_divider http://opencores.org/project,fp_log ЗЫ. Выложите не ваш пересказ ТЗ, а настоящее ТЗ, поставленное перед вами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TRILLER 0 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба Возможно, спасибо! Это числа типа real? Присоединюсь к совету eugen_pcad_ru Начните лучше с integer и std_logic_vector в связке со стандартными библиотеками STD_LOGIC_1164, STD_LOGIC_ARITH и STD_LOGIC_SIGNED/STD_LOGIC_UNSIGNED. Найти их можно прям в софтине. Для ISE они находятся "\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\". Для вивады, думаю, приблизительно там же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба со стандартными библиотеками STD_LOGIC_1164, STD_LOGIC_ARITH и STD_LOGIC_SIGNED/STD_LOGIC_UNSIGNED.Не вводите новичка в заблуждение. Это не стандартные библиотеки. Это проприетарные библиотеки фирмы Synopsys. Стандартным пакетом является numeric_std. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TRILLER 0 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба .. проприетарные библиотеки фирмы Synopsys.. Обалдеть, я думаю ТС это понравилось Важно то, что они поддерживаются даже стандартным синтезатором без дополнительных телодивижений и находятся там же, где и "стандартная" библиотека numeric_std. А выбрать каждый для себя может то, чего пожелает. П.С.: в конце концов, всё когда-то было новым и нестандартным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба Обалдеть, я думаю ТС это понравилось А "правду говорить легко и приятно". Важно то, что они поддерживаются даже стандартным синтезатором без дополнительных телодивижений и находятся там же, где и "стандартная" библиотека numeric_std.Стандартная она без всяких кавычек. Потому что является частью стандарта VHDL, в отличие от. Нет ни одной причины использовать... как это будет по-русски... proprietary legacy crap. А выбрать каждый для себя может то, чего пожелает.Надо сразу выбирать правильное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Katerina13 0 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба Подождите, подождите :Р С vhdl я уже полгода, с типами integer и std_logic у меня всё в порядке. Перечисленные выше библиотеки почти все прописываю в каждой проге, в зависимости от необходимости. Задание моё заключается примерно в следующем: по 48 входам поступает информация 48 слов в каждом по 8 бит в слове. Получается большой квадрат 48*48. Мне нужно просуммировать в 9 маленьких подквадратах 16*16 все числа и посчитать среднее в каждом таком небольшом квадрате. Прога сейчас написана до подсчета среднего значения, далее я не знаю в каких типах мне работать, так как нигде не могу найти никакой доступной инфы, а компилятор хочет от меня неведомый universal_real, о котором ну вообще ничего нигде нет! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 1 марта, 2016 Опубликовано 1 марта, 2016 · Жалоба Подождите, подождите :Р С vhdl я уже полгода, с типами integer и std_logic у меня всё в порядке. Перечисленные выше библиотеки почти все прописываю в каждой проге, в зависимости от необходимости. Задание моё заключается примерно в следующем: по 48 входам поступает информация 48 слов в каждом по 8 бит в слове. Получается большой квадрат 48*48. Мне нужно просуммировать в 9 маленьких подквадратах 16*16 все числа и посчитать среднее в каждом таком небольшом квадрате. Прога сейчас написана до подсчета среднего значения, далее я не знаю в каких типах мне работать, так как нигде не могу найти никакой доступной инфы, а компилятор хочет от меня неведомый universal_real, о котором ну вообще ничего нигде нет! Вы делаете описание цифровой схемы для синтеза или для моделирования? Если для синтеза используйте тип signed или unsigned нужной разрядности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Katerina13 0 2 марта, 2016 Опубликовано 2 марта, 2016 · Жалоба Всем спасибо! Программу дописала. Вместо деления на 256 использовала сдвиг вектора на 8 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться