[an error occurred while processing this directive]
|
Чего - то не получается.
Смотри: для пробы взял самый простой фильтр 2-го порядка, который описывается как y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)+a1*y(n-1)+a2*y(n-2).
Все данные кроме y(n) представленны в формате 8.8, тогда ясно, что
y(n) получится в 16.16;
После того как сосчитана сумма, в MR1 и MR0 находится y(n) в 16.16;
Чтобы привести y(n) к 8.8 я сдвигаю MR1 и MR0 на восемь бит вправо, после чего в MR1 находится y(n) в 8.8(при этом теряются 8LSB и 8MSB); найдя y(n) я обновляю все элементы задержки;
На мой взгляд сделано все правильно. Фильтр считал в MatLab'е и при точности коэффициентов 8.8 все должно быть Ок.
При отладке подал на вход 5(500h в 8.8) и естественно ожидал увидеть эту пятерку на выходе, но получается лажа. Я так думаю, что все портят отрицательные коэффициенты. Может я не прав??????????
E-mail: info@telesys.ru