[an error occurred while processing this directive]
|
Секция 2-го порядка должна нормально реализоваться.
Но к-ты должны быть не 16 разрядов конечно. Даже для одной секции.
32 разряда. Формат 2.30, 2 на целую, 30 на дробную. По максимуму.
Данные тоже неплохо бы 32 разрядные, данные обратной связи имею ввиду. В том же формате. Ну или, перестраховавшись, можно для данных взять формат 3.29.
Сами вычисления 64-х разрядные. Их результат усекается-округляется до 32 разрядов нужного формата и кладется в линию задержки обр. связи. Он же усекается-округляется до нужного числа разрядов, например до 16, и идет на дальнейшую обработку, на ЦАП, в общем куда угодно, но не в обратную связь фильтра. Этот выходной результат можно и отсатурачить, если есть такое желание. Я обычно по такой схеме делаю.
Займет ну никак не 1000 циклов. Тем более на 55-ом. Десятки где-нибудь.
Это я Вам по сути из своего опыта говорю.
Потому что комплексное звено первого порядка с примерно схожими параметрами, описанной организ. вычислений и форматом к-тов, данных, на 54-ом процессоре занимало у меня циклов 80 (по памяти). А компл. звено первого порядка по затратам примерно эквивал. действительному бикваду. Кстати, как большой любитель комплексных чисел вообще и фильтров в частности:-), рекомендую замену Вашему действительному бикваду. В виде фильтра с H(Z) что-нибудь типа:
H(Z)=B*(1+Z^(-1))/(1-R*exp(j*W0)*Z^(-1)). С использованием только реальной части от результата фильтрации.
W0=2pi*F0/Fdiskr.
В общем если один биквад, или один черт, одно комплексное звено первого порядка Вас устраивает по остальным фильтровым параметрам, то
реализовать его можно.
Еще пару слов, может кому пригодится.
Если обозначить нормированную половину полосы пропускания по 3 дб уровню через DW (DW=2pi*(F0707-F0)/Fdiskr), то для узкополосного звена первого порядка можно в первом приближении связать R и DW очень простой формулой, а именно:
R~=1-DW*sqrt(2). В общем она и для узкополосных биквадов годится.
E-mail: info@telesys.ru