Документация Engee

EngeeDSP.CICDecimator

Децимация сигнала с помощью каскадного интеграторно-гребенчатого фильтра.

Библиотека

EngeeDSP

Блок

CIC Decimation

Описание

Системный объект EngeeDSP.CICDecimator выполняет уменьшение частоты дискретизации (децимацию) входного сигнала с помощью каскадного интеграторно-гребенчатого (Cascaded Integrator-Comb, CIC) фильтра. Структура децимационного CIC-фильтра представляет собой каскад из секций интеграторов, за которым следует изменение скорости на коэффициент , а затем каскад из секций гребенчатых фильтров. Более подробную информацию см. в разделе Алгоритмы. Свойство NumSections задает количество секций в CIC-фильтре. Свойство DecimationFactor задает коэффициент децимации .

Чтобы произвести децимацию входного сигнала, выполните следующие действия:

  1. Создайте объект EngeeDSP.CICDecimator и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • cicDecim = EngeeDSP.CICDecimator() возвращает системный объект децимации CIC, который применяет фильтр децимации CIC к входному сигналу.

  • cicDecim = EngeeDSP.CICDecimator(R,M,N) возвращает системный объект децимации CIC, у которого для свойства DecimationFactor установлено значение R, для свойства DifferentialDelay — значение M, а для свойства NumSections — значение N.

  • cicDecim = EngeeDSP.CICDecimator(___,Name=Value) возвращает объект децимации CIC cicDecim с указанным свойством Name, установленным на указанное значение Value. Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке (Name1=Value1,…​,NameN=ValueN). Неуказанные свойства имеют значения по умолчанию.

    Пример:

    # создание системного объекта децимации CIC c коэффициентом децимации 8
    cicDecim = EngeeDSP.CICDecimator(DecimationFactor = 8)

Использование

  • cicDecimOut = cicDecim(input) уменьшает частоту дискретизации входного сигнала с помощью дециматора CIC.

Аргументы

Входные аргументы

# input — входные данные
вектор | матрица

Details

Входные данные, заданные как вектор или матрица. Количество строк во входных данных должно быть кратно значению свойства DecimationFactor.

Типы данных

Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Fixed-point

Поддержка комплексных чисел

Да

Выходные аргументы

# cicDecimOut — выходные данные дециматора CIC
вектор | матрица

Details

Децимированный выходной сигнал, возвращаемый в виде вектора или матрицы. Размер выходного кадра равен (1 / DecimationFactor) × размер входного кадра. Комплексность выходных данных соответствует комплексности входных данных.

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

Полная точность

Если для свойства FixedPointDataType установлено значение "Full precision", применяется следующее соотношение:



где

  • — длина слова выходных данных;

  • — длина дробной части выходных данных;

  • — длина слова входных данных;

  • — длина дробной части входных данных;

  • — количество секций в CIC-фильтре, заданное свойством NumSections.

Значения и наследуются от входных данных, передаваемых алгоритму объекта. Для встроенных целочисленных входных данных длина дробной части равна 0.

Задание длин слова и дробной части

Если для свойства FixedPointDataType установлено значение "Specify word and fraction lengths", то длина слова и длина дробной части на выходе будут соответствовать значениям, указанным в свойствах OutputWordLength и OutputFractionLength.

Задание длин слов

Если для свойства FixedPointDataType установлено значение "Specify word lengths", то длина слова на выходе будет соответствовать значению, указанному в свойстве OutputWordLength. Длина дробной части на выходе определяется следующим образом:

Типы данных

Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Fixed-point

Поддержка комплексных чисел

Да

Свойства

# NumSections — количество секций интегратора и гребенчатого фильтра
Int64 integer

Details

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

# FixedPointDataType — способ задания свойств с фиксированной запятой
nothing

Details

Способ задания свойств с фиксированной запятой, заданный одним из следующих значений:

  • "Full precision" — длины слова и длины дробной части чисел с фиксированной запятой для секций CIC-фильтра и выходных данных объекта обрабатываются с полной точностью.

  • "Specify word lengths" — укажите длину слова в секциях CIC-фильтра и в выходных данных объекта с помощью свойств SectionWordLengths и OutputWordLength. Объект определяет соответствующие длины дробных частей для обеспечения максимально возможной точности. Более подробную информацию см. в описании аргумента cicDecimOut.

  • "Specify word and fraction lengths" — укажите длину слова и длину дробных частей в секциях CIC-фильтра и в выходных данных объекта с помощью свойств SectionWordLengths, SectionFractionLengths, OutputWordLength и OutputFractionLength.

# DecimationFactor — коэффициент децимации
Int64 integer

Details

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

# DifferentialDelay — дифференциальная задержка секций гребенчатого сигнала
Int64 integer

Details

Значение дифференциальной задержки, используемое в каждой из секций гребенчатого фильтра, заданное как положительное целое число. Более подробную информацию см. в разделе Алгоритмы.

# SectionFractionLengths — длины дробных частей чисел с фиксированной запятой для каждой секции фильтра

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word and fraction lengths".

# OutputWordLength — длина слова с фиксированной запятой для выходных данных фильтра
Int64 integer

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word lengths" или "Specify word and fraction lengths".

# OutputFractionLength — длина дроби с фиксированной запятой для выходных данных фильтра
Int64 integer

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word and fraction lengths".

# SectionWordLengths — длина слова с фиксированной запятой для каждой секции фильтра

Details

Длина слова с фиксированной запятой для каждой секции фильтра, заданная как скаляр. Длина слова должна быть больше или равна 2. Это значение применяется ко всем секциям фильтра.

Зависимости

Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word lengths" или "Specify word and fraction lengths".

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Дополнительно

CIC-фильтр

Details

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

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

cic decimator ru

В более эффективной реализации CIC-фильтр , работающий без изменения частоты дискретизации, разлагается на множители таким образом:

где

  • — передаточная функция каскада из интеграторов;

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

  • — количество секций. Количество секций в CIC-фильтре определяется как количество секций либо в гребенчатой части, либо в интегрирующей части фильтра. Это значение не отражает общее количество секций во всем фильтре;

  • — коэффициент децимации;

  • — дифференциальная задержка.

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

Блок-схему, показывающую многоскоростную реализацию, см. в разделе Алгоритмы.

Сигнал с фиксированной запятой

Details

На схеме сигналов с фиксированной запятой показаны типы данных, которые объект EngeeDSP.CICDecimator использует для сигналов с фиксированной запятой.

cic decimator 1 ru

Здесь

  • secNT = numerictype(1, secWL, secFL);

  • outNT = numerictype(1, outWL, outFL);

  • secWL — длина слова секции, заданная с помощью свойства SectionWordLengths;

  • secFL — длина дробной части секции, заданная с помощью свойства SectionFractionLengths;

  • outWL — длина выходного слова, заданная с помощью свойства OutputWordLength;

  • outFL — длина дробной части выходного слова, заданная с помощью свойства OutputFractionLength.

Значение свойства NumSections на этой схеме равно 2.

Алгоритмы

Децимационный CIC-фильтр

Details

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

cic decimator 2

На схеме показан каскад интеграторов с двумя секциями и каскад гребенчатых фильтров, также состоящих из двух секций. Единичная задержка в интеграторах CIC-фильтра может быть расположена как в цепи прямой, так и обратной связи. Эти две конфигурации дают идентичные частотные характеристики фильтра. Однако фактические числовые последовательности на выходе для этих двух вариантов конфигурации будут различными из-за влияния задержки. В этом алгоритме единичная задержка размещается в тракте прямой линии интегратора, поскольку такая конфигурация предпочтительна для HDL-реализации.

Литература

  1. Hogenauer, E.B. «An Economical Class of Digital Filters for Decimation and Interpolation» IEEE Transactions on Acoustics, Speech and Signal Processing. Vol. 29, Number 2, 1981, pp. 155–162, 1981.

  2. Meyer-Baese, U. Digital Signal Processing with Field Programmable Gate Arrays. New York: Springer, 2001.

  3. Harris, Fredric J. Multirate Signal Processing for Communication Systems. Indianapolis, IN: Prentice Hall PTR, 2004.