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

 
 
> Как маштабируем результат фильтра ?, Результат 16-битной рутины фильтра в Acc
Саша Z
сообщение Jun 3 2007, 22:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Не могу сообразить что-то: есть FIR в ассемблере 16-битного процессора (fixed point), результат каждого последующего sample записывается в аккумуляторе который скажем 32 бит, из которого его нужно сохраняет в буфер результатов. Не догоняю как правильно маштабировать результат, т.е. как брать только старшие знАчимые 16 бит. Нужно-ли определять или старшие 16 бит аккумулятора = 0, то брать нижнее слово, если-же есть значимые биты в старшем слове аккумулятора то сдвигат его влево пока старший знАчимый бит не станет битом 31 и затем брать старшее слово из аккумлятора ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Саша Z
сообщение Jun 11 2007, 15:11
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



ОК, после короткого перерыва вернулись к теме....
Написал рутину IIRa, работает как положено, но, пока использую очень грубое маштабирование в 16 бит fixed-point: коеффициенты фильтра второго порядка, вида: b0/(1-a1z^-1-a2z^-2), т.е. а1, а2 и b0 - умножаются на 2^10 после чего вводятся в рутину IIR. В рутине после каждого цикла (цикл обратной связи IIRа второго порядка) результат делиться на на 2^10 (смещение вправо на 10 разрядов) во избежание промежуточных overflow. Затем, на выходе из цикла обратной связи то что получилось умножается на b0, после чего результат опять делиться на 2^10 и готов к выходу.

Проблема в том что такхи фильтров (IIRов) у меня 15, все работают параллельно, т.е. обрабатывают ту-же самую входную data и их результаты должны складываться. Мне кажется что этот факт тоже нужно учитывать при маштабировании выхода. Посему думал после каждого сложения результата текущего фильтра с результатом предыдущего - смещать результат сложения на один разряд вправо (деление на 2), ибо потенциально сложени двух чисел арзрядности Х может дать разрядность до Х+1. После чего полученный результат сохраняется в выходном буфере.

Как вообще можно учитывать сложение результатов отдельных фильтров в банке фильтров в плане маштабирования выхода ?
Go to the top of the page
 
+Quote Post

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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:19
Рейтинг@Mail.ru


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