Лайонс Р. Цифровая обработка сигналов. Второе издание. Пер. с англ. (2006) (1095938), страница 99
Текст из файла (страница 99)
Мы можем инвертировать знак отсчетов последовательности 1, — 1, ..., подаваемой на смеситель квадратур- ного канала или поменять местами смеситель и отдельный элемент задержки в квадратурном канале. «п') ч х,(л') х(п) (а) д(п) Модифицированный фильтр оинфавного канала в момент времени л = 4 Модифицированный фильтр квадратурного канала в момент времени л = 4 х,(п) (ь) п х,(л) Модифицированный 1 ФНЧ вин1мвиого «и) канала х(п) (о) к,(п') о(п) Рис.
13.6. Эффективная схема понижающего преобразования, фильтрации и прореживания: (а) блок-схема; (Ь) модифицированные фильтры и их данные в момент времени п = 4; (с) схема с использованием полу- полосного фильтра 13.2. Быстрое приближенное вычисление длины вектора Методы квадратурной обработки, используемые в спектральном анализе, компьютерной графике и цифровой связи обычно требуют быстрого вычисления модуля комплексного числа (вектора 'к) по заданным действительной и мнимой частям, т. е. по синфазной 1н квадратурной Я составляющим.
Вычисление модуля требует выполнения операции извлечения квадратного корня, т. к. по определению модуль |' вычисляется как Глава 13. Маленькие кит ости ци оной об аботки сигналов 476 [р[ =Л2+ [~2. (13-5) Если сумма Х2 + Яз известна, то проблема сводится к эффективному вычислению квадратного корня. Имеется несколько способов вычисления квадратного корня. Оптимальный метод зависит от используемой аппаратуры и имеющегося программного обеспечения. Например, при вычислении квадратного корня в программе на языке высокого уровня мы используем процедуру вычисления корня, имеющуюся в библиотеке.
Библиотечные процедуры вычисления корня обеспечивают очень высокую точность, но работают очень медленно. С другой стороны, если система должна выполнять вычисление корня за 50 наносекунд, требуются высокоскоростные аппроксимации [4, 5[. Рассмотрим экономичную схему аппроксимации модуля, которая особенно эффективна в аппаратурной реализации. Существует метод вычисления модуля комплексного числа, который называют алгоритмом аМах+0Мш (читается как «альфа максимум плюс бета минимуме)'. Этот метод использует линейную аппроксимацию модуля вектора, которая требует определения, какая из составляющих вектора, Хили Я больше по абсолютной величине. Если мы обозначим большую абсолютную величину составляющих Хили Я как Мах, а меньшую — как Мш, то приближенное значение Я с использованием алгоритма аМах+13М[п вычисляется как (13-6) [Ц =аМах+РМш Существует несколько разных пар значений констант а и 8 которые дают разную точность приближения в пределах 0.1 дБ [4, 7[.
Алгоритмы аМах+0М[п, описанные в [10[, определяют длину вектора за время, необходимое для сравнения модулей чисел, двух умножений и одного сложения. Но эти алгоритмы требуют для достижения разумной точности как минимум 16-битового умножения. Но даже если аппаратурный умножитель отсутствует, не все потеряно. Задавая для констант а и 0 значения, равные целым отрицательным степеням двойки, мы делаем (13-6) пригодным для реализации в двоичной целочисленной арифметике. В большинстве случаев в алгоритме аМах+бМ[п используются константы а - 1.0 и [5 = 0.5 [8 - 10]. Умножение на 0.5 выполняется путем сдвига минимума вправо на один бит. Мы можем оценить точность того или иного алгоритма вычисления длины вектора, построив график ошибки, как функции фазового угла вектора.
Попробуем. Оценка аМах+15М[п для вектора единичной длины с использованием выражения (13-7) [Ц = Мах+ М[п/2, в диапазоне углов от 0' до 90' показана сплошной линией на рисунке 13.7. (Графики на рисунке 13.7 повторяются с периодом 90'.) Идеальная оценка в этом случае равна единице. Мы будем использовать это идеальное значение как образец при оценке качества разных алгоритмов аМах«15М[п. Давайте убедимся в том, что мы действительно понимаем, что означает сплошная кривая на рисунке 13.7.
Она показывает, что для вектора единичной длины, 1 Сначала использовался алгоритм «Мзх+0М! и», но в 1988 автор предложил расширить его до а Мах»0Мш, где а может принимать отличные от единицы значения [6[. 13.2. Быс оел иближенноевычислениедлиныаекто а ориентированного под углом примерно 26, оценка длины с помощью (13-7) даст значение 1.118 вместо правильного значения 1. Следовательно, ошибка при 26 равна 11.8%, или 0.97 дБ. Анализируя всю сплошную кривую на рисунке 13.7, мы получаем среднее значение ошибки в диапазоне от 0 до 90', равное 8.6% (0.71 дБ). На рисунке 13.7 приведены также графики для а = 1 и 18 = 1/4, а = 1 и 8 = 3/8. 1.15 1.10 1.05 1.00 0.90 0.85 0 10 20 30 40 50 80 70 80 90 Истинный угол вектора (градусы) Рис. 13.7.
Нормированные оценки аМах+8М!п при а = 1 и б = 1/2, 1/4 и 3/8 Хотя значения а иб на рисунке 13.7 дают довольно точные результаты, имеются другие пары значений а и 6„которые заслуживают нашего внимания, т. к. они обеспечивают уменьшение стандартного от"клонения ошибки. Оцените, например, пару значений а - 7/8 и 18 = 7/16, для которой кривая оценки приведена на рисунке 13.8 сплошной линией. Дальнейшее улучшение может быть получена при а = 15/16 ир = 15/32, график для этой пары приведен штриховой линией на рисунке 13.8.
Пара а = 15/16 и ф = 15/32 дает довольно хорошие результаты по сравнению с оптимальными дробными значениями а = 0.96043387 и 6 - 0.397824735, приведенными в работе [1 Ц, график оценки для которых показан пунктирной линией на рисунке 13.8. Хотя кажется, что использование значений а = 15/16 и 6 = 15/32 требует двух умножений и одного сложения, цифровая аппаратурная реализация в этом случае может быть очень простой, как показано на рисунке 13.9. Диагональные штрихи, '~1 например, обозначают сдвиг на один бит на соединениях, который реализует операцию деления на 2 с усечением.
Соответственно, символ ~4 показывает сдвиг вправо на четыре бита, который реализует деление на 16. Управляющий сигнал анализа условия Щ > ~Я принимаетзначение ТК11Е, когда модуль/больше модуля Я, так что Мах =Щ и М(п = )ф При этом на сумматор подаются значения Щ и Ц/2.
Когда сигнал Щ > ~Я принимает значение ЕА1.5Е, на вход сумматора подаются значения ~Я и Щ/2. Заметьте, что выход сумматора, Мах + Мш/2, представляет собой результат вычисления по (13-7). Выражение (13-6) реализуется вычитанием (Мах + Мш/2)/16 из Мах + Мш/2. 478 Глава 13. Маленькие хи ости ци овей об вботки сигналов 1.10 1.05 0.95 0.90 0.85 0 10 20 ЗО 40 50 60 70 80 90 Истинный угол вектора (градусы) Рис.
13.8. Оценки аМах+фМ~п при а = 7/8, ф = 7/16; а = 15/16, ф = 15/32 и а = О. 96043387, ф = О. 397824735 На рисунке 13.9 все умножения выполняются путем проводного сдвига, и общее время выполнения ограничено только задержками аппаратурных компонентов. 16(мвх + мку2) !О! Рис. 13.9. Аппаратурная реализация при а = 15/16 и ф = 15/32 Обратите внимание на одну особенность. Поскольку оценки Щ могут иметь размер больше допустимого для нормализованных, их значения могут превышать единицу. Это значит, что, хотя модуль находится в пределах допустимого диапазона, оценка может выйти за границы слова и вызвать ошибку переполнения.
При использовании алгоритмов аМах+фМ1п пользователь должен быть уверен, что истинные значения модуля не превышают значений, которые могут дать оценку, превышающую максимальное представимое значение. За удобство использования значений а иф, представляющих собой целые степени двойки, мы платим ошибками, вносимыми при делении посредством сдвига с усечением, и до сих пор мы не принимали во внимание зги ошибки. Кривые оценок на рисунках 13.7 и 13.8 были получены с помощью программной модели, использующей вычисления с плавающей запятой, и могут использоваться для оценки разных пар значения а и ф.
Однако действительная ошибка, вносимая алгоритмом аМахгфМш, будет несколько другой из-за ошибок деления при усечении 13.3. Взвешивание окном в частотной области 479 Таблица 13.2. Сравнение алгоритмов аМвх+)8М)п Наибольшая Наибольшая Средняя Средняя Мах )Ч! ошибка ошибка ошибка ошибка [% Р.В.) (%) (г(В) (%) (дВ) Алгоритм )Ч(= Мах+ М!и/2 Мах+ М)п/4 Мах+ ЗМ)п/8 7(Мах+ М)п/2)/8 15(Мах + М)п/2)/16 8.6% 0.71 дБ 89.4% 11.8% -11.6% 6.8% -12.5 % -6.25 % 0.97 дБ -1.07дБ -0.64'/ — 0.06дБ 97.0% 3.97% 0.34дБ 93.6% 0.57 дБ -1.16 дБ -4.99 % — 0.45 дБ 100 % 1.79% 0.15дБ 95.4% -0.56 дБ 13.3. Взвешивание окном в частотной области Существует интересный прием минимизации вычислений, необходимых для взвешивания с целью уменьшения утечки спектра.
В некоторых случаях необходимо вычислить БП Ф невзвешенных данных и в то же время мы хотели бы иметь БПФ тех же данных, взвешенных окном. В этой ситуации нам нет необходимости выполнять БПФ два раза. Мы можем вычислить БПФ невзвешенных данных, а затем выполнить сглаживание результата БПФ в частотной области для уменьшения утечки. Посмотрим, как это делается. данных с конечной длиной слова. Для схем аМах+8М!и ошибки усечения являются функцией длины слова данных, используемого алгоритма, значений Щ и Щ! и угла вектора. (Ошибки усечения дополняют ошибки, внутренне присущие алгоритмам аМах+фМ!и.) Однако моделирование показало, что для 8-битовой системы (максимальная длина вектора = 255) ошибка усечения меньше 1 Ж.