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

 
 
> БИХ-фильтр на 16-разрядном МК
condor
сообщение Jul 30 2006, 22:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 18-06-05
Из: Kyiv, Ukraine
Пользователь №: 6 126



Создал фильтр 2-го порядка в MATLABе с помощью fdatool. Получил коэффициенты, значения которых находятся в пределах [-2;2]. Умножил их на 2^14, чтоб получить целые 16-разрядные знаковые коэффициенты.
Теперь очень не удобно вычислять промежуточное значение в звене 2-го порядка:
wk = (sk*x(n) - a1*w1 - a2*w2) * 2^-14;
Получается, что два младших бита находятся в младшем слове аппаратного умножителя, а остальные в старшем. Контроллер - MSP430. Его аппаратный умножитель сдвигать результат не умеет.
Можно как-то сделать так, чтоб результат весь находился в старшем слове?

Это МАТЛАБовский код:
Код
Nsamp = 15000;
Fsamp = 1500;

freq = 5;
t = 0:(1/Fsamp):10;
t(end) = [];
x = sin (2*pi*freq*t) * 2048 + 2048;

sk = 15045;
a1 = -2639;
a2 = -13707;
b0 = 16384;
b1 = 0;
b2 = -16384;

for n = 1:Nsamp
    wk = (sk*x(n) - a1*w1 - a2*w2) * 2^-14;
    y(n) = (b0*wk + b1*w1 + b2*w2) * 2^-14;
    w2 = w1;      w1 = wk;
end
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 04:03
Рейтинг@Mail.ru


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