MatLab для DSP. Расчет цифровых фильтров с учетом эффектов к

MatLab для DSP. Расчет цифровых фильтров с учетом эффектов квантования

В. Анохин, А. Ланнэ

MatLab для DSP. Расчет цифровых фильтров с учетом эффектов квантования

Разработчики цифровых фильтров, использующие в своей работе пакет MATLAB, несомненно, смогли оценить многочисленные достоинства интерактивной графической программы (GUI) sptool [1]. Тем не менее, результаты, получаемые с помощью sptool, не всегда достаточны для специалистов, занимающихся проектированием и реализацией цифровых фильтров на базе специализированных, в частности, сигнальных, процессоров (DSP).

Характеристики фильтра, рассчитанно го на PC и реализованного на DSP, могут существенно отличаться. Это связано с тем, что разные цифровые системы (в том числе и персональный компьютер, на котором выполнялся расч╦т фильтра) используют различные типы арифметики (с плавающей или фиксированной точкой), имеют различные форматы и, как следствие, различный динамический диапазон и различную точность представления чисел. В итоге параметры фильтров, отсч╦ты входных и выходных сигналов представляются лишь значениями из конечного набора чисел, то есть являются квантованными по уровню. Эффекты квантования отражаются также и на результатах математических операций, выполняемых сумматорами и умножителями. Из сказанного следует, что процесс проектирования должен включать процедуры коррекции полученных результатов с уч╦том эффектов квантования применительно к тем процессорам, на которых предполагается реализовывать синтезируемые фильтры. Эти процессоры, а также вычислительные системы, построенные на их основе, будем называть целевыми (в англоязычной литературе - Target Processors, Target Computers).

В последней версии MATLAB 6 (Release 12) появилась новая библиотека (toolbox) Filter Design, предназначенная для решения такого рода задач. Функции этой библиотеки дают возможность работать с тремя типами объектов - квантователями сигналов, квантованными фильтрами и квантованным преобразованием Фурье, используя разные форматы представления чисел. На-ряду с функциями, позволяющими разрабатывать собственные программы, библиотека имеет интерактивную графическую программу (GUI) fdatool, с помощью которой можно рассчитывать цифровые фильтры с уч╦том эффектов квантования, а также выбирать стандартные и определяемые пользователем форматы представления чисел. Помимо этого, fdatool предоставляет многочисленные варианты реализационных схем, что да╦т возможность оптимизировать решения по совокупности таких параметров, как динамический диапазон, шумы арифметики, объ╦м вычислений на отсч╦т, предельные циклы. И хотя методы такой оптимизации в данном GUI не рассмотрены, представленные многочисленные структуры фильтра позволяют содержательно обсуждать подобные задачи.

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

Описание главного окна программы

Главное окно программы показано на рис. 1, оно появляется на экране после загрузки программы, для чего надо набрать е╦ имя:

>> fdatool.

Рисунок 1. Главное окно программы fdatool

Как видно из рисунка, главное окно включает несколько областей, или разделов для ввода и вывода необходимой информации. В левом верхнем углу находится раздел Current Filter Information (информация о фильтре), где отображается информация о фильтре, с которым в текущий момент выполняется работа, а именно:

форма реализации; источник (получен ли фильтр с помощью fdatool или импортирован из другого приложения); устойчивость; количество звеньев.

В дополнение к перечисленному, в этом разделе находится кнопка Convert Structure (преобразовать структуру), с помощью которой можно выбирать форму (схему) реализации фильтра.

Правее раздела Current Filter Infor-mation находится область, предназначенная для графического и численного отображений следующих характеристик и параметров фильтров:

Filter Specifications (спецификация); Magnitude Response (амплитудно-частотная характеристика, или АЧХ); Phase Response (фазо-частотная характеристика, или ФЧХ); Magnitude and Phase Response (АЧХ и ФЧХ); Group Delay (групповое время задержки); Impulse Response (импульсная характеристика); Step Response (переходная характеристика); Pole/Zero Plot (полюсы и нули); Filter Coefficients (коэффициенты фильтра).

Сразу после загрузки программы в этой области, как показано на рис. 1, отображается окно спецификации фильтра. Для отображения того или иного окна нужно нажать на одну из кнопок, расположенных вверху главного окна под строкой меню. Эти кнопки, а также их назначения показаны на рис. 2 в виде увеличенного фрагмента главного окна. Кроме отмеченных кнопок, те же действия можно выполнить, выбирая соответствующие пункты меню Analysis.

Рисунок 2. Управляющие кнопки для отображения характеристик и параметров фильтров

Нижняя половина главного окна содержит две страницы: Design Filter (проектирование фильтра) и Set Quantization Parameters (установка параметров дискретизации), прич╦м сразу после загрузки программы активна страница Design Filter (рис. 1), заполнение которой позволяет рассчитывать фильтры без уч╦та эффектов квантования, то есть с машинной точностью. В левой части этой страницы располагаются разделы Filter Type (выбор типа фильтра) и Design Method (метод проектирования). Выбрав соответствующую строку раздела Filter Type, пользователь тем самым выбирает фильтр, который собирается проектировать. Выбор включает следующие типы фильтров:

Lowpass (нижних частот); Highpass (верхних частот); Bandpass (полоснопропускающий); Bandstop (полоснозаграждающий);

а также следующие типы специализированных цифровых цепей:

Differentiator (дифференциатор); Hilbert Transformer (преобразователь Гильберта); Multiband (многополосный фильтр); Arbitrary Magnitude (фильтр с произвольной АЧХ, форма которой определяется пользователем); Arbitrary Group Delay (фильтр с произвольным групповым временем задержки).

Раздел Design Method позволяет сделать выбор между фильтрами с бесконечными и конечными импульсными характеристиками (IIR - Infinite Impulse Response и FIR - Finite Impulse Response, соответственно). В случае выбора IIR-фильтров, необходимо конкретизировать вид проектируемого фильтра: Баттерворта, Чебышева 1-го рода, Чебышева 2-го рода и эллиптический (рис. 3а). Если же выбраны FIR-фильтры, выбор включает расч╦т равноволновых фильтров, а также расч╦т методом наименьших квадратов и оконным методом (рис. 3б). Если проектирование выполняется оконным методом, активизируется область Window Specifications (спецификация окна), расположенная рядом с областью Design Method, в которой имеется раскрывающееся меню Window с набором спектральных окон.

Рисунок 3. Выбор метода расч╦та при проектировании фильтров с бесконечными (а) и конечными (б) импульсными характеристиками

Правую часть страницы Filter Design занимают разделы Frequency Speci-fications и Magnitude Specifications (частотные и амплитудные спецификации, соответственно). Первый из них содержит редактируемые окна для ввода значений частоты дискретизации Fs и граничных частот полос пропускания Fpass и задерживания Fstop, а также единиц измерения АЧХ - Units, прич╦м количество граничных частот зависит от типа фильтра, задаваемого в разделе Filter Type. Второй раздел - Magnitude Specifications - позволяет задать ограничения амплитудной характеристики проектируемого фильтра для областей пропускания (Apass или Wpass) и задерживания (Astop или Wstop). Оба обсуждаемых раздела имеют раскрывающиеся меню Units для выбора единиц измерения частоты и амплитуды. На странице Filter Design имеется ещ╦ одна область, а именно Filter Order (порядок фильтра), в которой можно указать явно порядок проектируемого фильтра, либо потребовать, чтобы программа автоматически выбрала наименьший порядок, в соответствии с введ╦нной спецификацией.

Теперь, когда известны назначения разделов страницы Design Filter, можно было бы приступить к описанию второй страницы - Set Quantization Parameters, однако анализировать эффекты квантования удобнее и нагляднее, если уже имеется спроектированный цифровой фильтр, коэффициенты которого рассчитаны с машинной точностью. Придерживаясь терминологии, используемой в справочной системе MATLAB, цифровой фильтр, коэффициенты которого рассчитаны с машинной точностью, будем называть цифровым фильтром-прототипом (в оригинале - Referenced Filter).

Проектирование цифрового фильтра: постановка задачи и квантование параметров

Рисунок 4. Страница Design Filter, содержащая данные табл. 1

Таблица 1

Частота дискретизации 48 кГц Полоса задерживания 1 от 0 до 7,2 кГц Полоса пропускания от 8 до 12 кГц Полоса задерживания 2 от 12,8 до 24 кГц Минимально допустимое ослабление в полосе задерживания 1 80 дБ Максимально допустимое ослабление в полосе пропускания 1 дБ Минимально допустимое подавление в полосе задерживания 2 80 дБ Порядок фильтра минимальный для заданных требований

Для иллюстрации и обсуждения эффектов квантования решим следующую задачу: спроектировать цифровой эллиптический полосовой фильтр, требования к которому заданы в табл. 1. Для этого нам необходимо выделить и заполнить соответствующие позиции на странице Filter Design главного окна fdatool, как показано на рис. 4, после чего нажать на клавишу Design Filter, расположенную внизу окна. После завершения расч╦та в верхней части окна будут представлены результаты (рис. 5). Как видно из рисунка, в области отображения характеристик и параметров выводится АЧХ полученного фильтра, однако пользователь может, по мере необходимости, для вывода переключать е╦ содержимое, например, импульсной характеристики, полюсов и нулей и так далее.

Рисунок 5. Амплитудно-частотная характеристика фильтра-прототипа

До настоящего момента все операции над данными выполнялись с машинной точностью, когда для представления чисел использовался формат double (в соответствии с этим форматом для записи и хранения числа отводится 8 байт). Теперь проанализируем, что произойд╦т при изменении формата представления чисел. Такая потребность возникает, когда необходимо выполнить эмуляцию работы построенного фильтра на базе целевого процессора, использующего отличные от PC форматы данных. В главном окне, ниже раздела Current Filter Information, находится раздел Quanti-zation, содержащий единственное поле Turn Quantization On. Для запуска процедуры расч╦та установим в этом поле флажок, запустив тем самым процедуру расч╦та квантованного фильтра с параметрами квантования, заданными по умолчанию. (Также по умолчанию расч╦т выполняется для прямой реализации фильтра.)

По окончании процедуры расч╦та, АЧХ нового (квантованного) фильтра наложится на АЧХ фильтра-прототипа, рассчитанного ранее. Область отображения характеристик будет выглядеть так, как показано на рис. 6, где АЧХ фильтра-прототипа обозначена как Reference, а квантованного - как Quantized. Из графиков видно, что АЧХ фильтра, с уч╦том эффектов квантования (Quantized), существенно отличается от соответствующей характеристики фильтра-прототипа (Reference). Сохраним полученные результаты на диске, для чего откроем меню File и выберем раздел Save Session As┘

Рисунок 6. Амплитудно-частотные характеристики фильтра-прототипа и квантованного фильтра

Чтобы разобраться в причинах, приведших к таким сильным изменениям, перейд╦м на страницу Set Quantization Parameters, показанную на рис. 7, и проанализируем е╦ содержимое. Как следует из рисунка, имеется пять видов объектов, которые подвергаются квантованию:

Coefficient (коэффициенты фильтра); Input (входные сигналы); Output (выходные сигналы); Multiplicand (множимые); Product (произведения); Sum (суммы).

Рисунок 7. Общий вид страницы Set Quantization Parameters

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

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

Пример квантованного филь-тра 2-го порядка показан на рис. 8, где введены следующие обозначения:

q1 - квантователь коэффициентов; q2 - квантователь входного сигнала; q3 - квантователь выходного сигнала; q4 - квантователь множимого; q5 - квантователь произведения; q6 - квантователь суммы.

Рисунок 8. Структурные схемы фильтра-прототипа и кантованного фильтра 2-го порядка

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

Свойства квантованного фильтра зависят также от структуры, или формы реализации фильтра. В левом ниж-нем углу страницы Set Quantization Parameters имеется клавиша Show filter structures┘, нажав на которую пользователь получит возможность просмотреть различные формы реализации фильтров. Подчеркн╦м, что появляющие-ся схемы никак не связаны с тем фильтром, который проектируется в момент просмотра. Их можно интерпретировать как своего рода справочник или альбом, помогающий пользователю сделать свой выбор. Для выбора структуры фильтра необходимо в главном окне нажать кнопку Convert Structure, в появившемся окне выделить желаемую структуру и нажать OK.

Говоря о квантователях, прежде всего подчеркн╦м тот очевидный факт, что реализация любого цифрового фильтра основывается на использовании арифметики с фиксированной или плавающей точкой (Fixed-Point или Floating-Point Arithmetic, соответственно). В связи с этим, остановимся кратко на форматах представления чисел и особенностях выполнения арифметических операций в программе fdatool.

Арифметика с фиксированной точкой: форматы данных и реализация операций

Выбор работы каждого из квантователей в режиме с фиксированной или плавающей точкой зада╦тся значениями параметров колонки Mode, расположенной на странице Set Quan-tization Parameters. Для реализации арифметики с фиксированной точкой необходимо выбрать значение fixed.

Двоичные числа с фиксированной точкой определяются в битах длиной слова w и длиной дробной части числа f. При этом длина дробной части может быть задана в диапазоне от 0 до w - 1 бит. Общее представление числа в формате с фиксированной точкой показано на рис. 9. Пользователь может задавать длину слова до 64-х бит включительно, однако побитовое соответствие результатов моделирования с помощью fdatool и реальной работы целевого компьютера обеспечивается, если длина слова определена в пределах 53 бит. Если же выбранная длина слова находится в диапазоне 54 w 64, то происходит потеря значимости, то есть в младшие биты записываются нули. В пакете MATLAB и, в частности, в функциях библиотеки Filter Design, формат для чисел с фиксированной точкой зада╦тся в виде [w, f] в колонке format.

Рисунок 9. Общее представление числа в формате с фиксированной точкой

Числа с фиксированной точкой могут быть беззнаковыми или со знаком. В первом случае старший бит, как и остальные, используется для представления величины числа, тогда как во втором - для его знака (0 соответствует знаку "плюс", 1 - знаку "минус"). Динамический диапазон для беззнаковых чисел равен [0, 2w√f√2-f ], а для чисел со знаком - [√2w√f-1, 2w√f-1√2-f]. В обоих случаях точность, то есть разность двух ближайших чисел в данном формате, равна = 2-f.

В связи с тем, что результатом квантования является замена квантуемой величины числом из конечного, предопредел╦нного набора чисел, называемых уровнями квантования, необходимо ввести информацию о том, каким образом эту замену выполнять (значения и число уровней квантования определяются используемым форматом). Для этого в программе fdatool имеется поле Round mode, где для каждого квантователя можно выбрать способ округления. Пользователь имеет возможность выбрать один из следующих режимов:

ceil - результат равен значению ближайшего уровня квантования в сторону плюс бесконечности; fix - результат равен значению ближайшего уровня квантования в сторону нуля; floor - результат равен значению ближайшего уровня квантования в сторону минус бесконечности; round - результат равен значению ближайшего уровня квантования; если квантуемая отрицательная величина лежит ровно посередине между уровнями квантования, результатом является значение ближайшего уровня в сторону минус бесконечности;

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

convergent - способ округления такой же, как и round, однако, если квантуемая величина лежит ровно посередине между уровнями квантования, то округление по правилам round выполняется лишь в том случае, когда в младший бит после округления записывается единица.

Когда квантованию подвергается величина, значение которой находится за пределами динамического диапазона квантователя, возникает явление переполнения. Способ обработки таких величин зада╦тся в поле Overflow Mode (режим переполнения) для каждого квантователя. Пользователь может выбрать режим saturate или wrap.

Режим saturate означает разрешение работы с насыщением: квантуемая величина, лежащая вне динамического диапазона, полагается равной ближайшему предельно допустимому числу. В случае выбора режима wrap, старшие биты квантуемой величины, лежащей вне динамического диапазона, будут отброшены, и результат квантования будет представлен младшими w-битами, при этом для чисел со знаком старший бит b>w√1 nlm(Hq1,[],50),

по которой будет выполнено моделирование, включающее 50 испытаний. В результате появится окно с графиками АЧХ и ФЧХ, показанное на рис. 17, из которых видно, что построенная нами нелинейная цифровая система, каковым является квантованный фильтр, не удовлетворяет заданным требованиям, изложенным в табл. 1 и показанным на рис. 4. Отметим, что функцию nlm можно вызвать, указав лишь имя фильтра:

>> nlm(Hq1).

Рисунок 17. Результаты моделирования с помощью функции nlm

В этом случае число испытаний L будет выбрано по умолчанию (L = 10), и получаемые графики будут менее сглаженными.

Очевидно, что для получения желаемого результата нам надо изменить параметры квантования, задаваемые на странице Set Quantization Parameters. Попробуем для всех квантователей, кроме квантователей коэффициентов, переустановить способ округления с floor в convergent и рассчитать новый квантованный фильтр, нажав кнопку Apply. Если затем импортировать полученный фильтр в Workspace и повторить вызов функции nlm к этому фильтру, получим частотную характеристику, показанную на рис. 18. Сравнивая графики, показанные на рис. 17 и 18, видно, что АЧХ последнего фильтра является лучшим приближением к требуемому результату, однако она тоже не удовлетворяет заданным требованиям.

Рисунок 18. Результаты моделирования с помощью функции nlm после замены способа округления с floor на convergent

Обратимся снова к странице Set Quantization Parameters и установим форматы квантователей в соответствии с рис. 19. Повторив процедуру расч╦та, импорта и испытания фильтра с помощью nlm, получим результат, показанный на рис. 20. Как видно из рисунка, АЧХ фильтра-прототипа и квантованного фильтра практически совпадают, то есть полученный фильтр удовлетворяет требованиям, изложенным в табл. 1.

Рисунок 19. Изменение форматов квантователей

Рисунок 20. Результаты моделирования с помощью функции nlm после замены форматов квантователей

Заключение

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

Вместе с тем, многие вопросы синтеза цифровых фильтров с оптимальными либо близкими к таковым характеристиками и учитывающие нелинейные эффекты квантования остались за пределами этой публикации, равно как и за пределами системы MATLAB. Наиболее полную информацию о работе с программой читатель может найти в справочной системе MATLAB [3]. Для этого надо в окне справки MATLAB (окно help) открыть раздел Filter Design Toolbox Using Filter Design Toolbox Quantization Tool Overview.

Литература

Андреев И.И., Ланнэ А.А. MATLAB для DSP: SPTool - инструмент для расч╦та цифровых фильтров и спектрального анализа сигналов // Цифровая обработка сигналов. 2000. ╧ 2. С. 6√13. Рабинер Л., Гоулд Б. Теория и применение цифровой обработки сигналов. М.: МИР, 1978. 848 с. Справочная система MATLAB 6. Filter Design Toolbox.







Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.