В данной работе рассмотрен вариант использования среды MATLAB для анализа эффектов конечной разрядности в цифровых КИХ-фильтрах [4]. Анализ выполняется на основе модели (рисунок 1), учитывающей изменение импульсной характеристики фильтра, шум квантования и ошибку округления выходного сигнала в результате ограничения разрядности коэффициентов фильтра, отсчетов входного и выходного сигнала[5].
Рисунок 1 – Модель КИХ-фильтра, учитывающая эффекты конечной разрядности
Шум квантования отсчетов входного сигнала имитируется случайным шумом с равномерным распределением в интервале где – шаг квантования АЦП [5]. Квантованный сигнал , поступающий на вход КИХ-фильтра, является результатом суммирования шума квантования и входного сигнала.
Квантование коэффициентов КИХ-фильтра моделируется фильтром с коэффициентами , включенным параллельно с исходным. Коэффициенты являются разницей между и результатами их квантования .
Выходной сигнал КИХ-фильтра рассчитываются по формуле (1):
(1) |
Разрядность произведений в два раза выше, чем разрядность и . Если для суммирования произведений необходимо предварительно выполнять их округление, ошибка округления добавляется к каждой частной сумме произведений, а суммарная ошибка округления пропорциональна порядку фильтра. В случае использования для реализации КИХ-фильтра ЦОС-ячеек ПЛИС отдельные произведения и конечный результат фильтрации можно не округлять. Округление выходного сигнала может потребоваться, если он подается на вход устройства с меньшей разрядностью. Ошибка округления выходного сигнала, моделируется случайным шумом с равномерным распределением в интервале .
В MATLAB-скрипте, приведенном ниже, на основе вектора b коэффициентов созданного ранее фильтра f2 создается фильтр f_fp, работающий в формате с фиксированной запятой при разрядности коэффициентов 18 бит. Вектор b формируется с помощью функции impz. Фильтр f_fp создается с помощью функции dfilt[4].
f1=fdesign.lowpass('Fp,Fst,Ap,Ast',0.2,0.3,0.1,80);
f2=design(f1,'kaiserwin');
b=impz(f2); % получаем вектор коэффициентов ИХ фильтра f2
f_fp=dfilt.dffir(b); % создаем фильтр f_fp
%задаем формат и разрядность коэффициентов f_fp:
set(f_fp,'arithmetic','fixed','CoeffWordLength',18);
Чтобы MATLAB-модель фильтра учитывала шумы квантования входного сигнала и округления выходного сигнала, необходимо задать дополнительные параметры функции dfilt, в частности, разрядность представления отсчетов входных и выходных сигналов [4].
Таким образом, в среде MATLAB можно провести анализ эффектов конечной разрядности КИХ-фильтра, учитывая влияние квантования коэффициентов и отсчетов входного сигнала, а также округления выходного сигнала фильтра.
Список литературы
Сальников И.И. Структура иерархической системы поддержки принятия решения по объективному выбору средства реализации проектируемой системы цифровой обработки информации // XXI век: итоги прошлого и проблемы настоящего плюс. – 2012. – №5 – с.69-73.
Ушенина И.В. Способы реализации на ПЛИС многоканальных адаптивных КИХ- фильтров для систем активного подавления акустического шума // Цифровая обработка сигналов. – 2015. – № 4. – с.49-54
Мартышкин А.И. Разработка аппаратного буферного устройства памяти многопроцессорной системы // Фундаментальные исследования. – 2015. - №12. – с.485-489
Ушенина И.В. Расчет и анализ параллельных КИХ-фильтров, предназначенных для реализации на ПЛИС // XXI век: итоги прошлого и проблемы настоящего плюс. – 2016. - №6(34). – c.144-151.
Schilling R.J., Harris S.L. Fundamentals of Digital Signal Processing Using MATLAB®. – 2010.