Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

цос / Лаб_раб_№6

.doc
Скачиваний:
62
Добавлен:
02.02.2015
Размер:
139.26 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 6

ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ ФИЛЬТРОВ

Цель работы: получение практических навыков расчета коэффициентов цифрового фильтра; изучение их временных и частотных характеристик.

Необходимые теоретические сведения

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

y(n)= ∑bi·x(n-i+1)- ∑aj·y(n-j+1), i=1..N+1 , j=2..N+1;

Различают два типа фильтров. Если выходные отсчеты ЦФ определяются только входными отсчетами (aj=0; j=2..N+1), импульсная характеристика ЦФ имеет конечное число отсчетов m=N+1 , т.е. h(n≥m)=0. Такие фильтры называют нерекурсивными (НРЦФ) или фильтрами с конечной импульсной характеристикой (КИХ-фильтрами). Для них справедливо:

y(n)=∑bi·x(n-i+1);

H(z)= ∑bi·zn-i+1 , i=1..N+1.

Если выходные отсчеты ЦФ определяются и входными и выходными отсчетами, импульсная характеристика имеет бесконечное число отсчетов. Такие фильтры называют рекурсивными (РЦФ) или фильтрами с бесконечной импульсной характеристикой (БИХ-фильтрами).

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

Под синтезом дискретного фильтра понимается выбор таких наборов коэффициентов {ai} и {bi}, при которых характеристики получающегося фильтра удовлетворяют заданным требованиям. Строго говоря, в задачу проектирования входит и выбор подходящей структуры фильтра с учетом конечной точности вычислений. Это особенно актуально при реализации фильтров "в железе" - с использованием специализированных БИС или цифровых сигнальных процессоров. Эффекты, связанные с конечной точностью вычислений, можно анализировать с помощью функций пакета Filter Design; функциями синтеза фильтров эти эффекты не учитываютсяМетоды синтеза, не использующие аналоговый прототип, называются прямыми. Их, в свою очередь, можно также разделить на две группы: методы синтеза рекурсивных и нерекурсивных фильтров. К функциям прямого синтеза нерекурсивных фильтров относятся следующие:

  • Функции, реализующие синтез фильтров путем обратного преобразования Фурье от желаемой АЧХ с последующим умножением получившейся импульсной характеристики на некоторую весовую функцию (окно) для ослабления пульсаций АЧХ, появляющихся из-за эффекта Гиббса. Это функции fir1 и fir2. Сюда же можно отнести функцию синтеза ФНЧ с косинусоидальным сглаживанием АЧХ - firrcos. Кроме того, функция kaiserord позволяет по заданным параметрам АЧХ оценить требуемый порядок фильтра при синтезе с использованием окна Кайзера.

  • Функции, реализующие минимизацию среднеквадратического отклонения АЧХ получающегося фильтра от заданной. Это функции firls, fircls и fircls1. Последние две функции решают оптимизационную задачу с ограничением максимального отклонения АЧХ от заданной. Это позволяет избежать появления больших выбросов АЧХ вблизи переходных полос.

  • Функции, реализующие минимаксную оптимизацию, то есть минимизацию пикового отклонения АЧХ получающегося фильтра от заданной. В результате получаются фильтры с равномерными пульсациями АЧХ. К данной группе относятся функции remez (стандартный вариант метода Ремеза, реализованный еще в самых первых версиях пакета Signal Processing) и cremez (расширенный вариант, поддерживающий синтез фильтров с нелинейной ФЧХ и с комплексными коэффициентами). Кроме того, функция remezord позволяет по заданным параметрам АЧХ оценить требуемый порядок фильтра при синтезе методом Ремеза.

Рассмотрим как проводится расчет коэффициентов нерекурсивного фильтра с помощью функции fir1. Функция fir1 реализует вычисления по методу обратного преобразования Фурье с использованием окон:

b=fir1(n,Wn,’ftype’,window,’normalization’)

Здесь:

n – порядок фильтра – целое четное число (кол-во коэффициентов фильтра равно n+1);

Wn – относительная частота среза (по отношению к частоте Найквиста FN, равной половине частоты дискретизации Fs) – число в диапазоне (0÷1); является вектором из двух чисел, если фильтр полосовой или режекторный;

ftype – тип фильтра (если отсутствует или low– ФНЧ; high – ФВЧ; bandpass или отсутствует – полосовой; stop – режекторный;

window – вектор-столбец из n+1 элементов (по умолчанию применяется окно Хэмминга hamming(n+1))

normalization – нормировка АЧХ и ИПХ (по умолчанию значение scale – единичное значение АЧХ в центре полосы пропускания; noscale – нормировка не производится).

Примечание: при нормализации максимальное значение АЧХ в точности равно единице. При отсутствии нормализации из-за эффекта Гиббса максимальное значение АЧХ больше единицы. Этим и объясняется, что рассчитанные коэффициенты фильтра в отсутствие нормализации больше таковых при наличии нормализации.

С учетом того, что при применении весовых функций происходит расширение переходных зон примерно в два раза, значение ширины переходной зоны будет равным p = 2/n. Отсюда можно определить минимальную длину фильтра по заданному размеру переходной зоны:

n = 2/p.

Минимальная длина фильтра, исходя из требований переходной зоны равна 3.3/P_delta для окна Хэмминга, где Р_delta - нормированная ширина переходной зоныp=F/Fs, для Ханна 3.1/Р_delta. Наибольшее распространение при расчетах частотных НЦФ получила весовая функция Кайзера. Для него произведение длины n НЦФ на ширину переходной зоны является величиной постоянной. Это есть D-фактор:

D = N·p/ D = (А-7.95)/14.36 при А>21.

= 0.9222 при А<21.

А- затухание в полосе подавления,дБ

Ниже приведен пример проектирования КИХ-фильтра.

window=rectwin(7) % синтез прямоугольного окна из 7 отсчетов

a=fir1 (6,0.5,window) % расчет коэфф-в КИХ-фильтра с нормализацией

Результат:

b=[ -0.1148 0.0000 0.3443 0.5409 0.3443 0.0000 -0.1148]

Задавая в программе значение noscaleдля параметра нормализации имеем:

window=rectwin(7) % синтез прямоугольного окна из 7 отсчетов

b=fir1(6,0.5,window,’noscale’) % расчет коэффициентов КИХ-фильтра без норм-ции

Результат:

b=[ -0.1061 0.0000 0.3183 0.5000 0.3183 0.0000 -0.1061]

В приведенном выше примере прямоугольное окно генерировалось с помощью функции rectwin(n+1), где n – порядок нерекурсивного фильтра. Следует отметить, что прямоугольное окно можно сгенерировать также с помощью функции boxcar(n+1). Другие типы окон можно сгенерировать с помощью функций, перечисленных в приведенной ниже таблице:

Наименование окна

Функция

Боковой лепесток

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

rectwin(n+1)

-13 дБ = 0,224

Треугольное (Бартлетта)

bartlett(n+1)

-27 дБ = 0,045

Ханна (Хэннинга)

hann(n+1)

-32 дБ = 0,025

Хэмминга

hamming(n+1)

-43 дБ = 0,007

Блэкмена

blackman(n+1)

-58 дБ = 0,001

Кайзера

kaiser(n+1,beta)

beta=(4÷9)

-45 дБ = 0,007

-90 дБ = 0,0001

Синтезируем методом Ремеза нерекурсивный ФНЧ 32-го порядка с теми же частотами среза и дискретизации, как в предыдущем примере (частота среза 3 кГц, частота дискретизации 12 кГц). Начало полосы задерживания зададим равным 3,5 кГц. Синтаксис вызова функции следующий:

[b]=remez(n,f,a,)

Здесь n - порядок рассчитываемого фильтра (его импульсная характеристика будет содержать n +1 ненулевых отсчетов). Параметры f и а должны быть векторами одинаковой длины, они совместно определяют желаемую АЧХ синтезируемого фильтра. Вектор f содержит значения частот, нормированных к частоте Найквиста, а вектор а - соответствующие этим частотам значения АЧХ. Частоты в векторе f не повторяются и образу ют строго возрастающую последовательность. После синтеза построим графики импульсной характеристики, а также АЧХ полученного фильтра (ФЧХ фильтра линейна, поэтому выводить ее график не имеет смысла). АЧХ выведем в линейном масштабе по вертикали, чтобы наглядно продемонстрировать равномерность ее пульсаций. Пример программы ниже:

Fs = 12000;                                       % частота дискретизации F0 = 3000;                                        % частота среза F1 = 3500;                                        % начало полосы задерживания b = remez(32, [0 F0/Fs*2 F1/Fs*2 1], [1 1 0 0]);  % расчет фильтра impz(b)                                           % график импульсной характеристики [h, f] = freqz(b, 1, [], Fs);                     % комплексный коэффициент передачи figure plot(f, abs(h))                                   % график АЧХ grid

Для синтеза БИХ-фильтров используют аналоговые фильтры-прототипы. При этом необходимо преобразовать аналоговую функцию передачи, заданную в s-области, в дискретную функцию передачи, заданную в z-области. В пакете Signal Processing реализованы два метода такого преобразования: метод инвариантной импульсной характеристики и метод билинейного z-преобразования. Оба метода в результате дают рекурсивные дискретные фильтры. При использовании метода инвариантной импульсной характеристики происходит дискретизация импульсной характеристики аналогового прототипа. Частотная характеристика получающегося дискретного фильтра, соответственно, представляет собой периодически повторенную частотную характеристику аналогового прототипа. По этой причине данный метод непригоден для синтеза фильтров верхних частот и вообще фильтров, коэффициент передачи которых не стремится к нулю с ростом частоты.

При использовании метода билинейного z-преобразования происходит искажение характеристики аналогового прототипа только вдоль частотной оси. При этом частотный диапазон аналогового фильтра (от нуля до бесконечности) преобразуется к рабочему диапазону частот дискретного фильтра (от нуля до половины частоты дискретизации). Преобразование частотной оси описывается функцией арктангенса, поэтому частоты, значительно меньшие частоты дискретизации, преобразуются приблизительно линейно. Данный метод реализуется с помощью функции bilinear для произвольного аналогового прототипа. Кроме того, имеются готовые функции расчета фильтров нижних и верхних частот, полосовых и режекторных фильтров методом билинейного z-преобразования по аналоговым прототипам с АЧХ Баттерворта, Чебышева первого и второго рода, а также Кауэра (эллиптические фильтры). Это соответственно функции butter, cheby1, cheby2 и ellip. Все эти функции могут использоваться и для расчета аналоговых фильтров (см. лабораторную работу №4). Признаком дискретного варианта расчета является отсутствие строки 's' в списке входных параметров. Имеются также функции определения требуемого порядка этих фильтров по заданным параметрам АЧХ (граничным частотам полос пропускания и задерживания, а также допустимым пульсациям в этих полосах). Это соответственно функции buttord, cheb1ord, cheb2ord, ellipord. Так же, как и функции синтеза фильтров, данные функции позволяют определять требуемый порядок и для аналоговых фильтров. Признаком дискретного варианта расчета является отсутствие строки 's' в списке входных параметров.

В качестве примера синтезируем эллиптический ФНЧ четвертого порядка с такими же параметрами, как у аналогового фильтра в одном из предыдущих примерах (частота среза 3 кГц, пульсации АЧХ в полосе пропускания 1 дБ, и подавление сигнала в полосе задерживания 20 дБ). Частоту дискретизации примем равной 12 кГц. После синтеза построим графики АЧХ и ФЧХ полученного фильтра с помощью функции freqz.

Fs=12000;     % частота дискретизации F0 = 3000;    % частота среза [b, a] = ellip(4, 1, 20, F0/Fs*2);

 % расчет фильтра freqz(b, a, [], Fs);       % вывод графиков

Метод инвариантной импульсной характеристики реализован в пакете Signal Processing с помощью функции impinvar. В качестве примера синтезируем фильтр Чебышева 2-го порядка с частотой среза 10 кГц. Для сравнения покажем отличия между дискретной и аналоговой моделями. Видно, что частота дискретизации недостаточна.

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

  • yulewalk - синтез рекурсивного фильтра с произвольной кусочно-линейной АЧХ методом Юла-Уолкера.

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

ЗАДАНИЕ

Синтезировать полосовые КИХ и БИХ фильтры минимального порядка, с неравномерностью 1 дБ в полосе пропускания и затуханием 30 дБ в полосе задержания. Ширина полосы перехода 100Гц. Построить графики АЧХ, ФЧХ и ИХ синтезированных фильтров.

Вар

Началь-ный порядок фильтра

Окна (КИХ)

Прототип (БИХ)

Частота среза,

Гц

Начало полосы задерживанияГц

Частота дискретизации, Гц

1

4

Ханна

Треугольное

Ханна

Хэмминга

Блэкмена

Кайзера

Блэкмена

Хэмминга

Баттерворт

100

300

11025

2

6

Чебышев 1

200

400

8000

3

8

Чебышев 2

300

500

11025

4

6

Эллиптический

300

600

8000

5

4

Баттерворт

300

700

11025

6

6

Чебышев 1

200

600

8000

7

8

Чебышев 2

200

500

11025

8

6

Эллиптический

100

400

8000

Примечание. В колонке «Начальный порядок фильтра» указано малое (начальное) значение порядка синтезируемого фильтра – убедитесь, что при таком значении порядка фильтра не удается синтезировать полосовой фильтр с требуемыми характеристиками. Чтобы получить нужный фильтр, необходимо поставить несколько опытов, последовательно увеличивая порядок фильтра и затем рассчитать значение. Начиная с некоторого значения n = n0, где n – порядок фильтра, характеристики синтезируемого фильтра окажутся лучше требуемых. Значение n0 и есть искомый минимальный порядок фильтра.

Соседние файлы в папке цос