Перейти к содержанию
    

Квадратный корень на ПЛИС

Здравствуйте.

Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Xilinx есть Cordic. Одна из функций - извлечение квадратного корня.

 

Поищите в сети по этому имени. Алгоритм не сложный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Называется CORDIC в общем случае, у Xilinx и Altera есть корки бесплатные, на OpenCores есть пара платформенно-независимых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня программист поступил ваабще просто. Возвести в квадрат же намного проще, чем корень сделать, если на борту куча умножителей. Вот он и сделал простенький итерационный алгоритм типа такого

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;

Рабоает медленно, но надежно. В ПЛИСине его тоже реализовать я думаю не сложно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

// 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;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?

 

Могу порекоммендовать мануал по технологии 3Dnow! (ищите на www.amd.com)

Там сначала по таблице берется первое приближение, а потом всего двумя итерациями ньютона-рафсона догоняется до одинарной точности. эта процедура дает 1/sqrt(x) (что на самом деле обычно и требуется), а потом если надо умножай на x (чтобы получить sqrt(x)) или возводи в квадрат (чтобы получить 1/x). В общем штука универсальная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте.

Кто-нибудь знает, как выполнить операцию квадратного корня на ПЛИС(алгоритмы и т.д.)? Существуют ли бесплатные работающие мегафункции этой процедуры?

 

 

Относительно кордика - хорошая мурзилка лежит тут:

http://andraka.com/files/crdcsrvy.pdf

 

две реализации были на опенкорах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно также построить матричное устройство на основе алгоритма извлечения квадратного корня без восстановления остатка. В приложении мое авторское свидетельство 1260951. Помимо прочего, оно имеет очень большое быстродействие.

AC1260951.ZIP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В ПЛИСине его тоже реализовать я думаю не сложно.

Думаю что всё-таки сложнее чем взять готовый;).

2SAR

Есть Cordic на Altera, могу выслать. Куда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в MegaWizard-e функция ALTSQRT что делает?

Не поверите, именно sqrt и делает. Использовал в одном проекте, все работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю что всё-таки сложнее чем взять готовый;).

 

Да, я понимаю, но когда попробывал Cordic для 1/х, он у меня сожрал столько ресурсов, что пришлось друго решение искать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не поверите, именно sqrt и делает. Использовал в одном проекте, все работало.

Да я то верю.

Интересно просто, зачем тут всю страницу исписали? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...