Лайонс Р. Цифровая обработка сигналов. Второе издание. Пер. с англ. (2006) (1095937), страница 95
Текст из файла (страница 95)
Затем мы хотим пропустить обе последовательности х;(и) их, (и) через ФНЧ и проредить результат в два раза. А вот здесь доступна маленькая хитрость. Представим себе, что мы используем КИХ-фильтр с пятью ответвлениями, и в момент времени и - 4 данные, хранящиеся в элементах памяти двух ФНЧ, показаны на рисунках 13.5 (Ц и (с). Благодаря 473 13.1. Пе но частоты без множения тому, что каждый второй отсчет последовательностей х/(гг) и х (и) равен нулю, в этот момент времени выполняются только пять умножений.
Нычисления, которые выполняются в момент времени и = 4, показаны в третьей строке крайнего правого столбца таблицы 13.1. Поскольку мы прореживаем последовательности в два раза, мы игнорируем результат вычислений в момент л = 5. Необходимые вычисления в следующий момент времени (и = 6) приведены в четвертой строке таблицы 13.1, где снова выполняются только пять умножений. Фнч с Р ого ~2 «п) канала х,(л./ = /(п /+ /д(п) (а) Фнч л/ и (г г д(п "/ канала -а(л(ли/2) Фильтр синфваного канала в момент времени и = 4 х,(п) (ь) Фильтр колоратурного канала в момент времени п = 4 х,(п) (с) Рис. 13.6.
Перенос частоты вниз на 1 14 и фильтрация: (а) блок-схема; (Ь) данные синфазного фильтра; (с) данные квадратурного фильтра Изучение таблицы 13.1 подсказывает нам, что мы можем разделить исходную последовательность х(п) на две, умножить последние на опорную последовательность 1, — 1, ... и подать полученные в результате умножения последовательности х;(и) их (и) надва фильтра, как показано на рисунке 13.6 (а). Эти два фильтра имеют прореженные коэффициенты, т. е.
коэффициенты синфазного фильтра равны четным коэффициентам л(й) исходного ФНЧ, показанного на рисунке 13.5, а коэффициенты квадратурного фильтра равны нечетным коэффициентам 1)(гв). Новые фильтры изображены на рисунке 13.6 (Ъ), который демонстрирует вычисления, выполняемые в момент времени и - 4. Используя этот прием, мы уменьшили объем необходимых вычислений в два раза. Глава 13.
Маленькие ки ости ци оной об аботки сигналов 474 Таблица 13.1. Данные фильтра и необходимые вычисления после прореживания в два раза Время Данные фильтров Необходимые вычисления 1(0) х(0)ЬО п -0 х(0) ЬО А "г "3 — д(0)-Π— (2) - (О)Ь,— (2)Ь, п - 2 -х(2) О х(0) Ьо Ь~ "г "з 0 -х(1) 0 — 4(2) = -х(1)Ь~ х(0) ((4) =х(0)Ь4-х(2)Ьг+х(4)Ьэ и-4 х(4) О -х(2) 0 Ьо Ь~ "г "з 0 х(3) 0 — х(1) 0 л(4) = — х(1)Ьз+х(3)Ью — х(2) 1(6) = — х(2)Ь4+х(4)Ьг — х(6)Ьэ — х(б) 0 х(4) 0 Ьо Ьз "г Ьз Π— х(5) 0 х(3) О а(6) х(3)Ьз-х(5)Ьз т(4) ~(8) -х(4)Ь4 — т(б)Ьг +х(В)Ьо л=8 х(8) 0 — х(б) 0 Ьо Ьз Ьг Ьз О х(7) О -х(5) 0 д(8) - — х(5)Ьз+х(7)Ьз Имеется еще одна особенность этой эффективной структуры понижающего преобразования.
Если в структуре на рисунке 13.5 (а) используются полуполосные фильтры, то только один из коэффициентов модифицированного квадратур- ного фильтра отличен от нуля. Это значит, что мы можем реализовать фильтр квадратурного канала как К элементов задержки, один умножитель на центральный коэффициент исходного полуполосного фильтра, после которого включены еще К элементов задержки, как показано на рисунке 13.6 (с). Для исходного полуполосного фильтра с Ь(ответвлениями К равно целой части от М/4. Если центральный коэффициент исходного полуполосного фильтра Ь(Ь1-1)/2 равен 0.5, что бывает часто, то умножение на него реализуется в виде сдвига задержанного отсчета хч(л) на один бит вправо.
Эта схема понижающего преобразования и вправду весьма перспективна. Вот еще одна возможность. Если исходный фильтр нижних частот на рисунке 13.5 (а) имеет нечетное количество ответвлений, коэффициенты модифицированных фильтров на рисунке 13.6 (Ь) будут симметричными, и мы сможем использовать сложенную структуру КИХ-фильтра (раздел 13.7), чтобы уменьшить количество умножителей (за счет дополнительных сумматоров) еще почти в два раза! 13.2. Быст оеп иближенноевычислениедлинывекго а 475 Наконец, если необходимо инвертировать спектр выходной последовательности х (л '), то мы можем сделать это двумя способами.
Мы можем инвертировать знак отсчетов последовательности 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, ф = О.