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

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

Отправлено ВН 10 января 2003 г. 16:02
В ответ на: Это хорошо что она совсем простая :) - сразу как узнаешь :) - вот я и хочу что бы мне стало просто. - подскажите. отправлено _Интересующийся 10 января 2003 г. 13:54

Да просто все. Есть массив целочисленный. Ищется вообще-то максимальная экспонента. А экспонента целого числа - это число незначащих знаковых разрядов, взятое со знаком минус. Или, по другому, число разрядов между старшим, т.е. знаковым, и первым значащим (но не знаковым) разрядом, т.е. разрядом, значение которого противоположно знаку.
Пример. Число=0x7fff. Экспонента=0, т.к. сразу после знакового разряда идет первый значащий. Аналогично для, например 0x8001.Число =0x3fff. Экспонента=-1, т.к. после знакового есть еще один, по сути знаковый, 0. Или, для отрицательного 0xC000. Экспонета=-1, т.к. после знакового еще одна 1.
В DSP специальные команды есть для определения экспоненты. Для c54 это EXP, для c62 - NORM. Особенность - они вычисляют число незначащих знаковых разрядов, но со знаком плюс, в отличие от ADSP, например.
Т.е. для приведенных выше примеров результаты были бы 0 и +1.
Это не экспонента вообще-то. Т.е. для TI при поиске максимальной экспоненты массива нужно наоборот искать минимум от результатов exp (norm).
Нашли. Дальше возможны варианты, в зависимости от того, где эта бл. ПЗ используется.
В общем случае для исключения переполнений в дальнейших вычислениях, сравнивают найденную экспоненту с максимально возможной. По другому это называется введением защитных разрядов.
Сдвигают влево, если найденная меньше максимально возможной. Вправо, если больше. Число сдвигов=разнице между максимально возможной и найденной. Для TI опять все наоборот. Влево, если найденный минимум больше минимально возможного, вправо, если меньше.
Иногда никакого сравнения с максимально возможной экспонентой не делают. Сдвигают влево на число разрядов=минус найденной максимальной экспоненте. Для TI, соответственно, на число разрядов=найденному минимуму (без минуса).
Для сдвига, а по сути нормализации, как правило специальные команды есть.
Для c54 это NORM. Значение максимально возможной экспоненты, или по другому, число защитных разрядов, определяется исходя из алгоритма, которым будут обрабатываться данные.
Сдвинули. Сдвинутый массив - массив мантисс. Его и используют в обычных целочисленных вычислениях.
Найденная экспонента запоминается, как экспонента всего массива.
Отсюда и название - блочная пл. запятая.
А операции над такими массивами по правилам обычной ПЗ.
Умножение-деление 2-х таких массивов: умножаются-делятся мантиссы как целые, складываются-вычитаются экспоненты. Выигрыш во времени по сравнению с обычной ПЗ очевиден.
Сложение-вычитание: массив с меньшей экспонентой сдвигается вправо на разницу между экспонентами. Далее собственно сложение-вычитание, результирующая экспонента=большей экспоненте.
Над результатом вообще-то нужно вновь проделать вышеописанные операции - определение макс. экспоненты, нормализация, корректировка уже имеющейся у массива экспоненты.
Используется все это дело в целочисленных процессорах. Очень часто в БПФ, но не только.
Довольно эффективно работает.
Собственно, поскольку в БПФ часто используется, наверное там и можно найти какие-нибудь слова по этому поводу. Наверное и у TI и у AD есть апликухи на эту тему. И еще, про БПФ и защитные разряды. Их 2, если БПФ по основанию 2. 3, если по основанию 4. 4-для основания 8 (это уже редкость).


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru