Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 74
Текст из файла (страница 74)
Округление промежуточных результатов вычислений При реализации различных алгоритмов обработки сигналов в процессе вычислений формируется множество промежуточных результатов. Формат хранения этих результатов зачастую вынуждает округлять нх, что приводит к появлению дополнительных погрешностей.
Операции, при которых появляются эти погрешности, зависят от способа представления чисел, используемого в вычислительном устройстве. 392 Глава 7. Эффекты квантования в цифровых системах При использовании арифметики с фиксированной запятой операции сложения и вычитания не приводят к необходимости округления результатов — они могут вызвать лишь переполнение. Действительно, ведь количество знаков после запятой у результата сложения двух чисел, представленных в формате с фиксированной запятой, такое же, как было у слагаемых (слева суммируемые числа записаны в двоичной системе счисления, справа — в лесятичпой): 2,75 1.3125 10. ПОО 01,0101 100.0001 4,0625 В данном примере суммирусмые числа имели по 4 двоичных разряда после за- пятой и столько же разрялов после запятой необходимо для представления пх суммы.
А вот лля прелставлення целой части суммы нужно три разряла, тогла как для слагаемых было достаточно двух. Понтону, если лля представления целой части чисел используется лва разряда, в ланном случае возникнет переполнение. В отличие от сложения умножение чисел с фиксированной запятой приводит к увеличению числа значащих цифр результата (по сравнению с сомножителями) и, слеловательно, к иеобхолимости округления. Перемножим те же два числа, ко- торые использовались в примере сложения: 10. ПОО х 01.0101 2.75 х 1.3125 3,609375 10 ПОО 10П 00 10 ПОО П.1001 ПОО Результат умножения в ланном примере имеет 6 значащих цифр после запятой.
Если лля прелставления результата используется тот же формат, что и для сомножителей, прилется производить округление: П,1001ПОО = П .1010 3.609375 = 3.625 Если лля прелставления чисел используется формат с плавающей запятой, все сказанное об умножении сохраняет силу.
Впрочем, если результат умножения по молулю не превосходит елиницы, использование формата с плавающей запятой даст большую точность, поскольку не булут зря тратиться разрялы для представления незначащих нулей слева. Однако операции сложения в формате с плавагощей запятой тоже могут пршюдить к потере точности. Пусть рассматриваемые нами лва числа представлены в формате с плаваюьчей запятой, использующем 6 разрядов для хранения пробной части нормализованной мантиссы (мантисса и порядок записаны в двоичной системе счисления); звз Эффекты квантовании а цифровых фильтрах 10,1100 - 0.101100 2н 01.0101 0,101010 2н Представим результат сложения тоже в экспоненцпальном формате: 0.101100 2н + 0.101010 2н - 0,1000001 2н Как видите, лля точного представления результата шести значащих цифр мантиссы оказалось мало, а значит, придется выполнять округление.
В данном случае, когда погрешность округления в обе стороны одинакова, возможно использование различных подходов. Выберем, например, округление в большую сторону: 0,1000001 2в и 0,100001 2и 4.0625 = 4.125 В результате при сложении чисел с плава1огцей запятой может пе выполняться свойство ассоциативности — результат суммирования нескольких чисел может зависеть от последовательности выполнения сложений.
При обучении программированию обычно дается рекомендация складывать числа, начиная с меньших (по модулю) и заканчивая самыми большими. Однако при реализации алгоритмов цифровой обработки сигналов мы, как правило, лишены возможности произвольно менять последовательность суммирования (хотя бы потому, что для сортировки слагаемых потребуется дополнительное время).
Для статистического анализа ошибок округления в структурную схему фильтра вводятся эквивалентные источники шума, лобавляемого к результатам умножения и (при использовании арифметики с плавающей занятой) сложения. Более подробную информацию об этом можно найти в 18]. Примеры моделирования ошибок округления в цифровом фильтре и при расчете БПФ будут приведены далее в этой главе, при описании функций цй11 и ой пакета Игег Рез]йп. Предельные циклы Ошибки округления при вычислениях в цифровых фильтрах могут приводить к еше одной очень серьезной неприятности — появлению так называемых т1редельных циклов (!ппй сус1е), котла вроде бы устойчивый фильтр начинает демонстрировать неустойчивое поведение. Поясним это явление на простейшем примере, взятом из [8].
Пусть имеется рекурсивный фильтр первого порядка, описываемый разностнв1м уравнением у(/г) х(7т) + 0,95 у(й — 1). Единственный полюс функции передачи данного фильтра, равный 0,95, находится внутри единичной окружности, что свидетельствует об устойчивости фильтра. Пусть вхолной сигнал отсутствует (х(А) - 0), а внутреннее состояние фильтра, которое в данном случае представляется единственным числом у(0), равно 13. При точных вычислениях сигнал на выходе фильтра экспоиенциалыю затухает; у(1) - 0,95 у(0) - 0,95 13 12,35, у(2) 0,95 у(1) = 0,95.
12,35 = 11,7325, у(3) - 0,95 у(2) - 0,95 11,7325 = 11,145875, 394 Глава 7. Эффекты квантования в цифровых системах у(4) = 0,95 у(3) = 0,95 ° 11,145875 - 10,58858125, у(5) - 0,95 у(4) = 0,95 10,58858125 = 10,0591521875, А теперь будем считать, что в ячейке памяти фильтра значение хранится в целочисленном формате и после выполнения умножения используется округление (будем обозначать его квадратными скобками). Выходной сигнал радикально изменится: у(1) - [0,95 у(0)] - [0,95 13] - [12,35] - 12, у(2) = [0,95 у(1)] - [0,95. 12] - [11,4] = 11, у(3) = [0,95 у(2)] = [0,95 1Ц - [10,45] - 10, у(4) - [0,95 у(3)] = [0,95 10] = [9,5] = 10, у(5) = [0,95 у(4)] = [0,95 10] - [9,5] = 10, Итак, выходной сигнал фильтра «залипает» на значении 10 и далее не меняется. Это и есть простейший случай предельного цикла (с периодом, равным единице), Если в разностном уравнении фильтра изменить знак у коэффициента 0,95, мы получим прелельцый цикл с периодом, равным двум, в виде чередования значений 10 и -10.
В фильтрах более высокого порядка могут возникать предельные циклы с разным периодом. Различают две разновидности предельных циклов: (3 «зерцистые» (йгапц!аг) предельные циклы возникают, когда значения внутреннего состояния фильтра при отсутствии входного сигнала затухают, но изза ошибок округления не доходят до нуля. Именно такой цикл наблюдается в приведенном примере; О «переполняющие» (очегйотч) предельные циклы имеют место в том случае, когда из-за вычислительных погрешностей значения внутреннего состояния фильтра при отсутствии входного сигнала не затухают, а возрастают, вызывая переполнение.
Для анализа возможностей возникновения предельных циклов используется понятие эффекнгнвных значений коэффициентов знаменателя функции передачи фильтра. Под эффективным значением коэффициента понимается отношение округленного результата умножения к использованному в качестве множителя значению внутреннего состояния фильтра. Эффективное значение коэффициента будет разным для разных значений состояния. Если для какого-то внутреннего состояния фильтра набор эффективных значений коэффициентов дает полюс функции передачи, расположенный на единичной окружности, это означает, что данное внутреннее состояние при отсутствии входного сигнала дает предельный цикл.
В нашем примере эффективное значение единственного коэффициента фильтра равно [0,95у(Й вЂ” 1)] у(й-1) Учет эФфектов конечной точности вычислений в МАТ(АВ Построим график значений аьл~, для целочисленных значений у()г — 1), лежащих в диапазоне от -20 до 20 (рис. 7.9): » у = -20:20: » у(11п0(-у))=П: Ж удалЯен нулевое значение » а етт = гоип0(0.95 у)./у: » р101(у. а етт, '.') » у11т([0.9 1. Ц ) » х1аЬе1('у(й-1)') » у1аЬе1('а (е(1)') 1.08 1.08 1.02 Ф 0.98 0.98 0.94 0.9 -20 -15 -10 -5 0 5 10 15 20 у(к-1) Рис.
7.9. Зависимость аффективного значения коэффициента рекурсивного фильтра первого порядка от внутреннего состояния фильтра Как видите, если у((г — 1) лежит в диапазоне от -10 до 10, значение ачлз становится равным едингтце, а фильтр оказывается на гршшце устойчивости (полюс функции передачи лежит на единичной окружности), что и приводит к появлению предельного цикла. В приведенном примере анализ предельных циклов оказывается очень простым, поскольку внутреннее состояние фильтра описывается единственным числом.