реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Теорема Пифагора в FPGA, Вычисление y=sqrt(a^2 + b^2)
Jools
сообщение Nov 22 2005, 06:28
Сообщение #1


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



Привет всем!

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

Заранее спасибо.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 22 2005, 07:09
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



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

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

Сообщение отредактировал des00 - Nov 22 2005, 07:21


--------------------
Go to the top of the page
 
+Quote Post
Mad Makc
сообщение Nov 22 2005, 08:48
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 2-10-04
Из: Мухосранска
Пользователь №: 763



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

Не пугайте раньше времени народ. SynplifyDSP в зубы и вперёд.А где его брать и что с ним делать- тут написано http://forum.electronix.ru/index.php?showtopic=9718
Go to the top of the page
 
+Quote Post
Jools
сообщение Nov 22 2005, 09:04
Сообщение #4


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



Цитата(Mad Makc @ Nov 22 2005, 11:48) *
Цитата
ИМХО на VHDL НИКАК

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


А все-таки des00, наверное, прав. А что до SynplifyDSP - он опять же VHDL сгенерит в виде связки различных компонет ( сумматора, умножителей и корня ), что я собственно на такой простой формуле могу сделать и сам (вручную). Меня же интересует поведенческое описание этой формулы. Если с умножением Симплифай справляется, то про корень я еще не слышал sad.gif
Go to the top of the page
 
+Quote Post
AlexanderX
сообщение Nov 22 2005, 09:20
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977



Цитата(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 вычислителей и всей остальной фигни. На досуге попробую найти полное описание.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 22 2005, 09:30
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(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


--------------------
Go to the top of the page
 
+Quote Post
Jools
сообщение Nov 22 2005, 11:19
Сообщение #7


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



Цитата(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:
Ты все правильно понял. Именно это я и хотел выяснить.

А про вычисление корня - ну вот, навскидку, ловите
Go to the top of the page
 
+Quote Post
AlexanderX
сообщение Nov 22 2005, 16:18
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977



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

Я слышал о существовании библиотеки вычислений с плавающей точкой с поддержкой всех популярных математических функций. Сейчас опять-таки не вспомню на вскидку где, но помню что корень там был и много чего другого. Библиотека была на VHDL, как нарою у себя в запасниках откуда взял - кину сюда.
Go to the top of the page
 
+Quote Post
Jools
сообщение Nov 23 2005, 05:31
Сообщение #9


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



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


Таких библиотек море (с грубой прикидкой smile.gif ). Но до тебя, наверное, еще не дошла суть вопроса - как синтезатору сказать, что выражение y=sqrt(x) есть вычисление корня от x. Здесь функция sqrt не самопальная (или внешняя библиотечная), а именно что-то вроде команды для синтезатора, который сам "придумает" и соптимизирует ее в логику взависимости от кристалла.
Go to the top of the page
 
+Quote Post
AlexanderX
сообщение Nov 23 2005, 08:42
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977



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


Действительно, сразу не понял, что интересует автоматическая генерация функции корня синтезатором.
Исходя из сложности описанного в приведенной тобой ссылке алгоритма и моей памяти smile.gif о описании похожего алгоритма можно сделать заключение, что это вряд ли возможно. Алгоритм имеет различную задержку в зависимости от значения числа на входе и, сложно исполняем, если это возможно в принципе, в виде комбинаторной схемы.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 23 2005, 10:15
Сообщение #11


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Кстати ко мне тут идея пришла (когда модель дебажил)

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

И кстати вопрос а можно ли в функции/процедуры "вставлять" компоненты ? тогда вообще все будет в шоколаде smile.gif


--------------------
Go to the top of the page
 
+Quote Post
Jools
сообщение Nov 23 2005, 11:57
Сообщение #12


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



Цитата(AlexanderX @ Nov 23 2005, 11:42) *
Алгоритм имеет различную задержку в зависимости от значения числа на входе и, сложно исполняем, если это возможно в принципе, в виде комбинаторной схемы.


Встроенная в Quartus мегафункция altsqrt вычисляет корень за пару тактов на 100 МГц. Используя ее я становлюсь зависимым от библиотеки altera_mf. Тот же эффект при использовании SynplifyDSP (хотя не проверял еще - запустить никак неудается) или DSPBuilder. Т.е. быстро работающие функции есть, но появляется необходимость в сторонних (свойственных только данному семейству кристаллов) программных продуктах/библиотеках. Отсюда - непереносимость или, даже, невозможность повторного использования sad.gif.
Go to the top of the page
 
+Quote Post
AlexanderX
сообщение Nov 24 2005, 10:13
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977



Был удивлен :-\ У меня получилось три стадии регистров, Cyclone II, 16-битный вход, 8-битный выход и 98MHz как дети в школу sad.gif Да, Altera постаралась. Получается, что возможно реализовать корень квадратный в виде ассинхронной схемы. Единственное предложение какое есть для переносимости - это попытаться реализовать тоже самое на RTL и использовать как собственный модуль - но здесь надо действительно поискать другой, более эффективный алгоритм.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016