[an error occurred while processing this directive]
Ну...
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 03 августа 2006 г. 15:02
В ответ на: Спасибо, стало что-то вырисовываться. Сначала сделал итерационно (ньютоном) - получилось что-то в районе 45 тактов. С subc и целочисленным делением разбрался, сейчас пытаюсь понять как приспособить его к дробным. ВОПРОС: Вы бы не могли пояснить про разложение в ряд 1/(1+x) ? отправлено bp 03 августа 2006 г. 12:19

Это же разложение в ряд Тейлора.
1/(1+x)=1-x+x^2-x^3+...
Сколько оставить членов разложения - от точности требуемой зависит. Может уже и линейного члена хватит, т.е. 1/(1+x)~=1-x, может квадратичный понадобится - 1/(1+x)~=1-x+x^2.
Факт тот, что деление заменяется умножением.
Теперь как это приложить.
У Вас есть 32-х р. делимое, D и 32-х разрядный делитель, Z.
Надо найти R=D/Z :-) Сразу - Z=0 случай особый и дальше не рассматривается.
Делитель всегда можно привести к виду: Z=(2^K)*Y.
Y - 32-х разрядное число в диапазоне от 0.5 до 1.
Это обычная нормировка. Соответствующая пара команд есть в любом DSP.
Первая команда определяет порядок K числа Z. Вторая команда сдвигает число Z на K разрядов, получая Y.
Тогда R=(D/Y)*2^(-K)=R0*2^(-K). R0=D/Y. Здесь главное найти R0.
Число Y можно всегда представить так:
Y=M+L*2^(-16).
M -16-ти разрядное число, старшие 16 разрядов Y; L - тоже 16-ти разрядное число, но младшие 16 разрядов Y.
Нормировка, про которую писал выше, гарантирует, что M не равно 0.
Y=M+L*2^(-16)=M*[1+(L/M)*2^(-16)]=M*(1+x). x=(L/M)*2^(-16).
L и М 16-ти разрядные, т.е. x вычисляется с использованием деления 32 на 16.
Тогда R0=D/Y=D/[M*(1+x)]=R1/(1+x). R1=D/M. Т.к. M - 16-ти разрядное, то R1 тоже через деление 32 на 16.
А дальше, вместо того, чтобы делить R1 на 1+x, нужно умножить R1 на разложение в ряд функции 1/(1+x), ограничив число членов разложения необходимой точностью.
В итоге имеем деление 32 на 32 выполненное через деления 32 на 16.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание