Научная статья на тему 'Моделирование цифровой обработки сигналов в Matlab. Часть 4. Моделирование структур цифровых фильтров с фиксированной точкой программными средствами Matlab: анализ характеристик КИХ-фильтров'

Моделирование цифровой обработки сигналов в Matlab. Часть 4. Моделирование структур цифровых фильтров с фиксированной точкой программными средствами Matlab: анализ характеристик КИХ-фильтров Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
816
184
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Солонина Алла

Основные этапы проектирования цифровых фильтров были рассмотрены в [6], первый этап проектирования — синтез оптимальных КИХ, и БИХ, фильтров программными средствами MATLAB1 — в [6, 7], второй этап—выбор структуры цифровых фильтров и ее описание — в [8]. До сих пор предполагалось, что в структуре цифровых фильтров все данные (входные, промежуточные и выходные) представлены числами бесконечной разрядности, которым в MATLAB условно сопоставлены числа максимальной разрядности типа double. В следующей серии статей будет рассмотрен третий этап проектирования цифровых фильтров — моделирование программными средствами MATLAB структуры цифровых фильтров с учетом эффектов квантования, обусловленных представлением данных с фиксированной точкой (ФТ), что необходимо при реализации цифровых фильтров, например, на базе цифровых процессоров обработки сигналов (ЦПОС) с ФТ.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Солонина Алла

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Моделирование цифровой обработки сигналов в Matlab. Часть 4. Моделирование структур цифровых фильтров с фиксированной точкой программными средствами Matlab: анализ характеристик КИХ-фильтров»

Алла СОЛОНИНА

Квантование

в структурах цифровых фильтров с фиксированной точкой

Квантованию — представлению с помощью конечного числа двоичных разрядов (битов) — могут подвергаться данные:

• бесконечной разрядности;

• конечной разрядности при усечении (округлении) до меньшего числа разрядов.

Как известно [2, 5], нелинейная процедура квантования сопровождается внесением в структуру ЦФ ошибок, источниками которых являются:

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

• Умножители, отображающие в структуре ЦФ операцию умножения.

В структурах ЦФ на выходах сумматоров накапливаются суммы локальных произведений, для чего в архитектуре современных ЦПОС предусмотрена операция умножения с накоп-

1 Версии MATLAB R2008a (MATLAB 7.6 Release 2008a).

Моделирование цифровой обработки сигналов в MATLAB.

Часть 4. Моделирование структур цифровых фильтров

I W W

с фиксированной точкой программными средствами MATLAB: анализ характеристик КИХ-фильтров

Основные этапы проектирования цифровых фильтров (ЦФ) были рассмотрены в [6], первый этап проектирования — синтез оптимальных КИХ- и БИХ-фильтров программными средствами MATLAB1 — в [6, 7], второй этап — выбор структуры ЦФ и ее описание — в [8]. До сих пор предполагалось, что в структуре ЦФ все данные (входные, промежуточные и выходные) представлены числами бесконечной разрядности, которым в MATLAB условно сопоставлены числа максимальной разрядности типа double. В следующей серии статей будет рассмотрен третий этап проектирования ЦФ — моделирование программными средствами MATLAB структуры ЦФ с учетом эффектов квантования, обусловленных представлением данных с фиксированной точкой (ФТ), что необходимо при реализации ЦФ, например, на базе цифровых процессоров обработки сигналов (ЦПОС) с ФТ.

лением — MAC (Multiplier/Accumulator), выполняемая во внутренних регистрах в формате расширенного слова. При сохранении конечного результата в формате слова в каждый момент нормированного времени n вносится ошибка квантования, называемая собственным шумом.

• Квантование коэффициентов передаточной функции ЦФ.

На этапе синтеза коэффициенты Ъ;, ак передаточной функции ЦФ (1) [8] представляются числами типа double (условно бесконечной разрядности). Однако в структуре ЦФ с ФТ они заменяются квантованными коэф-

фициентами Ц, ак, что вносит не зависящую от времени ошибку квантования коэффициентов, влияющую на характеристики ЦФ.

• Сумматоры, отображающие в структуре ЦФ операцию сложения.

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

Модели ЦФ — линейная и нелинейная, соответственно, с неквантованными и квантованными данными — изображены на рис. 1, где приняты условные обозначения:

• х (п), у (п) — дискретные, а Х(п), у(п) — цифровые (квантованные) входной и выходной сигналы;

• Й(£) — передаточная функция с неквантованными, а Й(£) — с квантованными коэффициентами.

Нелинейную модель ЦФ с квантованными данными (рис. 1б) коротко называют ЦФ с ФТ.

Теоретический анализ шумов квантования в ЦФ с ФТ чрезвычайно сложен, вследствие явных и неявных взаимосвязей шумов с квантуемыми сигналами и между собой. Нелинейная модель обычно исследуется посредством

Рис. 1. Модели ЦФ:

а) линейная с неквантованными данными;

б) нелинейная с квантованными данными

компьютерного моделирования. Аналитические же оценки шумов (детерминированные и вероятностные) получены лишь при определенных допущениях, позволяющих существенно упростить анализ случайного процесса в ЦФ с ФТ [1, 2, 5].

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

В MATLAB весьма широко представлены средства моделирования структур ЦФ с ФТ в пакетах расширения Filter Design Toolbox и Fixed Point Toolbox. В серии статей, начиная с настоящей, рассматривается методика моделирования структур ЦФ с ФТ, иллюстрируемая конкретными примерами. Данная методика согласуется с предлагаемой в MATLAB; с ней можно познакомиться, обратившись к справочной системе в формате HTML, используя поиск по ключевой фразе “Quantized Filters” (квантованные фильтры).

Моделирование структуры КИХ-фильтра с ФТ начитается с описания его исходной структуры (с неквантованными данными) в виде объекта dfilt, что можно сделать двумя способами, с которыми мы познакомились ранее [8]:

• синтезировать КИХ-фильтр по заданным требованиям к АЧХ, выбрать требуемую структуру фильтра и описать ее в виде объекта dfilt;

• синтезировать КИХ-фильтр непосредственно в виде объекта dfilt по требованиям к АЧХ, описанным в виде объекта fdesign; в этом случае структура КИХ-фильтра выбирается автоматически, и для ее изменения придется воспользоваться функцией convert.

Характерной особенностью исходных структур КИХ-фильтров (объектов dfilt) является значение свойства Arithmetic: 'double'. Это значит, что в исходной структуре КИХ-фильтра все данные — коэффициенты передаточной функции, воздействие, результаты выполнения арифметических операций при вычислении реакции и сама реакция — представлены числами максимальной разрядности типа double (условно бесконечной).

В дальнейшем для краткости используем терминологию: исходным КИХ-фильтром будем называть исходную структуру КИХ-фильтра, описанную в виде объекта dfilt со значением свойства Arithmetic: 'double'.

Для моделирования структур ЦФ с ФТ в пакете расширения Filter Design Toolbox предусмотрена возможность модификации объекта dfilt при значении свойства Arithmetic: 'fixed'.

Соответствующие структуры ЦФ с ФТ в MATLAB называются Quantized Filters (квантованными фильтрами) или Fixed-Point Filters (фильтрами с ФТ); группа фильтров Quantized Filters включает в себя Fixed-Point Filters, а также Floating-Point Filters (фильтры с плавающей точкой).

В дальнейшем используем принятую в MATLAB терминологию: КИХ-фильтром с ФТ (Fixed-Point FIR Filter) будем называть структуру КИХ-фильтра с ФТ, описанную в виде объекта dfilt со значением свойства Arithmetic: 'fixed'.

Исходный КИХ-фильтр

В качестве исходного КИХ-фильтра выберем объект Hf3 — оптимальный КИХ-фильтр (Equiripple filter), синтезированный непосредственно в виде объекта dfilt с автоматически выбранной прямой структурой Direct-Form FIR, впоследствии с помощью функции convert преобразованной в прямую приведенную структуру Direct-Form Symmetric FIR (пример 9 в [8]).

Пример 1

Вывести свойства исходного КИХ-фильт-ра — объекта Hf3:

>> load Hf3 >> Hf3 Hf3 =

FilterStructure: ’Direct-Form Symmetric FIR’

Arithmetic: 'double'

Numerator: [1x41 double]

PersistentMemory: false

Выведенные свойства объекта Hf3 — объекта dfilt с Arithmetic: 'double' — комментировались в [8].

КИХ-фильтр с ФТ и его свойства

КИХ-фильтр с ФТ формируется на основе исходного КИХ-фильтра путем присваивания свойству Arithmetic значения 'fixed'.

Пример 2

Сформировать КИХ-фильтр с ФТ в виде объекта Hq3 на основе исходного КИХ-филь-тра— объекта Hf3 (пример 1) и сохранить объект Hq3 на диске:

>> load Hf3 >> Hq3=copy(Hf3);

>> set(Hq3,'Arithmetic','fixed')

>> save Hq3

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

get(<имя объекта>)

Пример 3

Для КИХ-фильтра с ФТ — объекта Hq3 (пример 2) — вывести список основных свойств по его имени (табл. 1, левый столбец) и полный список свойств с помощью функции get (табл. 1, правый столбец).

Таблица 1. Список основных свойств КИХ-фильтра с ФТ

Основные свойства

>> Hq3

Hq3 =

FilterStructure: 'Direct-Form Symmetric FIR' Arithmetic: 'fixed' Numerator: [1x41 double] PersistentMemory: false CoeffWordLength: 16 CoeffAutoScale: true Signed: true InputWordLength: 16 InputFracLength: 15 Filterlnternals: 'FullPrecision'

Полный список свойств

>> get(Hq3)

PersistentMemory: 0 NumSamplesProcessed: 0 FilterStructure: 'Direct-Form Symmetric FIR' States: [40x1 embedded.fi] Numerator: [1x41 double] Arithmetic: 'fixed' CoeffWordLength: 16 CoeffAutoScale: 1 Signed: 1 RoundMode: 'convergent' OverflowMode: 'wrap' InputWordLength: 16 InputFracLength: 15 NumFracLength: 17 FilterInternals: 'FullPrecision' OutputWordLength: 34 OutputFracLength: 32 ProductWordLength: 32 ProductFracLength: 32 AccumWordLength: 34 AccumFracLength: 32 TapSumWordLength: 17 TapSumFracLength: 15

Свойства, выделенные полужирным шрифтом (табл. 1, правый столбец), будут использованы далее.

Назначение свойств ЦФ с ФТ дается в [5]. (Отметим, что в версии MATLAB 7.0, описываемой в [5], имеются расхождения в свойствах по сравнению с версией MATLAB 7.6, используемой в данной статье.)

Подробную информацию о свойствах объектов dfilt с различными структурами можно получить с помощью справочной системы MATLAB в формате HTML, используя поиск по ключевой фразе “Quantized Filters” и обращаясь к разделам, описывающим объекты dfilt с различными структурами.

Необходимые свойства, используемые далее, будут поясняться по мере изложения материала.

Дополнительные функции MATLAB для объектов с ФТ

В [8] рассмотрены основные функции MATLAB из пакетов Signal Processing Toolbox и Filter Design Toolbox для объектов dfilt (см. табл. 2 в [8]). Большинство из них можно использовать и для объектов dfilt с ФТ. Помимо этого в пакет Filter Design Toolbox включен набор дополнительных функций для объектов dfilt с ФТ (табл. 2). Полный список функций может быть выведен с помощью справочной системы MATLAB в формате HTML, при помощи поиска по ключевой фразе “Quantized Filters”, при обращении к разделу Function Reference (справка по функциям) и гипертекстовой ссылке Quantized Filters Analysis Functions (функции анализа квантованных фильтров).

Квантование коэффициентов в КИХ-фильтрах с ФТ

Процедуру квантования коэффициентов в КИХ-фильтрах с ФТ поясним на примерах.

Пример 4

Вывести неквантованные коэффициенты передаточной функции исходного КИХ-филь-

Таблица 2. Дополнительные функции MATLAB для объектов dfilt с ФТ

Функция Назначение

denormalize(Hq) Возвращает исходный объект Hq с ненормированными коэффициентами (отменяет действие функции normalize). Не вносит изменений, если коэффициенты не нормировались

Hpsd=noisepsd(Hq,L) Возвращает массив записей Hpsd, поле Hpsd.data которого хранит значения PSD* выходного шума объекта Hq (ЦФ с ФТ). L — количество реализаций, по которым усредняется PSD (по умолчанию L = 10). Средняя мощность шума вычисляется с помощью функции avgpower(Hpsd). График PSD выводится с помощью функции plot(Hpsd)

norm(Hq,'norm') Для каскадных структур БИХ-фильтров с ФТ выполняет масштабирование, предотвращающее или минимизирующее ошибки переполнения

normalize(Hq) K=normalize(Hq) Нормирует коэффициенты числителя передаточной функции объекта Hq к максимальному по модулю значению и возвращает нормирующий множитель K. Для каскадных структур БИХ-фильтров с ФТ нормируются коэффициенты числителей передаточных функций каждого звена отдельно, и K представляет собой вектор-столбец

* PSD (Power Spectral Density) — спектральная плотность мощности.

тра (объекта Hf3 в примере 1), присваивая вектору коэффициентов (свойство Numerator) имя bf3:

>> load Hf3

>> bf3=get(Hf3,'Numerator')

bf3 =

Columns 1 through 7

-0.0008 0.0067 0.0017 -О.ООО2 О.ООЗ7 -О.ОО44 -О.О194

Columns 8 through 14

-0.0022 0.0314 0.0180 -О.О2О7 -О.О141 -О.ОО1З -О.ОЗ42

Columns 15 through 21

-0.0111 0.1021 0.0889 -О.1221 -О.194З О.ОЗЗ4 О.2441

Columns 22 through 28

0.0554 -0.1943 -0.1221 О.ОВВ9 О.1О21 -О.О111 -О.ОЗ42

Columns 29 through 35

-0.0015 -0.0141 -0.0207 О.О1ВО О.ОЗ14 -О.ОО22 -О.О194

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Columns 36 through 41

-0.0044 0.0037 -0.0002 О.ОО17 О.ОО67 -О.ОООВ

Значения коэффициентов bf3 по модулю не превосходят единицы, поэтому их нормирование не требуется, и для дальнейших исследований можно воспользоваться ранее созданным КИХ-фильтром с ФТ — объектом Hq3 (пример 2).

Пример 5

Создать объект Hq3c1 — копию объекта Hq3 (пример 2). Установить в нем требуемые значения свойств, связанных с квантованием коэффициентов, и сохранить объект Hq3c1 на диске.

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

CoeffWordLength:16

CoeffAutoScale:1

Signed:1

NumFracLength:17

Поясним коротко их смысл:

• CoeffWordLength — отображает формат представления коэффициентов передаточной функции КИХ-фильтра (см. формулу (5) в [8]) — слово.

• NumFracLength — длина дробной части в слове CoeffWordLength.

• CoeffAutoScale — флаг, при сбросе которого (значении 0) можно произвольно задавать длину дробной части NumFracLength.

• Signed — флаг, управляющий знаковыми (при установке) или беззнаковыми (при

сбросе) коэффициентами передаточной

функции КИХ-фильтра.

В объекте Hq3c1 оставим неизменными значения свойств CoeffWordLength: 16 и Signed: 1, но изменим длину дробной части NumFrac-Length, для чего предварительно установим CoeffAutoScale: 0. Сохраним объект Hq3c1 с новыми свойствами на диске:

>> load Hq3 >> Hq3c1=copy(Hq3);

>> set(Hq3c1,'CoeffAutoScale',0)

>> set(Hq3c1,'NumFracLength',15)

>> save Hq3c1

Значения квантованных коэффициентов bq3 объекта Hq3c1 можно вывести с помощью функции:

>> bq3c1=get(Hq3c1,'Numerator')

Для того чтобы увидеть отличие квантованных коэффициентов от неквантованных, выведенных в примере 4, следует установить формат format long.

Пример 6

Создать объект Hq3c2 — копию объекта Hq3 (пример 2). Установить в нем требуемые значения свойств, связанных с квантованием коэффициентов, и сохранить объект Hq3c2 на диске:

>> load Hq3 >> Hq3c2=copy(Hq3);

>> set(Hq3c2,'CoeffWordLength',8)

>> set(Hq3c2,'CoeffAutoScale',0)

>> set(Hq3c2,'NumFracLength',7)

>> save Hq3c2

Выведем значения квантованных коэффициентов bq3c2 объекта Hq3c2:

>> bq3c2=get(Hq3c2,'Numerator')

bq3c2 =

Columns 1 through 7

0 0.0078 0 О О -О.ОО7В -О.О1З6

Columns 8 through 14

0 0.0313 0.0156 -О.О2З4 -О.О156 О -О.ОЗ1З

Columns 15 through 21

-0.0078 0.1016 0.0859 -О.12ЗО -О.195З О.ОЗ47 О.2422

Columns 22 through 28

0.0547 -0.1953 -0.1250 О.ОВЗ9 О.1О16 - -О.ОО7В -О.ОЗ1З

Columns 29 through 35

0 -0.0156 -0.0234 О.О156 О.ОЗ1З О -О.О1З6

Columns 36 through 41

-0.0078 0 0 О О.ОО7В О

Сравнивая полученные квантованные коэффициенты с неквантованными (пример 4), видим их отличия и без установки format long.

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

Для анализа характеристик КИХ- и БИХ-фильтров с ФТ можно воспользоваться функцией fvtool следующего формата:

h=fvtool(Hd1,Hd2,...)

Здесь h — объект, представляющий собой окно Figure...: Filter Visualization Tool программы GUI FVTool с автоматически выведенными характеристиками ослабления АЧХ (дБ) (см. формулу (5) в [6]) объектов Hd1, Hd2 и т. д.

Как обычно, свойства объекта h выводятся с помощью функции:

get(h)

а устанавливаются с помощью функции:

set(h,'name1',value1,'name2',value2,...)

Функция fvtool указанного формата обеспечивает интерактивное общение с GUI FVTool. Основные свойства объекта h представлены в таблице 3.

Таблица 3. Основные свойства интерактивного общения с GUI FVTool

Свойство Назначение

Filters Возвращает информацию о структурах объектов dfilt в виде массива ячеек (cell array)

Analysis Управляет выводом характеристик в графическом окне GUI FVTool и может принимать значения, соответствующие командам пункта меню Analysis: • 'magnitude' — Magnitude Response (АЧХ); • 'phase' — Phase Response (ФЧХ); • freq' — Magnitude and Phase Responses (АЧХ и ФЧХ); • 'grpdelay' — Group Delay Response (ГВЗ); • 'phasedelay' — Phase Delay (фазовая задержка); • impulse' — Impulse Response (импульсная характеристика); • 'step' — Step Response (переходная характеристика); • 'polezero' — Pole/Zero Plot (карта нулей и полюсов); • 'coefficints' — Filter Coefficints (коэффициенты передаточной функции); • info' — Filter Information (свойства фильтра — объекта dfilt); • magestimate' — Magnitude Response Estimate (оценка АЧХ); • noisepower' — Round-off Noice Power Spectrum (энергетический спектр шума округления*)

grid Управляет наличием сетки при выводе графика и может принимать значение 'on' (по умолчанию) или 'off'

legend Управляет размещением легенды и может принимать значение 'on' или 'off' (по умолчанию). Размещение легенды выполняется с помощью функции: set(h,'legend','on'), после чего размещается легенда с помощью функции legend

Fs Позволяет указывать частоту дискретизации в килогерцах вместо нормированной частоты, указываемой по умолчанию. Например: set(h,'Fs',8)

Show- Reference Управляет автоматическим выводом характеристики исходного фильтра (с неквантованными коэффициентами) и может принимать значения 'on' (по умолчанию), если характеристика исходного фильтра выводится, или 'off' — если не выводится

* Вычисляется для квадратов мгновенных значений шума.

Пример 7

Вывести графики АЧХ:

• исходного КИХ-фильтра с неквантованными коэффициентами — объекта Hf3 (пример 4);

• КИХ-фильтра с ФT с ^-разрядными коэффициентами — объекта Hq3cl (пример З);

• КИХ-фильтра с ФT с В-разрядными коэффициентами — объекта Hq3c2 (пример б). Указать частоту дискретизации В кГц (она

использовалась при синтезе исходного КИХ-

фильтра [б]) и разместить легенду (рис. 2):

>> load Hf3 >> load Hq3cl >> load Hq3c2

>> h=fvtool(Hf3,Hq3cl,Hq3c2);

>> set(h,'ShowReference','off')

>> setfo'Fs'A'legendVon')

>> legend(h,'Reference FIR','FIR 16 bits','FIR В bits')

Для вывода АЧХ вместо АЧХ (дБ) — характеристики ослабления (З) [б], выводимой по умолчанию, в пункте меню Analysis (анализ) была выбрана команда Analysis Parameters (параметры анализа) и в раскрывающемся списке Magnitude Display (вывод АЧХ) — значение Magnitude (АЧХ).

АЧХ исходного КИХ-фильтра и КИХ-фильтра с ^-разрядными коэффициентами практически совпали, а с В-разрядными отличаются.

Выбирая в пункте меню Analysis соответствующие команды, можно вывести другие характеристики КИХ-фильтров. ■

Литература

1. Ingle V., Proakis J. Digital Signal Processing Using MATLAB. Second Edition — Thomson.

2. Оппенгейм А., Шафер Р. Цифровая обработка сигналов. М.: Tехносфера, 200б.

3. Сергиенко А. Б. Цифровая обработка сигналов, 2-е изд. СПб.: ПОТЕР, 200б.

4. Солонина А. И., Улахович Д. А., Арбузов С. М., Соловьева Е. Б. Основы цифровой обработки сигналов. 2-е изд. СПб.: БХВ-Петербург, 200З.

З. Солонина А. И., Арбузов С. М. Цифровая обработка сигналов. Моделирование в MATLAB. СПб.: БХВ-Петербург, 200В.

6. Солонина А. Моделирование цифровой обработки сигналов в MATLAB. Часть l. Синтез оптимальных (по Чебышеву) КИХ-фильтров программными средствами MATLAB // Компоненты и технологии. 200В. № ll.

7. Солонина А. Моделирование цифровой обработки сигналов в MATLAB. Часть 2. Синтез оптимальных БИХ-фильтров программными средствами MATLAB // Компоненты и технологии. 200В. № l2.

В. Солонина А. Моделирование цифровой обработки сигналов в MATLAB. Часть З. Описание структур КИХ- и БИХ-фильтров в MATLAB // Компоненты и технологии. 2009. № l.

i Надоели баннеры? Вы всегда можете отключить рекламу.