Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Квадратный корень на ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
1Sergey1
Здравствуйте.
Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?
yuri_d
У Xilinx есть Cordic. Одна из функций - извлечение квадратного корня.

Поищите в сети по этому имени. Алгоритм не сложный.
DmitryR
Называется CORDIC в общем случае, у Xilinx и Altera есть корки бесплатные, на OpenCores есть пара платформенно-независимых.
syoma
А у меня программист поступил ваабще просто. Возвести в квадрат же намного проще, чем корень сделать, если на борту куча умножителей. Вот он и сделал простенький итерационный алгоритм типа такого
max=x;
min=0;
precision=x*0.000001;
while ((max-min)>precision)
{
mid=(max+min)/2;
mid_2=mid*mid;
if (mid_2 > x) max=mid;
else min=mid;
}
return min;
Рабоает медленно, но надежно. В ПЛИСине его тоже реализовать я думаю не сложно.
BSACPLD
Можно еще попробовать такой вариант:
http://murid0.narod.ru/math/sqrt8.htm
Leka
// s = sqrt( a ), результат N бит за N тактов:
for( s = 0, b = 2 << (2*N - 2), i = 0; i < N; i ++ ){
c = a - ( s | b );
s >>= 1;
if ( c >= 0 ) { a = c; s = s | b };
b >>= 2;
}
Lexey
Цитата(1Sergey1 @ Feb 29 2008, 17:03) *
Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?


Могу порекоммендовать мануал по технологии 3Dnow! (ищите на www.amd.com)
Там сначала по таблице берется первое приближение, а потом всего двумя итерациями ньютона-рафсона догоняется до одинарной точности. эта процедура дает 1/sqrt(x) (что на самом деле обычно и требуется), а потом если надо умножай на x (чтобы получить sqrt(x)) или возводи в квадрат (чтобы получить 1/x). В общем штука универсальная.
SAR
Цитата(1Sergey1 @ Feb 29 2008, 17:03) *
Здравствуйте.
Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?



Относительно кордика - хорошая мурзилка лежит тут:
http://andraka.com/files/crdcsrvy.pdf

две реализации были на опенкорах
Волощенко
Можно также построить матричное устройство на основе алгоритма извлечения квадратного корня без восстановления остатка. В приложении мое авторское свидетельство 1260951. Помимо прочего, оно имеет очень большое быстродействие.
eugen_pcad_ru
Цитата(syoma @ Feb 29 2008, 20:21) *
В ПЛИСине его тоже реализовать я думаю не сложно.

Думаю что всё-таки сложнее чем взять готовыйwink.gif.
2SAR
Есть Cordic на Altera, могу выслать. Куда?
slog
А в MegaWizard-e функция ALTSQRT что делает?
Kuzmi4
2 eugen_pcad_ru - если не жалко, то вышлите есчё на
kuzma_@ua.fm

Спасибо.
RHnd
Цитата(slog @ Mar 3 2008, 10:01) *
А в MegaWizard-e функция ALTSQRT что делает?

Не поверите, именно sqrt и делает. Использовал в одном проекте, все работало.
syoma
Цитата(eugen_pcad_ru @ Mar 3 2008, 08:08) *
Думаю что всё-таки сложнее чем взять готовыйwink.gif.


Да, я понимаю, но когда попробывал Cordic для 1/х, он у меня сожрал столько ресурсов, что пришлось друго решение искать.
slog
Цитата(RHnd @ Mar 3 2008, 19:13) *
Не поверите, именно sqrt и делает. Использовал в одном проекте, все работало.

Да я то верю.
Интересно просто, зачем тут всю страницу исписали? biggrin.gif
1Sergey1
Цитата(eugen_pcad_ru @ Mar 3 2008, 09:08) *
Думаю что всё-таки сложнее чем взять готовыйwink.gif.
2SAR
Есть Cordic на Altera, могу выслать. Куда?



Если не сложно вышлите, пожалуйста, на umeza@rambler.ru
Maverick
Цитата(1Sergey1 @ Mar 5 2008, 10:45) *
Если не сложно вышлите, пожалуйста, на umeza@rambler.ru


и пожалуйста на maildenisov@gmail.com Заранее благодарен!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.