Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Арифметика с плавающей точкой на VHDL
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Гвоздик
Чисто теоретический вопрос: возможно ли стандартными возможностями языка VHDL описать умножитель/делитель чисел с плавающей точкой? С фиксированной я сначала сигналы в числа преобразовывал, затем их умножал/делил, как обычно (* или /), затем обратно в сигналы преобразовывал для выдачи на ножки ввода вывода. Возможно ли также дробные числа на сигналы перемножать с последующим округлением в целые числа, а затем в сигналы?
3.14
Можно.
Laptop
Если хочешь выполнять арифментические операции для сигналов в IEEE-754, то все придется писать самому. А так конечно можно, только очень неэффективно и проще описать умножитель или делитель самому на VHDL. Если важна простота, а не скорость и площадь, то пользуйся встроенными.
Гвоздик
Это радует. А не мог ли кто-нибудь привести небольшой пример, например, умножения сигнала (16 разрядов) на дробное число и получения сигнала опять. Хотя бы несколько строк для понимания используя стандартные возможности VHDL?
M_A
Если Вам нужно именно умножение целых чисел на дробный множитель, то я делал так (множитель у меня был постоянно один и тот же): допустим мой дробный множитель 0.3, я домножал его, например, на 1024 (на калькуляторе), для этого примера должно получиться 307, после этого все входные числа домножаю на 307, а затем у результата выкидываю 10 младших бит, что эквивалентно делению на 1024.
Возможно способ не самый простой и красивый (точнее я в этом уверен smile.gif ), но я сам пока начинающий blush.gif
Гвоздик
Всем спасибо, попробую прошить умножитель дробных чисел в "железе", посмотрим кто быстрее умножает - ПЛИС или DSP.
M_A
Цитата(Гвоздик @ Feb 14 2006, 18:03) *
Всем спасибо, попробую прошить умножитель дробных чисел в "железе", посмотрим кто быстрее умножает - ПЛИС или DSP.

Имхо сравнение несравнимого... Ценность ПЛИСов не в этом. Может быть DSP и побыстрее (не знаю, не работал), но на одной хорошей ПЛИСе я могу собрать кучу умножителей. А если то же делать на DSP? Ставить кучу чипов? Дорого обойдется...
Гвоздик
С этим вопросов нет, хотелось бы увидеть вот что:
use XXXXXX.XXXXX - подключили библиотеку (какую?)

...........
digit_1 : real;
digit_2 : real;
digit_3 : real;
...........

digit_3 = digit_1 * digit_2;

Так можно делать вообще? Т.е. не приводя к целочисленной арифметике и не кодируя свои функции умножения дробных чисел.
3.14
Я о подобном не слышал, но думаю (из-за роста емкости чипов) в ближайший год-два наверняка сами синтезаторы начнут с плавучку синтезировать.
jericho
В ксайлинксе <=6.1, по крайней мере, синтезатор не сможет это синтезировать.
3.14
Он не сможет и в 8.2 (когда выйдет) и в synplify и в leonardo wink.gif
Гвоздик
Тогда как народ с дробными числами работает? Приводит все к целочисленным вычислениям или кодирует свои подпрограммы арифметики для дробных чисел? Я просто с этим еще не сталкивался, подскажите кто сможет.
3.14
Плавучка это "буржуазные" замашки последних лет (на FPGA), всю жизнь люди обходились оперециями с фиксированной точкой.
jericho
Между прочим, в Веб-паке 8.1 есть генератор ядер и в составе его есть ядро Floating-point 1.0. Может складывать, вычитать, умножать, делить, сравнивать, и вычислять квадратный корень.
xy_
Цитата(3.14 @ Feb 18 2006, 01:41) *
Я о подобном не слышал, но думаю (из-за роста емкости чипов) в ближайший год-два наверняка сами синтезаторы начнут с плавучку синтезировать.

Думаю будут аппаратная плавующая точнка, как блоки уманажителей в спартане
AndrewGT
посмотрите (правда, на Verilog)
http://forum.niosforum.com/forum/index.php?showtopic=626
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.