Айфичер Э., Джервис Б. Цифровая обработка сигналов, практический подход (2-е изд., 2004) (1095888), страница 80
Текст из файла (страница 80)
Данный подход приводит к меньшей ошибке, чем альтернативный метод округления каждого произведения отдельно до суммирования. .. 7'.11.3. Ошибки переполнения п(т) "Е')й(й)) (7.47) Переполнение происходит, когда сумма двух чисел, обычно больших чисел одного знака, превышает разрешенную длину слова. Значит, переполнение в контексте формулы (7.46) может произойти при сложении двух произведений, й(0)х(п) и А(1)х(п — 1).
Если окончательный выход у(п) согласуется по размеру с данной длиной слова, переполнение в частичных суммах несущественно. Данное свойство является приятной особенностью арифметики с дополнением до двух. В то же время, если выход у(п) не вмещается в разрешенные границы, очевидно, что значение выходной выборки, поданной, например, в ЦАП, будет неверным, и эту ситуацию следует предотвратить. Можно детектировать и корректировать переполнение, но издержки в данном случае могут быть большими.
Другая альтернатива — масштабировать коэффициенты и/или входные данные, чтобы избежать переполнения или держать его в определенных рамках, Для масштабирования коэффициентов можно использовать один из следующих подходов: тд2. Методы реализации КИХ-фильтров Ь(пг) ~ йг(й) (7.48) Если использовать преобразование (7.47, а), переполнение не произойдет никогда, но масштабирование в таком виде часто излишне, поскольку рассчитано на наихудший вариант переполнения, что на практике почти нереально.
Кроме того, такой подход вводит больший шум квантования коэффициентов, чем метод с использованием преобразования (7.47, б), в котором предполагается, что переполнение происходит время от времени. Подобно коэффициентам можно масштабировать входные данные, что часто приводит к улучшению отношения сигнал-шум. Третий подход — это масштабировать вход и выход так, чтобы получить наилучшее возможное отношение сигнал-шум. Эффективным является масштабирование с масштабом„представляющим собой степень двойки.
7Л2. Методы реакизациИ'-'КИХ-фигкырхоа:;;,:,;:,; .;:: -"-'"'~ й,-. Разностное уравнение для цифрового КИХ-фильтра имеет вид и — 1 у(п) = ~~~ 6(к)х(п — Й). (7.49) Итак, на этапе аппроксимации получены коэффициенты 6(й), выбрана подходящая структура, и анализ показал, что числа битов, выделенного для представления переменных и выполнения арифметических операций, достаточно. Финальный зтап— реализовать фильтр, а ключевой вопрос здесь — произвести программный код и/или аппаратную реализацию выбранной структуры фильтра. Предположим, что используется трансверсальная структура (как наиболее популярная), которая характеризуется уравнением (7.48).
Изучая уравнение, видим, что для вычисления у(п) требуются только операции умножения, сложения/вычитания и задержки. Следовательно, для реализации фильтра нужны также базовые компоненты: ° память (ОЗУ) для хранения текущей и предыдуших входных выборок, х(п) и х(ив /с); ° память (ОЗУ или ПЗУ) для хранения коэффициентов фильтра, Ь(к); ° умножнтель (аппаратный или программный); ° сумматоры или арифметике-логические устройства (АДУ). Данные компоненты плюс средства управления ими и образуют цифровой фильтр. Если источник входных данных аналоговый, дополнительно потребуется АЦП. Аналогично, если выход должен поступать на аналоговое устройство, потребуется ЦАП. Следовательно, фильтр реального времени имеет структуру, изображенную на рис.
7.34. Реализация фильтра традиционно разделяется на две части: аппаратную и программную. Впрочем, данное разделение уже становится артефактом в современной ЦОС, поскольку на настоящий момент практически не осталось истинно аппаратных решений, 460 Глава 7. Разработка фильтров с конечной импульсной характеристикой (КИХ-фильтров) и-битовый ДЛ Вкаднай дцн са схемой хнг фнлыр аыбарки- хоененнх Выходной ф"'"Р хИ Рис.
Хэб. Удрогдеииах блок-схема иифрового фильтра реального времени с аналоговыми вход- ным/выходным сипгшгами 7:;1 3. ПРИМЕР РВВРабОтКИ":-'.-'йг:; .".."'-::-':"::;:-::- '," ."", - - -' Пр)умер''7,,20 Разработайте и реализуйте полосовой фильтр с линейной фазовой характеристикой согласно следующей спецификации: так как большинство устройств, используемых в фильтрации, теперь программируемые.
В данной книге любую реализацию на больших системах, таких как мэйнфреймы и персональные компьютеры, будем рассматривать как программную. В этих случаях для кодирования уравнения фильтра и действий, которые производились бы в автономном режиме, будем использовать язык высокого уровня. Реализации с использованием устройств ЦОС и специального аппаратного обеспечения, включая стандартные микропроцессоры, будут рассматриваться как аппаратные. В таких случаях уравнение фильтрации для определенного устройства может представляться аппаратно-реализованным программным обеспечением нли кодом на языке ассемблера.
В большинстве приложений основной целью часто является работа в реальном времени. Наилучший выбор в этих ситуациях — аппаратная реализация. Аппаратные реализации предлагают большую скорость, но они менее гибки. В настоящее время при выборе аппаратной реализации используется три подхода: стандартные микропроцессоры (например, Могого1а 68000) и процессоры ЦОС (такие как Техав 1пвзплпепм ТМЯ320), стандартные аппаратные блоки и арифметико-логнческие устройства. При использовании в качестве основы алгоритмов и процессоров ЦОС различные устройства, требуемые для фильтрации (умножителн, сумматоры и т.д.), реализуются на аппаратном уровне и вводятся в одну ИС с использованием технологии СВИС.
В то же время, алгоритмические процессоры уже предназначены для выполнения КИХ-фильтрации. Разработчику достаточно предоставить коэффициенты фильтра и необходимую связующую логику для сопряжения процессора и внешнего мира (примеры подобных процессоров — Мо1ого!а )38Р56200 и Пх)МОЯ А100). Архитектуры и системы команд процессоров ЦОС, оптимизированные под КИХ-фильтрацию, гибче алгоритмических процессоров, но медленнее.
Разработка систем с использованием программных или аппаратных подходов рассмотрена в главах 12 и 13. На рис. 7.35 изображена функциональная схема КИХ-фильтрации, нз которой видно, что в каждый момент выборки данные вначале смешаются на одну позицию, считывается и сохраняется последняя входная выборка х(п)„и с помощью разностного уравнения вычисляется текущая выходная выборка. 7.13.
Пример разработки 4бз Рнс. 7.ЗК улрощениал функниональнаа схема трансверсальносо КИХ-фильтра реального времени полоса пропускания 900 — 1100 Гц, неравномерность в полосе пропускания 0,87 дБ, затухание в полосе подавления >30 дБ, частота дискретизации 15 кГц, число коэффициентов 41. Для реализации фильтра следует использовать целевую плату ТМЯ32010 (см. главу 13). Решение Напомним, что разработка КИХ-фильтра состоит из пяти этапов.
° Этап 1: спецификация. Спецификация уже дана. ° Этап 2: расчет коэффициентов. Используем для вычисления коэффициентов оптимальный метод, дающий наименьшее число коэффициентов фильтра (для нерекурсивных КИХ-фильтров), поскольку он доступен. Коэффициенты данного фильтра уже вычислены в предыдущем примере; см. табл. 7.7. Соответствующая частотная характеристика приведена на рис.
7.13. 462 Глава 7. Разработка фильтров с конечной импульсной характеристикой (КИХ-фильтров) ° Этап 3: выбор струюпуры. Выбрана трансверсальная структура (см. рис. 7.29, а), поскольку она допускает более эффективную реализацию при использовании процессора ТМБ32010. Разностное уравнение для данной структуры имеет вид ло у(п) = ~ Л(тп)х(п — гп).
° Этап 4: квантование и анализ ошибок Поскольку используется процессор ТМБ32010, для эффективной работы каждый коэффициент следует квантовать до 16 бит. Для этого множим каждый коэффициент на 2", а затем округляем результат до ближайшего целого числа. Покажем для примера как квантуются первые два коэффициента: )з(0) = — 0,01534638 х 2" = †5,87 — †5, 6(1) = — О, 0000578055 х 2" = — 1,89 = — 2. Квантованные и неквантованные коэффициенты перечислены в табл. 7.16.
Частотную характеристику квантованного фильтра следует проверить на предмет соответствия спецификациям, особенно в полосе подавления. Находим, что после квантования до 16 бнт наблюдается незначительное отличие характеристик квантованного и неквантованного фильтров. При использовании ТМБ32010 частичные суммы, следующие из разностного уравнения, выносятся в 32-битовый накапливающий сумматор.
Используется довольно большой (32 бит) регистр произведения. Следовательно, влияние ошибок округления при )к' = 41 будет небольшим. Возможность переполнения в данном примере не рассматривается. Если бы это было нужным, для подавления переполнения можно было бы умножить каждый коэффициент, полученный на этапе 2, на подходящий масштабный множитель (ММ). Например, оо ММ = ~ )Ь(пт)1 Целевая плата имеет только 8-битовый АЦП. Это ограничит динамический диапазон сигнала, который можно обработать, всего до 48 дб.
В аудиосистеме высокого качества, например, уровень шума квантования был бы неприемлемым, поэтому в таких случаях следует увеличивать разрешение АЦП. ° Этап 5: реализация. Функциональная схема операции КИХ-фильтрации изображена на рис. 7.35. Далее эта схема транслируется в код ассемблера ТМБ32010 и сохраняется в памяти программы (в главе 12 приводятся детали разработки и кодирования операций КИХ-фильтрации) 7.13. Пример разработки 463 Таблица 7.16. Некаантоаанные ()э(эээ)) и каантонанные ()э (эээ)) коэффициенты фильтра нз при- мера 7.20 т Некваитованныв коэффиаиенты, И(эн) Квантованиые коэффиаивиты, йв(ти) -503 165 41Ь 691 910 985 848 473 -10Ь вЂ” 792 -1449 -1919 -2070 -1827 -1198 — 280 756 1704 2367 2606 2367 1704 756 -280 -1198 -1827 -2070 -1919 -1449 -792 -105 473 848 985 910 691 415 165 — 2 -503 -5, 780550е — 05 -1, 534638е — 02 0 1 г 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ЗО 31 32 33 34 35 36 37 38 39 40 -1, 534638е — 02 -5, 780550е — 05 5,023483е — 03 1,266706е — 02 2,108206е — 02 2, 776418е — 02 3,005362е — 02 2,586935е — 02 1,444566е — 02 -3, 189323е — 03 -2, 416137е — 02 -4,420712е — 02 -5, 857453е — 02 -б, 318557е — 02 -5,575461е — 02 -3,654699е — 02 — В, 540099е — 03 2,308386е — 02 5,201380е — 02 7,224807е — 02 7,95!681е — 02 7,224807е — 02 5,201380е — 02 2, 308386е — 02 -8, 540099е — 03 -3, 654699е — 02 -5, 575461е — 02 -6, 318557е — 02 -5, 857453е — 02 -4, 420712е — 02 -2, 416137е — 02 -3, 189323е — 03 1, 444566е — 02 2, 586935е — 02 3,005362е — 02 2, 776418е — 02 2, 108206е — 02 1,266706е — 02 5.023482е — 03 464 Глава 7.