Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Теорема Пифагора в FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Jools
Привет всем!

Как описать на VHDL выражение y=sqrt(a^2 + b^2), так чтобы Симплифай реализовал это на DSP-блоках Altera Cyclone? Собственно, затруднение вызывает описание самого корня. Я тут только начинаю заниматься Вышкой на ПЛИС, так что сильно ногами не пинайте. Меня не интересуют апроксимации этого выражения другими или применение CORDIC ранее рассмотренные на форуме, а именно поведенческое описание на VHDL и синтез этой беды на DSP-блоках.

Заранее спасибо.
des00
Цитата(Jools @ Nov 22 2005, 01:28) *
а именно поведенческое описание на VHDL и синтез этой беды на DSP-блоках.

ИМХО на VHDL НИКАК
а вот на систем Си можно попробывать с катапультом или агилити компайлером впридачу.
Mad Makc
Цитата
ИМХО на VHDL НИКАК

Не пугайте раньше времени народ. SynplifyDSP в зубы и вперёд.А где его брать и что с ним делать- тут написано http://forum.electronix.ru/index.php?showtopic=9718
Jools
Цитата(Mad Makc @ Nov 22 2005, 11:48) *
Цитата
ИМХО на VHDL НИКАК

Не пугайте раньше времени народ. SynplifyDSP в зубы и вперёд.А где его брать и что с ним делать- тут написано http://forum.electronix.ru/index.php?showtopic=9718


А все-таки des00, наверное, прав. А что до SynplifyDSP - он опять же VHDL сгенерит в виде связки различных компонет ( сумматора, умножителей и корня ), что я собственно на такой простой формуле могу сделать и сам (вручную). Меня же интересует поведенческое описание этой формулы. Если с умножением Симплифай справляется, то про корень я еще не слышал sad.gif
AlexanderX
Цитата(Jools @ Nov 22 2005, 11:04) *
Цитата(Mad Makc @ Nov 22 2005, 11:48) *

Цитата
ИМХО на VHDL НИКАК

Не пугайте раньше времени народ. SynplifyDSP в зубы и вперёд.А где его брать и что с ним делать- тут написано http://forum.electronix.ru/index.php?showtopic=9718


А все-таки des00, наверное, прав. А что до SynplifyDSP - он опять же VHDL сгенерит в виде связки различных компонет ( сумматора, умножителей и корня ), что я собственно на такой простой формуле могу сделать и сам (вручную). Меня же интересует поведенческое описание этой формулы. Если с умножением Симплифай справляется, то про корень я еще не слышал sad.gif


С корнем тоже все почти хорошо. Алгоритм вычисления бинарного корня из бинарного числа есть, где-то в залежах информации валялось описание, сейчас не найду. По памяти, это была итерационная процедура без CORDIC вычислителей и всей остальной фигни. На досуге попробую найти полное описание.
des00
Цитата(Mad Makc @ Nov 22 2005, 03:48) *
Цитата
ИМХО на VHDL НИКАК

Не пугайте раньше времени народ. SynplifyDSP в зубы и вперёд.А где его брать и что с ним делать- тут написано http://forum.electronix.ru/index.php?showtopic=9718


Господа может быть я что не понял, вопрос был
"а именно поведенческое описание на VHDL и синтез этой беды на DSP-блоках"
а не можно ли вообще это сделать на VHDL. Смысл вопроса я понимаю так

я просто написал в VHDL коде типа SQRT(bla bla) а остальное синтезатор сделает сам, вот такого насколько я знаю нет ни в одном синтезаторе.
smile.gif
PS. какой вопрос такой ответ


Цитата(AlexanderX @ Nov 22 2005, 04:20) *
На досуге попробую найти полное описание.

Если не затруднит мыльните как найдете smile.gif
Jools
Цитата(des00 @ Nov 22 2005, 12:30) *
Господа может быть я что не понял, вопрос был
"а именно поведенческое описание на VHDL и синтез этой беды на DSP-блоках"
а не можно ли вообще это сделать на VHDL. Смысл вопроса я понимаю так

я просто написал в VHDL коде типа SQRT(bla bla) а остальное синтезатор сделает сам, вот такого насколько я знаю нет ни в одном синтезаторе.
smile.gif
PS. какой вопрос такой ответ


Цитата(AlexanderX @ Nov 22 2005, 04:20) *

На досуге попробую найти полное описание.

Если не затруднит мыльните как найдете smile.gif


des00:
Ты все правильно понял. Именно это я и хотел выяснить.

А про вычисление корня - ну вот, навскидку, ловите
AlexanderX
Цитата
А про вычисление корня - ну вот, навскидку, ловите
, угу, именно такой алгоритм валялся у меня в запасниках, правда описание было на английском smile.gif

Я слышал о существовании библиотеки вычислений с плавающей точкой с поддержкой всех популярных математических функций. Сейчас опять-таки не вспомню на вскидку где, но помню что корень там был и много чего другого. Библиотека была на VHDL, как нарою у себя в запасниках откуда взял - кину сюда.
Jools
Цитата(AlexanderX @ Nov 22 2005, 19:18) *
Сейчас опять-таки не вспомню на вскидку где, но помню что корень там был и много чего другого. Библиотека была на VHDL, как нарою у себя в запасниках откуда взял - кину сюда.


Таких библиотек море (с грубой прикидкой smile.gif ). Но до тебя, наверное, еще не дошла суть вопроса - как синтезатору сказать, что выражение y=sqrt(x) есть вычисление корня от x. Здесь функция sqrt не самопальная (или внешняя библиотечная), а именно что-то вроде команды для синтезатора, который сам "придумает" и соптимизирует ее в логику взависимости от кристалла.
AlexanderX
Цитата(Jools @ Nov 23 2005, 07:31) *
Таких библиотек море (с грубой прикидкой smile.gif ). Но до тебя, наверное, еще не дошла суть вопроса - как синтезатору сказать, что выражение y=sqrt(x) есть вычисление корня от x. Здесь функция sqrt не самопальная (или внешняя библиотечная), а именно что-то вроде команды для синтезатора, который сам "придумает" и соптимизирует ее в логику взависимости от кристалла.


Действительно, сразу не понял, что интересует автоматическая генерация функции корня синтезатором.
Исходя из сложности описанного в приведенной тобой ссылке алгоритма и моей памяти smile.gif о описании похожего алгоритма можно сделать заключение, что это вряд ли возможно. Алгоритм имеет различную задержку в зависимости от значения числа на входе и, сложно исполняем, если это возможно в принципе, в виде комбинаторной схемы.
des00
Кстати ко мне тут идея пришла (когда модель дебажил)

В чем собтв0но проблема, создаем пакет, в нем прописываем функцию/процедуру SQRT, с сигналами в интерфейсах,
в нее запихиваем все что нужно (в том числе и событийнык контроль) и вуаля smile.gif

И кстати вопрос а можно ли в функции/процедуры "вставлять" компоненты ? тогда вообще все будет в шоколаде smile.gif
Jools
Цитата(AlexanderX @ Nov 23 2005, 11:42) *
Алгоритм имеет различную задержку в зависимости от значения числа на входе и, сложно исполняем, если это возможно в принципе, в виде комбинаторной схемы.


Встроенная в Quartus мегафункция altsqrt вычисляет корень за пару тактов на 100 МГц. Используя ее я становлюсь зависимым от библиотеки altera_mf. Тот же эффект при использовании SynplifyDSP (хотя не проверял еще - запустить никак неудается) или DSPBuilder. Т.е. быстро работающие функции есть, но появляется необходимость в сторонних (свойственных только данному семейству кристаллов) программных продуктах/библиотеках. Отсюда - непереносимость или, даже, невозможность повторного использования sad.gif.
AlexanderX
Был удивлен :-\ У меня получилось три стадии регистров, Cyclone II, 16-битный вход, 8-битный выход и 98MHz как дети в школу sad.gif Да, Altera постаралась. Получается, что возможно реализовать корень квадратный в виде ассинхронной схемы. Единственное предложение какое есть для переносимости - это попытаться реализовать тоже самое на RTL и использовать как собственный модуль - но здесь надо действительно поискать другой, более эффективный алгоритм.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.