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

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

Отправлено советующий 22 апреля 2005 г. 10:54
В ответ на: не понял отправлено qqk 22 апреля 2005 г. 10:29

что бы не терялося.

в общем то тамма все просто...
есть число A и B
представляем (в уме :) )
A = a * 2^n
B = b * 2^m
хотим С = A * B
и получим
с = a * 2^n * b * 2^m = a*b * 2^(n+m) = с * 2^(k)

нам все (n+m) не надо - поэтому мы чего то выкидываем - сдвигаем вправо
с = с >> l = с * 2^(k-l)

пример
n=m=15
хотим результат том же масштабе * 2^15
после умножения емеем k = 30
если хотим опять только 15 бит - то будь добрь вправо сдвинуть на 15 - выбросить 15 бит последних малозначащих так сказать

дальше немного больше - все это хозяйство имеет место жить в конкретных регистрах - до умножения в 16 битных, после (например)в 32
ну и тут народ заметил на досуге (для наших 15),
что вместо того что бы двигать все вправо на 15 - можно влево на 1 - и тада в старшей половинке 32 битника получиться наш результат.

Если пользовать Q13 - то все тоже самое - вопрос только в каком масштабе вам надо результат?

чем хорошь Q15 - точнее 1Q15 - тем что (1Q15*1Q15 >> 15) опять 1Q15
а вот (3Q13*3Q13 >> 13) вовсе не обязательно поместиться в 3Q13 - нада быть астарожным в выборе множителей. - или масштабировать результат умножения.



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

Ответы


Отправка ответа

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

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

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru