[an error occurred while processing this directive]
|
Это можно. Пусть FR = 17 (используем формат: 1 бит под знак, 17 бит под дробную часть). Тогда, если линия задержки будет также 18-битной в младшем бите будет при каждом умножении возникать ошибка в полбита.
Рассмотрим, как будет накапливаться эта ошибка из-за рекурсивности фильтра. При имеющемся значении коэффициента при yр[n-1] равном b=117340/131072 = 0.895233154296875 имеем: если даже предположить, что нормированная величина yp[0] равна 1, то, предоставив данной системе право прорелаксировать (т.е. промоделировать ее дальнейшее поведение при нулевом входном сигнале), мы получим, что уже примерно на 110 итерации будем иметь значение равное
(0.895233154296875)^110 = 5,16389419416e-6,
лограифм по основанию 2 от этого числа, равный -17.5 ясно показывает, что начиная примерно со 110 итерации ошибка в полбита больше накапливаться не будет ни в каком случае. Теперь посмотрим самый плохой вариант, что накапливаемая ошибка в полбита всегда имеет один и тот же знак (допустим, плюс) и все время точно равна 0.5 бита. Тогда, даже в этом самом плохом варианте максимальное значение накопленного шума будет равно 0.5*110/131072 = 55/131072.
Отсюда видно, что испаганенными в данном случае будет не больше, чем 6 младших бит 0..5. Но, принимая во внимание тот факт, что вероятность того, что величина ошибки будет всегда +0.5 бита стремится к нулю, можно говорить, что реально будут испорченными лишь где-нибудь 4 бита, что явно не соответствует картине шумов, приводимых автором поста.
В его случае картина очень напоминает переполнение, возникающее прежде всего при умножении двух больших чисел с фиксированной точкой. А о причине этого переполнения я уже писал в одном из своих постов ниже.