Недвижимость

Что такое ких фильтр. Типы цифровых фильтров

В этой статье на примере простого проекта цифрового фильтра с конечной импульсной характеристикой обсуждаются некоторые ключевые особенности архитектуры процессоров Blackfin, повышающие производительность в задачах цифровой обработки сигналов. А также рассмотрен вопрос интерфейса между отдельными частями кода, написанными на языке ассемблера и языке C/C++.

Все статьи цикла:

Цифровые КИХ-фильтры

Цифровая фильтрация является одной из самых распространенных операций в задачах цифровой обработки сигналов. Цифровые фильтры бывают двух типов - с конечной импульсной характеристикой (КИХ-фильтры) и с бесконечной импульсной характеристикой (БИХ-фильтры). Основное их отличие состоит в том, что выходной сигнал КИХ-фильтров определяется только входными отсчетами и набором коэффициентов, а выходной сигнал БИХ-фильтров зависит также от значений выходных отсчетов в предшествующие моменты времени. КИХ-фильтры более просты с точки зрения анализа и реализации, и именно этот тип фильтров мы будем рассматривать.

Структурная схема КИХ-фильтра изображена на рис. 1. Как можно видеть, выходной сигнал фильтра представляет собой взвешенную сумму конечного числа отсчетов входного сигнала. Весовые коэффициенты, определяющие импульсную характеристику фильтра, называются коэффициентами фильтра. Сигнал на выходе КИХ-фильтра во временной области описывается при помощи свертки входного сигнала с набором коэффициентов:

где у[к] - отсчет выходного сигнала в момент времени t = kT S ; x - отсчет входного сигнала в момент времени t = (k–n)T S ; h(n) - n-й коэффициент фильтра; N - порядок фильтра; а Т S - интервал дискретизации входного сигнала.

Из этой формулы следует, что вычисление отдельно взятого выходного отсчета КИХ-фильтра сводится к выполнению в цикле перемножения двух чисел (входного отсчета и коэффициента) и накопления результата. Наличие выделенного аппаратного блока, осуществляющего операцию умножения двух операндов и накопления результата в выходном регистре (Multiply-Accumulate, MAC) за один процессорный цикл, является характерным свойством любого цифрового сигнального процессора, однако помимо этого цифровые сигнальные процессоры имеют еще целый ряд свойств, направленных на дальнейшую оптимизацию вычисления свертки. К ним относятся циклическая адресация буферов в памяти, аппаратная поддержка циклов, наличие многофункциональных команд, возможность одновременной выборки нескольких операндов из памяти за один процессорный цикл и многофункциональные команды. Стоит отметить, чтообсуждаемые архитектурные особенности повышают эффективность не только при создании цифровых фильтров, но и во многих других задачах цифровой обработки сигналов. Далее мы подробно рассмотрим каждое из этих свойств на примере архитектуры процессоров Blackfin.

Рис. 1. Структурная схема КИХ-фильтра

Циклическая адресация

Циклическая адресация - это один из специализированных режимов адресации процессора, который может быть использован для организации цифровых линий задержки. Поддержка циклической адресации позволяет программисту настраивать в памяти процессора циклические (кольцевые) буферы и автоматически, без программного вмешательства выполнять адресацию их элементов со смещением указателя. Генератор адресов в процессоре может работать со смещениями, отличными от единицы, и, что более важно, автоматически выполняет возврат к началу буфера при выходе за его границу, как показано на рис. 2. В случае обычной линейной адресации для организации циклического буфера потребовалось бы при каждом положительном (отрицательном) приращении указателя сравнивать его значение с адресом последней (первой) ячейки буфера, что неизбежно привело бы к непроизводительным издержкам.

Рис. 2. Адресация циклических буферов

Для реализации циклических буферов в процессоре ВЪскйп имеется четыре набора специализированных регистров:

  • Индексные регистры (10-13), которые содержат значение, выдаваемое генератором адресов данных на шину адреса процессора.
  • Регистры модификации (М0-М3), которые определяют величину положительного или отрицательного приращения индексного регистра, выполняемого после каждого обращения к памяти.
  • Регистры длины L0-L3), которые определяют размер циклического буфера и диапазон адресов индексных регистров.
  • Регистры базового адреса (В0-В3), в которых хранится адрес первого элемента циклического буфера.

Каждая пара регистров В и L всегда используется только совместно с соответствующим регистром I (например, В0, L0, 10). На регистры М это правило не распространяется, и они могут быть использованы с любым из регистров I.

Рассмотрим, как этот режим адресации применяется для программной реализации КИХ-фильтров. В операции вычисления каждого выходного отсчета КИХ-фильтра участвует текущий входной отсчет и N-1 предыдущих входных отсчетов (N - порядок фильтра). То есть циклический буфер для линии задержки сигнала, равно как и буфер, в котором хранятся коэффициенты, должен иметь N элементов. Как показано на рис. 3, очередной принимаемый входной отсчет x[k], соответствующий моменту времени kТ S , записывается в ячейку буфера линии задержки (буфер А) с номером j поверх содержащегося в ней самого старого отсчета x, соответствующего моменту времени (k–N)T S . При этом указатель буфера А смещается на одну позицию, так что при первом чтении буфера А из памяти будет выбран отсчет x.

Указатель буфера коэффициентов (буфер В) на данном этапе не изменяется и должен указывать на первый элемент буфера, в котором хранится последний коэффициент фильтра, h[N]. После выполнения N операций чтения данных из буферов А и В, необходимых для вычисления выходного отсчета y[k], указатель В возвращается на исходную позицию (в начало буфера), а указатель А будет указывать на ячейку, где хранится отсчет x. Следует учесть, что, в общем случае, как показано на рис. 3, значения в буфер коэффициентов должны записываться в порядке, обратном реальному порядку следования коэффициентов фильтра. То есть в первой ячейке буфера должен храниться последний коэффициент фильтра, во второй ячейке - предпоследний коэффициент и т. д. Однако в большинстве ситуаций на практике предпочтительнее использовать КИХ-фильтры с симметричными коэффициентами, имеющие линейную фазовую характеристику, и в таком случае подобное упорядочивание не требуется.

Рис. 3. Буферы линии задержки и коэффициентов КИХ-фильтра

Аппаратные циклы

Еще одна особенность цифровых сигнальных процессоров в целом и процессоров Віаскйп в частности, которая используется для повышения производительности при реализации цифровых фильтров, - это аппаратная поддержка циклов. Для многих алгоритмов цифровой обработки сигналов характерно повторяющееся выполнение одинаковых операций над массивами данных. В случае применения КИХ-фильтра - это операции выборки из памяти отсчета входного сигнала и коэффициента фильтра, их перемножение и накопление результата в регистре.

Для организации программных циклов без непроизводительных издержек в процессоре Blackfin имеется два набора регистров адреса начала цикла (LT0, LT1), адреса конца цикла (LB0, LB1) и счетчика цикла (LC0, LC1). Наличие двух наборов регистров позволяет реализовывать не только одиночные, но и вложенные двухуровневые циклы. При этом цикл 1, настраиваемый при помощи регистров LT1, LB1 и LC1, имеет больший приоритет (внутренний цикл). При написании программ на языке ассемблера каждый из трех регистров цикла может быть инициализирован по отдельности, однако удобнее использовать для этой цели специальную команду LSETUP, которая имеет формат:

LSETUP(loop_start, loop_end) LCx = preg;

Здесь loop_start - метка, отмечающая начало цикла, или непосредственное значение смещения первой команды цикла относительно команды LSETUP; loop_end - метка, отмечающая конец цикла, или непосредственное значение смещения последней команды цикла относительно команды LSETUP; reg - один из регистров указателей P0-P5.

Пример настройки одиночного цикла без вложения:

LSETUP(lp_start, lp_end) LCO = P5;

... //Одна или несколько команд цикла

lp_end: ... //Последняя команда цикла

Дополнительное повышение производительности при выполнении циклов в процессоре достигается благодаря специальному буферу команд цикла глубиной четыре элемента. Если код цикла содержит не более четырех команд, то, независимо от количества итераций, обращений к памяти не потребуется, поскольку команды будут выбираться из буфера цикла.

Оптимальное размещение данных

Для максимально эффективного выполнения операции умножения с накоплением необходимо, чтобы процессор мог за один процессорный цикл выбирать из памяти команду и два операнда (в случае применения КИХ-фильтра - отсчет из линии задержки сигнала и коэффициент фильтра). В разных сигнальных процессорах эта возможность достигается по-своему. Так, например, в самых первых сигнальных процессорах Analog Devices ADSP-21xx (вплоть до ADSP-219x), имеющих классическую модифицированную гарвардскую архитектуру, данные могут храниться как в памяти данных, так и в памяти программ, а обращение к памяти программ происходит на удвоенной частоте (в первой половине процессорного цикла происходит выборка команды, а во второй - слова данных). Процессоры ADSP-219x и ADSP-2106x/2116x также основаны на модифицированной гарвардской архитектуре, однако вместо обращения к памяти программ на удвоенной частоте в них используется аппаратный кэш команд. Таким образом, за один процессорный цикл в этих процессорах может выполняться выборка одного операнда из памяти данных, одного операнда из памяти программ и команды из кэша.

В процессорах Blackfin в памяти программ могут содержаться только команды, однако память данных состоит из двух банков, каждый из которых, в свою очередь, разделен на несколько блоков. Сложная структура внутренних шин позволяет одновременно обращаться к любой паре таких блоков за один цикл. Таким образом, для оптимизации обращений к памяти при выполнении свертки в процессорах Blackfin следует разместить массивы линии задержки и коэффициентов фильтра в разных блоках памяти. Для этого необходимо сделать две вещи. Во-первых, при написании кода на языке ассемблера или языке C необходимо в явном виде указать, что массивы должны помещаться в разные секции генерируемого объектного кода (входные секции). Во-вторых, в файле описания линкера (Linker Description File, LDF) необходимо надлежащим образом установить соответствие между входными секциями и сегментами физической памяти процессора.

Размещением команд и данных во входные секции при написании программ на языке ассемблера управляет директива:

SECTION section_name;

Здесь section_name - это имя входной секции. Все переменные или команды, которые следуют в тексте программы за этой директивой, будут располагаться во входной секции с указанным именем. При создании программ на языках C/C++ для этих же целей используется квалификатор section("section_name"), который добавляется при объявлении переменной или функции перед указанием ее типа. По умолчанию компилятор C/C++ процессоров Blackfin использует следующие имена секций: program для кода программы, datai для глобальных и статических переменных, constdata для переменных, объявленных как const, bsz для глобальных переменных, инициализированных нулями, stack для хранения стека и, наконец, heap для «кучи» (динамически выделяемой памяти).

Файл описания линкера содержит управляющие директивы, которые используются на этапе компоновки для формирования исполняемого файла. Как и объектные файлы, исполняемые файлы разбиваются на выходные секции, привязанные к карте памяти процессора. В файле LDF определяется соответствие между входными и выходными секциями, а также приводится дополнительная информация, необходимая для компоновки.

Типовой файл LDF имеет следующую структуру (рис. 4).

  • Команда ARCHITECTURE{ADSP-xxxxx} задает архитектуру процессора, для которого формируется исполняемый файл. Эта команда естественным образом диктует возможную разрядность и диапазон памяти, набор регистров и другую информацию, используемую отладчиком, линкером и загрузчиком.
  • Команда SEARCH_DIR{} указывает пути для поиска библиотек и объектных файлов.
  • При помощи команды $LIBRARIES программист указывает набор библиотек и объектных файлов, в которых линкер будет осуществлять поиск символов, на которые существуют ссылки в исходных файлах.
  • С помощью макроса $OBJECTS задается список входных файлов, в которых линкер будет искать компонуемые объекты. Макросы упрощают чтение LDF-файла, позволяя вместо многократных перечислений одних и тех же имен файлов использовать более компактные записи. Например, запись вида:

$OBJECTS = main.doj, fft.doj;

dxe_program {INPUT_SECTIONS ($DOJS(program))} > mem_

эквивалентна следующей записи:

INPUT_SECTIONS (main.doj(program)

fft.doj(program))} > mem_program

  • Команда MEMORY{} описывает физическую память разрабатываемой системы. Каждая из строк, являющихся ее аргументами, задает имя, границы, разрядность и тип сегмента памяти. Имена сегментов образуют отдельное пространство имен и могут, в общем случае, пересекаться с именами входных или выходных секций. Команда PROCESSOR формирует исполняемый DXE-файл. Аргументами команды PROCESSOR являются команда OUTPUT, задающая имя выходного файла, и команда SECTIONS{}, которая непосредственно управляет размещением отдельных объектов из объектных и библиотечных файлов в физической памяти системы. Аргументы команды SECTIONS{} имеют следующий синтаксис:

имя_выходной_секции [тип_секции] {команды/выражения} [>сегмент_памяти]

В рассматриваемом примере используется команда INPUT_SECTЮNS, которая указывает линкеру, какие из входных секций необходимо поместить в конкретную выходную секцию и отобразить в заданный сегмент памяти.

Рис. 4. Структура файла LDF

В состав VisualDSP++ входят стандартные файлы LDF для каждого из процессоров, которые автоматически подключаются к проекту, если пользователь не добавил в него свой собственный LDF-файл, и определяют соответствие между упомянутыми выше входными секциями, используемыми по умолчанию, и выходными секциями/сегментами памяти.

Многофункциональные команды и вычисления в режиме SIMD

Для максимально эффективного использования аппаратных ресурсов процессора могут быть использованы многофункциональные команды. Процессор Blackfin не является суперскалярным, однако он допускает параллельный вызов до трех команд, с некоторыми ограничениями. Подобные составные многофункциональные команды, которые также называют векторными, имеют длину 64 бита и состоят из одной 32-битной и двух 16-битных команд. Время исполнения многофункциональной команды будет определяться временем исполнения самой медленной из них.

Первой командой, как правило, является команда умножителя или АЛУ. Иногда в качестве первой команды используется команда MNOP - 32-битная версия команды NOP (No Operation - «Нет операции»). В качестве 16-битных команд могут использоваться команды загрузки значения в регистр из памяти, сохранения значения регистра в память или модификации индексного регистра, а также обычная 16-битная команда NOP. На применение данных команд накладывается целый ряд ограничений, которые подробно описаны в руководстве по программированию процессоров Blackfin (Blackfin Processor Programming Reference). В тексте программы на языке ассемблера отдельные команды, входящие в состав многофункциональной, разделяются двумя вертикальными чертами ("11").

С точки зрения реализации цифрового КИХ-фильтра интерес представляет многофункциональная команда, совмещающая в себе операцию умножения с накоплением в регистре аккумулятора и две операции загрузки регистров данных из памяти с модификацией индексных регистров. Эта команда имеет общий вид типа:

Ax += Dreg_lo_hi * Dreg_lo_hi || Dreg = || Dreg = ;

Здесь Ax - это регистр аккумулятора (A0 или A1), Dreg - один из регистров регистрового файла данных (Ry, y = 0-7), Dreg_lo_hi - младшая или старшая половина регистра, Ireg - индексный регистр (Iz, z = 0-3). При использовании подобной многофункциональной команды для вычисления свертки удобно выполнить первую загрузку данных до входа в цикл, а последнюю операцию умножения с накоплением - после выхода из цикла. Тогда цикл будет включать в себя только указанную выше команду.

И наконец, поскольку в состав ядра процессора Blackfin входят два идентичных вычислительных блока, он может выполнять сразу две операции умножения-накопления за один процессорный цикл над четырьмя входными операндами в режиме SIMD (одна команда, разные данные). Такой режим позволяет в два раза уменьшить количество итераций, необходимых для вычисления одного выходного отсчета обычного КИХ-фильтра, или реализовать эффективную обработку двух потоков данных (например, комплексного сигнала и стереофонического аудиосигнала). Пример команды, осуществляющей одновременно две операции умножения-накопления:

A1 += R1.H * R2.L, A0 += R1.L * R2.H;

В первой операции старшая половина 32-битного регистра R1 умножается на младшую половину 32-битного регистра R2 и складывается с содержимым аккумулятора А1. Во второй операции младшая половина регистра R1 умножается на старшую половину R2 и складывается с содержимым аккумулятора АО.

Помимо рассмотренной выше команды, существует также много других векторных команд, сочетающих вычислительные команды АЛУ и умножителя с командами загрузки/сохранения или командами модификации индексных регистров.

Описанные выше архитектурные особенности будут использованы в проекте цифрового фильтра для платы EZ-KIT, который будет рассматриваться во второй части статьи.

КИХ-фильтр (фильтр с конечной импульсной характеристикой), называемый также нерекурсивным, - это фильтр, импульсный отклик которого содержит лишь конечное число ненулевых отсчетов. Такой импульсный отклик всегда абсолютно суммируем, и, следовательно, КИХ-фильтры всегда устойчивы. КИХ-фильтры имеют также то преимущество, что их работу легче понять как в одномерном, так и в многомерном случае.

БИХ-фильтр (фильтр с бесконечной импульсной характеристикой), или рекурсивный, - это фильтр, входной и выходной сигналы которого удовлетворяют многомерному разностному уравнению конечного порядка. Такие фильтры могут быть как устойчивыми, так и неустойчивыми, однако во многих случаях они оказываются проще в реализации, чем эквивалентные КИХ-фильтры. Синтез двумерного рекурсивного фильтра радикально отличается от синтеза одномерного фильтра. Отчасти это связано с возрастанием сложности обеспечения устойчивости. Разностные уравнения и БИХ-фильтры составляют предмет гл. 4 и 5.

Одно из важнейших преимуществ КИХ-фильтров перед БИХ-фильтрами заключается в возможности синтеза и практической реализации КИХ-фильтров с чисто вещественными частотными откликами. Такие фильтры называются фильтрами с нулевой фазой. В частотной области условие нулевой фазы можно выразить следующим образом:

Выполнив обратное преобразование Фурье от обеих частей равенства (3.1), для импульсного отклика фильтра с нулевой фазой получим требование симметрии в пространственной области

. (3.2)

Очевидно, что КИХ-фильтр может удовлетворять этому условию, если центр его опорной области совпадает с началом координат.

Фильтры с нулевой фазой важны для многих приложений цифровой обработки многомерных сигналов. Например, при обработке изображений фильтры с ненулевой фазой могут привести к разрушению линий и границ. Чтобы понять, почему это так, вспомним из нашего обсуждения преобразований Фурье, что любой сигнал можно представить в виде суперпозиции комплексных синусоид. Линейный инвариантный к сдвигу фильтр с нетривиальным частотным откликом будет избирательно усиливать или ослаблять некоторые из этих синусоидальных компонент, а также задерживать некоторые компоненты по отношению к другим. На любой частоте величина задержки зависит от значения фазового отклика. Нелинейный (разовый отклик приводит, таким образом, к рассеянию строго согласованных синусоидальных компонент сигнала, составляющих контрастные точки, линии и границы.

Фильтр с нулевой фазой имеет и другие преимущества. В силу вещественности его частотного отклика упрощается синтез фильтра. К тому же симметрию импульсного отклика фильтра можно использовать при его реализации для уменьшения требуемого числа умножений.

Материал из Модулярная арифметики

Фильтр с конечной импульсной характеристикой (Нерекурсивный фильтр , КИХ-фильтр ) или FIR-фильтр (FIR сокр. от finite impulse response - конечная импульсная характеристика) - один из видов линейных цифровых фильтров, характерной особенностью которого является ограниченность по времени его импульсной характеристики (с какого-то момента времени она становится точно равной нулю). Такой фильтр называют ещё нерекурсивным из-за отсутствия обратной связи. Знаменатель передаточной функции такого фильтра - некая константа.

Динамические характеристики

Разностное уравнение, описывающее связь между входным и выходным сигналами фильтра: где - порядок фильтра, - входной сигнал, - выходной сигнал, а - коэффициенты фильтра. Иными словами, значение любого отсчета выходного сигнала определяется суммой масштабированных значений предыдущих отсчетов. Можно сказать иначе: значение выхода фильтра в любой момент времени есть значение отклика на мгновенное значение входа и сумма всех постепенно затухающих откликов предыдущих отсчетов сигнала, которые всё ещё оказывают влияние на выход (после -отсчетов импульсная переходная функция становится равной нулю, как уже было сказано, поэтому все члены после -го тоже станут равными нулю). Запишем предыдущее уравнение в более ёмком виде:

Для того, чтобы найти ядро фильтра положим

где - дельта-функция. Тогда импульсная характеристика КИХ-фильтра может быть записана как:

Z-преобразование импульсной характеристики даёт нам передаточную функцию КИХ-фильтра:

Свойства

КИХ-фильтр обладает рядом полезных свойств, из-за которых он иногда более предпочтителен в использовании, чем БИХ-фильтр. Вот некоторые из них:

  • КИХ-фильтры устойчивы.
  • КИХ-фильтры при реализации не требуют наличия обратной связи.
  • Фаза КИХ-фильтров может быть сделана линейной

Прямая форма КИХ фильтра

КИХ фильтры могут быть реализованы с использованием трех элементов: умножитель, сумматор и блок задержки. Вариант, показанный на рисунке, есть прямая реализация КИХ-фильтров типа 1.

Пример программ

Построение КИХ-фильтров

Построение КИХ-фильтров заключается в выборе коэффициентов фильтра таким образом, чтобы полученная система имела требуемые характеристики. Чаще всего фильтр строят по заданной амплитудно-частотной характеристике. Существуют разные методы построения КИХ-фильтров:

Программные пакеты такие как MATLAB, GNU Octave, Scilab, и SciPy реализуют описанные выше методы.

Некоторые спецификации на фильтр представляют собой форму входного сигнала во временной области, которую фильтр должен "распознавать". Оптимальный согласованный фильтр для выделения сигнала любой формы из белого шума получается путём дискретизации требуемой формы сигнала и использования полученных коэффициентов в обратном порядке в качестве коэффициентов фильтра - импульсная характеристика полученного фильтра является зеркальным отражением по времени требуемой формы входного сигнала.

Построение методом окна

В данном методе сначала строится идеальный БИХ-фильтр, затем к нему применяется Функция окна – во временной области, умножением бесконечной импульсной характеристики на функцию окна. Затем выполняется свёртка полученного результата с откликом на функцию окна. Если идеальная АЧХ достаточно проста, например, как прямоугольный отклик, результат свёртки можно сравнительно легко определить. На самом деле обычно сначала определяют требуемый результат и решают обратную задачу определения подходящей функции окна. Для этого метода особенно хорошо подходят окна Кайзера.

Пример КИХ-фильтра

Примером простого КИХ-фильтра может служить скользящее среднее, используемое для обработки сигналов и изображений, системах автоматического управления и для других прикладных целей. Разностное уравнение, которое характеризует фильтр скользящее среднее, является уравнением КИХ-фильтра. Пусть - входной сигнал фильтра, - выходной сигнал. Тогда разностное уравнение будет иметь вид:

Отличительной особенностью скользящего среднего является равенство единице суммы коэффициентов .

Определения Фильтр – устройство, предназначенное для изменения спектра входного сигнала соответствующим образом. Назначение – улучшение качества сигнала, выделение информационной составляющей, разделение сигнала на компоненты. Цифровой фильтр – математический алгоритм, реализуемый с помощью аппаратных и/или программных средств и предназначенный для получения выходного цифрового сигнала с требуемыми характеристиками из входного цифрового сигнала.




Характеристики фильтра Если параметры фильтра не изменяются во времени, такой фильтр называется независящим от времени (инвариантным). Это означает, что реакцией на задержанный во времени входной сигнал x(n-m) будет такой-же выходной сигнал y(n-m), задержанный на m отсчетов. Что это означает?




Характеристики фильтра Основными характеристиками фильтра являются его амплитудно-частотная характеристика (АЧХ) и фазо- частотная характеристика (ФЧХ). Они называются статическими характеристиками. К динамическим характеристикам фильтра относятся: время нарастания, время установления и амплитуда перерегулирования.




Особенности КИХ-фильтра Коэффициенты КИХ-фильтра являются отсчетами его импульсной характеристики h(n). КИХ-фильтр всегда стабилен, т.к. он не имеет ветви обратной связи. Это означает, что для ограниченного по амплитуде входного сигнала на выходе фильтра будет сформирован ограниченный по амплитуде выходной сигнал. Для реализации КИХ-фильтра понадобится конечное число ячеек памяти. Ошибка округления такого фильтра невелика. Легко реализуем. ФЧХ КИХ-фильтра всегда линейна. Какой недостаток КИХ-фильтров?


Типы фильтров Частоты, проходящие через фильтр без изменения амплитуды, составляют полосу пропускания фильтра. Частоты, которые отсекаются фильтром, составляют полосу подавления фильтра. Точка перехода от полосы пропускания к полосе подавления называется частотой среза. В зависимости от вида АЧХ, все фильтры разделяются на четыре типа: - фильтры низких частот (ФНЧ); - фильтры высоких частот (ФВЧ); - полосовые фильтры (ПФ); - режекторные (заграждающие) фильтры (РФ).




АЧХ реального фильтра Амплитудные искажения в полосе пропускания и полосе подавления. Наличие переходной полосы. w P – граничная частота полосы пропускания. w S – граничная частота полосы подавления. Коэффициент передачи в полосе пропускания: Коэффициент передачи в полосе подавления:






Фазовая характеристика фильтра Характеризует временную задержку прохождения различных частотных составляющих через фильтр. Фазовая задержка многочастотного сигнала определяется как среднее арифметическое фазовых задержек каждой спектральной составляющей сигнала. Групповая задержка определяется выражением: где φ(w) – фазовая характеристика фильтра. Свойство линейности фазовой характеристики определяется как: Групповая задержка фильтра с линейной фазовой характеристикой – постоянная величина.




Линейная свертка Реакция фильтра определяется операцией линейной свертки его импульсной характеристики со входным сигналом. Операция свертки записывается так: Если входной сигнал представлен М отсчетами, а импульсная характеристика фильтра имеет L коэффициентов, то выходной сигнал фильтра будет содержать L+M-1 отсчет.







Каскадная форма представления фильтра Передаточную характеристику фильтра можно представить в несколько ином виде: что позволит представить структуру фильтра в виде последовательно соединенных каскадов. Пример – реализация сложного фильтра, состоящего из нескольких каскадов фильтров второго порядка:



Класс последовательностей конечной длины (КИХ-последовательности) обладает некоторыми свойствами, желательными с точки зрения построения фильтров. Например, никогда не возникает вопрос об устойчивости и физической реализуемости фильтров, поскольку КИХ-последовательности гарантируют устойчивость. Более того, КИХ-последовательности можно выбрать так, чтобы фильтры имели строго линейные фазовые характеристики. Поэтому, используя КИХ-последовательности, можно проектировать фильтры с произвольной амплитудной характеристикой.

Существуют три основных метода синтеза КИХ-фильтров:

    метод взвешивания (метод «окна»);

    метод частотной выборки;

    метод оптимальных фильтров.

Свойства КИХ-фильтров

Имеется много причин, побуждающих к изучению способов проектирования КИХ-фильтров. Основными достоинствами этих фильтров являются:

1. Легко создавать КИХ-фильтры со строго линейной фазовой характеристикой (постоянной групповой задержкой). Во многих случаях, когда проектируется фильтр с произвольной амплитудной характеристикой, это упрощает задачу аппроксимации.

2. КИХ-фильтры, реализуемые нерекурсивно, т.е. с помощью свертки, всегда устойчивы.

3. При нерекурсивной реализации КИХ-фильтров шумы округления, возникающие за счет выполнения арифметических операций с конечной точностью, легко минимизировать.

4. КИХ-фильтры можно эффективно реализовывать при помощи методов быстрой свертки, основанных на применении алгоритма БПФ.

Недостатки КИХ-фильтров следующие:

1. Для аппроксимации фильтров, частотные характеристики которых имеют острые срезы, требуется импульсная характеристика с большим числом отсчетов N . Следовательно, возрастает объем вычислительных операций.

2. Задержка в КИХ-фильтрах с линейной фазовой характеристикой не всегда равна целому числу интервалов дискретизации.

Характеристики КИХ-фильтров с линейной фазовой характеристикой

Пусть {h(n) } – физически реализуемая последовательность конечной длины, заданная на интервале. Ееz-преобразование равно

. (3.1)

Преобразование Фурье от {h(n) }

(3.2)

является периодическим по частоте с периодом
, т.е.

Рассматривая только действительные последовательности {h(n) }, получим дополнительные ограничения на функцию
, представив ее через амплитуду и фазу:

. (3.4)

Потребуем при расчете КИХ-фильтров строго линейной фазовой характеристики, и рассмотрим, при каких условиях импульсная характеристика фильтра h(n) будет это обеспечивать. Требование линейности фазовой характеристики
имеет вид

где - постоянная фазовая задержка, выраженная через число интервалов дискретизации. Используя (3.4) и (3.5) соотношение (3.2) переписывается в виде:

. (3.6)

Приравнивая действительные и мнимые части, и деля друг на друга правые и левые части полученных равенств, можно получить уравнение, решением которого будут следующие значения:

, (3.7)

Смысл их заключается в следующем. Условие (3.7) означает, что для каждого N существует только одна фазовая задержка, при которой может достигаться строгая линейность фазовой характеристики фильтра. Из условия (3.8) следует, что при заданном, удовлетворяющем условию (3.7), импульсная характеристика должна обладать симметрией.

Рассмотрим использование условий (3.7) и (3.8) для случаев четного и нечетногоN . ЕслиN - нечетно, то задержка в фильтре равна целому числу интервалов дискретизации. Типичная импульсная характеристика фильтра с линейной фазой для случаяN =11 приведена на рис. 3.1. Типичная импульсная характеристика фильтра с линейной фазой при четномN показана на рис. 3.2. ЗдесьN =10.

Рис.3.1 . N – нечетно.

Рис.3.2. N – четно.

Расчет КИХ-фильтров методом взвешивания

Как было сказано ранее, частотную характеристику любого цифрового фильтра можно представить рядом Фурье:

, (3.9)

. (3.10)

Видно, что коэффициенты Фурье совпадают с коэффициентами импульсной характеристики цифрового фильтра. Использование этих соотношений для проектирования КИХ-фильтра связано с двумя трудностями. Во-первых, импульсная характеристика фильтра имеет бесконечную длину, поскольку суммирование в (3.9) производится в бесконечных пределах. Во-вторых, фильтр физически нереализуем, так как импульсная характеристика начинается в
, т.е. никакая конечная задержка не сделает фильтр физически реализуемым.

Один из возможных методов получения КИХ-фильтра, аппроксимирующего заданную функцию
, заключается в усечении бесконечного ряда Фурье (3.9) за
. Однако простое усечение ряда приводит к явлению Гиббса, которое проявляется в виде выбросов и пульсаций до и после точек разрыва в аппроксимируемой частотной характеристики. Причем, максимальная амплитуда пульсаций частотной характеристики не уменьшается с увеличением длины импульсной характеристики, т.е. учет все большего числа членов ряда Фурье не приводит к уменьшению максимальной амплитуды пульсаций. Вместо этого уменьшается ширина выброса. Поэтому простое усечение ряда Фурье (3.9) не приводит к приемлемой аппроксимации идеального фильтра нижних частот (к чему необходимо стремиться). Этот метод непригоден для проектирования КИХ-фильтров.

Лучшие результаты дает метод, основанный на использовании весовой последовательности конечной длины w(n) , называемой окном, для модификации коэффициентов Фурье в формуле (3.9) с тем, чтобы управлять сходимостью ряда Фурье. Для большинства приемлемых окон преобразование Фурье
последовательностиw(n) имеет главный лепесток, содержащий почти всю энергию окна, и боковые лепестки, которые обычно быстро затухают. Чтобы получить КИХ-аппроксимацию функции
, формируется последовательность
, равная нулю за пределами интервала
. Поскольку результирующая характеристика фильтра равна свертке идеальной частотной характеристики и частотной характеристика окна, то ширина переходных полос зависит от ширины главного лепестка функции
. Кроме того, на всех частотахвозникают ошибки аппроксимации, имеющие вид пульсаций частотной характеристики, которые обусловлены боковыми лепестками функции
.

Из приведенного выше следует, что оптимальное окно должно иметь во-первых, минимальную ширину главного лепестка частотной характеристики, во-вторых, минимальную площадь под боковыми лепестками. К сожалению, эти два требования несовместимы и необходим компромиссный вариант.

Прямоугольное окно

N -точечное прямоугольное окно, соответствующее простому усечению ряда Фурье, описывается весовой функцией

(3.11)

Частотная характеристика прямоугольного окна описывается соотношением

. (3.12)

Ее график представлен на рис. 3.3.

Рис. 3.3. Частотная характеристика прямоугольного окна (N =25).

«Обобщенное» окно Хэмминга

Обобщенное окно Хэмминга имеет вид

(3.13)

причем
. Случай
соответствует окну Ханна (hanning), случай
- окну Хэмминга. Частотную характеристику этого окна можно выразить через частотную характеристику прямоугольного окна (рис. 3.4):

Рис.3.4. Частотная характеристика окна Хэмминга
.

Окно Кайзера

Задача расчета хороших окон фактически сводится к математической задаче отыскания ограниченных во времени функций, преобразования Фурье которых наилучшим образом аппроксимируют функции, ограниченные по частоте, т.е. имеют минимальную энергию за пределами заданного интервала частот. Одним из решений такой задачи является окно Кайзера:

где - константа, определяющая компромисс между максимальным уровнем боковых лепестков и шириной главного лепестка частотной характеристики окна, а
- функция Бесселя нулевого порядка. Окно Кайзера является по существу оптимальным окном в том смысле, что оно представляет последовательность конечной длины, которая имеет минимум энергии спектра за пределами некоторой заданной частоты.

Прочие окна

Существует еще много различных окон. Вот некоторые из них.

Окно Блэкмана:

Окно Фейера (треугольное окно):

Окно Ланцоша:

, (3.18)

где L – положительное целое число.

Последние два окна основываются на методах суммирования рядов Фурье для ускорения их сходимости. Так же существуют окна, полученные согласно некоторым критериям оптимальности (окна Долфи-Чебышева, окно Каппелини, и т.д.).

Особенности использования метода взвешивания

Метод взвешивания весьма удобен для проектирования КИХ-фильтров, однако он обладает некоторыми особенностями, которые могут препятствовать применению окон. Прежде всего необходимо иметь выражения для коэффициентов ряда Фурье:

. (3.19)

Когда характеристика
имеет сложный вид или не может быть просто преобразована в математическое выражение, формула (3.19) может оказаться громоздкой и неудобной для интегрирования.

Еще одна особенность метода взвешивания заключается в отсутствии достаточной гибкости при проектировании фильтров. Например, при расчете ФНЧ обычно трудно определить граничную частоту полосы пропускания, поскольку окно «размывает» разрыв идеальной характеристики.

Вышеупомянутые ограничения метода взвешивания не препятствуют его широкому применению.

Чтобы определить невзвешенные коэффициенты Фурье в том случае, когда аналитическое выражение для h(n) громоздко или неудобно для интегрирования, интеграл можно аппроксимировать суммой по следующей формуле

. (3.20)

Ясно, что значения (3.20) можно эффективно вычислять с помощью M -точечного ОДПФ последовательности
. Поскольку формула (3.20) является дискретным аналогом формулы (3.19), легко показать, что ростомM различие междуh(n) и
уменьшается.

Расчет КИХ-фильтров методом частотной выборки

КИХ-фильтр может быть однозначно задан коэффициентами импульсной характеристики {h(n) }, так и коэффициентами ДПФ частотной характеристики{H(k) }.Обе последовательности связаны соотношениями:

ДПФ, (3.21)

ОДПФ. (3.22)

Из формулы (3.22) сразу вытекает прямой способ получения импульсной характеристики фильтра. Такой фильтр имеет частотную характеристику, значения которой равны H(k) вN равноотстоящих на оси частот точках.

К сожалению, эта прямая процедура не представляет практического интереса, так как невозможно предсказать поведение частотной характеристики между частотными выборками.

Для того, чтобы получить фильтры с линейной фазой, частотные выборки должны быть симметричными по амплитуде и иметь линейную антисимметричную фазу в интервале
. Учитывая то, что будет использоваться ОДПФ, удобнее выразить условия симметрии на интервале
. Ели частотные выборки записаны в виде
, то условия симметрии при нечетномN можно записать в виде

(3.23)

Для улучшения качества аппроксимации часть частотных отсчетов имеет смысл сделать независимыми переменными. Значения этих независимых переменных обычно рассчитывают методами оптимизации, таким образом, чтобы минимизировать некоторую простую функцию ошибки аппроксимации.

Можно сформулировать основную идею метода частотной выборки. Искомую частотную характеристику можно аппроксимировать ее отсчетами, взятыми в N равноотстоящих точках, а затем путем интерполяции получить результирующую частотную характеристику, которая будет проходить через исходные отсчеты. Ошибка интерполяции для фильтров с достаточно гладкими частотными характеристиками обычно имеет небольшую величину. В случае селективных фильтров частотные отсчеты в переходных полосах остаются незаданными переменными, значения которых подбираются с помощью алгоритма оптимизации. Для выполнения необходимой минимизации можно использовать простые методы линейного программирования.

Проектирование оптимальных фильтров

Смысл слова оптимальный заключается в следующем: оптимальными являются те фильтры, для которых максимальная ошибка в полосе пропускания и (или) в полосе задерживания минимальна по сравнению с любыми другими фильтрами, которые можно получить, изменяя значения n выборок в переходной полосе.

Рассмотрим подход к расчету КИХ-фильтров при котором минимизируется максимальная ошибка аппроксимации.

Пусть
- заданная (желаемая) частотная характеристика,
- аппроксимирующая функция,
- положительная весовая функция, позволяющая определять ошибки для различных интервалов. Тогда взвешенная ошибка аппроксимации
по определению равна

Задачу чебышевской аппроксимации можно сформулировать как задачу поиска
(а точнее коэффициентов, через которые можно выразить
), которая минимизирует максимум модуля ошибки
в тех частотных полосах, где выполняется аппроксимация:

где A – совокупность всех интересующих частотных полос.