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

 
 
> вычисление квадратного корня на tms320f2812
alexsl
сообщение May 7 2008, 12:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165



Добрый день. При построении FSK демодулятора встретился с проблемой. Очень долго вычисляется квадратный корень. Пробовал аппаратную реализацию, как самую быструю:

unsigned int sqrt_user(unsigned long x){
unsigned long m = 0x40000000;
unsigned long y = 0;
unsigned long b;
while(m){
b = y | m;
y >>= 1;
if( x >= b ){
x -= b;
y |= m;
}
m >>= 2;
}
return y;
}

Получилось 400 циклов. Пробовал Cordic алгоритм. Еще больше получается.
Может быть есть у кого реализация, позволяющая уложится в 100 - 160 тактов?

Сообщение отредактировал alexsl - May 7 2008, 12:32
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ATname
сообщение May 7 2008, 16:07
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 4-04-06
Пользователь №: 15 797



Цитата(alexsl @ May 7 2008, 16:31) *
Добрый день. При построении FSK демодулятора встретился с проблемой. Очень долго вычисляется квадратный корень. Пробовал аппаратную реализацию, как самую быструю:

unsigned int sqrt_user(unsigned long x){
unsigned long m = 0x40000000;
unsigned long y = 0;
unsigned long b;
while(m){
b = y | m;
y >>= 1;
if( x >= b ){
x -= b;
y |= m;
}
m >>= 2;
}
return y;
}

Получилось 400 циклов. Пробовал Cordic алгоритм. Еще больше получается.
Может быть есть у кого реализация, позволяющая уложится в 100 - 160 тактов?

Есть такая "штука", называется сплайн функция. Вычисление квадратного корня апроксимируется полиномом нужного (в зависимости от точности рассчета) порядка. Обычно третьего за глаза хватает. Формула на работе валяется...
Go to the top of the page
 
+Quote Post
alexsl
сообщение May 8 2008, 03:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165



Цитата(ATname @ May 7 2008, 20:07) *
Есть такая "штука", называется сплайн функция. Вычисление квадратного корня апроксимируется полиномом нужного (в зависимости от точности рассчета) порядка. Обычно третьего за глаза хватает. Формула на работе валяется...

Поделитесь пожалуйста. Заранее благодарен. smile.gif
Go to the top of the page
 
+Quote Post
ATname
сообщение Jun 17 2008, 04:27
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 4-04-06
Пользователь №: 15 797



Цитата(alexsl @ May 8 2008, 07:56) *
Поделитесь пожалуйста. Заранее благодарен. smile.gif

Корень из суммы квадратов х1 и х2 апроксимация четвертого порядка, точность результата не хуже 0.007%.
A*t^4 + D*t^3 + C*t^2 + D*t + E, где
А = -0.011805615, В = -0.105819461, С = 0.535740269, D = -0.004076434, E = 1.000070802
t отношение х2 к х1 если х1>х2 или наоборот, т.е. t должно быть меньше единицы.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 18:57
Рейтинг@Mail.ru


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