EngeeDSP.CICInterpolator
Интерполяция сигнала с помощью каскадного интеграторно-гребенчатого фильтра.
| Библиотека |
|
| Блок |
Описание
Системный объект EngeeDSP.CICInterpolator интерполирует входной сигнал с помощью каскадного интеграторно-гребенчатого (Cascaded Integrator-Comb, CIC) фильтра. Структура интерполяционного CIC-фильтра представляет собой каскад из секций гребенчатых фильтров, за которым следует изменение частоты дискретизации на коэффициент , а затем каскад из секций интеграторов. Более подробную информацию см. в разделе Алгоритмы. Свойство NumSections задает количество секций в CIC-фильтре. Свойство InterpolationFactor задает коэффициент интерполяции .
Чтобы интерполировать входной сигнал, выполните следующие действия:
-
Создайте объект EngeeDSP.CICInterpolator и установите его свойства.
-
Вызовите объект с аргументами, как если бы это была функция.
Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.
Синтаксис
Создание
-
cicInterp = EngeeDSP.CICInterpolator()создает системный объект CIC интерполяции, который применяет фильтр CIC интерполяции к входному сигналу. -
cicInterp = EngeeDSP.CICInterpolator(R,M,N)создает системный объект CIC интерполяции, у которого для свойства InterpolationFactor установлено значениеR, для свойства DifferentialDelay — значениеM, а для свойства NumSections — значениеN.
-
cicInterp = EngeeDSP.CICInterpolator(___,Name=Value)создает объект CIC интерполяцииcicInterpс указанным свойствомName, установленным на указанное значениеValue. Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке (Name1=Value1,…,NameN=ValueN). Неуказанные свойства имеют значения по умолчанию.Пример:
# создание системного объекта CIC интерполяции c количеством секций 4 cicInterp = EngeeDSP.CICInterpolator(NumSections = 4)
Использование
-
cicInterpOut = cicInterp(input)интерполирует входные данные с помощью CIC интерполятора.
Аргументы
Входные аргументы
#
input —
входные данные
вектор | матрица
Details
Входные данные, заданные как вектор или матрица.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
Выходные аргументы
#
cicInterpOut —
выходные данные CIC интерполятора
вектор | матрица
Details
Интерполированные выходные данные, возвращаемые в виде вектора или матрицы. Размер выходного кадра равен (1 / InterpolationFactor) × input frame size. Комплексность выходных данных соответствует комплексности входных данных.
Если входные данные имеют встроенный целочисленный тип или тип данных с фиксированной запятой, длина выходного слова и длина дроби зависят от типа данных с фиксированной запятой, заданного с помощью свойства FixedPointDataType.
Полная точность
Если для свойства FixedPointDataType установлено значение "Full precision", применяется следующее соотношение:
где
-
— длина слова выходных данных;
-
— длина дробной части выходных данных;
-
— длина слова входных данных;
-
— длина дробной части входных данных;
-
— количество секций в CIC-фильтре, заданное свойством NumSections.
Значения и наследуются от входных данных, передаваемых алгоритму объекта. Для встроенных целочисленных входных данных длина дробной части равна 0.
Задание длин слова и дробной части
Если для свойства FixedPointDataType установлено значение "Specify word and fraction lengths", то длина слова и длина дробной части на выходе будут соответствовать значениям, указанным в свойствах OutputWordLength и OutputFractionLength.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
Свойства
#
NumSections —
количество секций интегратора и гребенчатого фильтра
Int64 integer
Details
Количество секций интегратора и гребенчатого CIC-фильтра, заданное как положительное целое число. Это число указывает количество секций в гребенчатой и в интеграторной частях фильтра. Общее количество секций в CIC-фильтре вдвое больше количества секций, заданного этим свойством.
#
FixedPointDataType —
способ задания свойств с фиксированной запятой
nothing
Details
Способ задания свойств с фиксированной запятой, заданный одним из следующих значений:
-
"Full precision"— длины слова и длины дробной части чисел с фиксированной запятой для секций CIC-фильтра и выходных данных объекта обрабатываются с полной точностью.
-
"Specify word and fraction lengths"— укажите длину слова и длину дробных частей в секциях CIC-фильтра и в выходных данных объекта с помощью свойств SectionWordLengths, SectionFractionLengths, OutputWordLength и OutputFractionLength.
# SectionFractionLengths — длины дробных частей чисел с фиксированной запятой для каждой секции фильтра
Details
Длины дробных частей чисел с фиксированной запятой, используемые для каждой секции фильтра, заданные как скаляр или вектор целых чисел. Длина дроби может быть отрицательной, равной 0 или положительной. Если вы указываете скаляр, значение применяется ко всем секциям фильтра. Если вы указываете вектор, его длина должна быть равна 2 × NumSections.
Зависимости
Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word and fraction lengths".
#
OutputWordLength —
длина слова с фиксированной запятой для выходных данных фильтра
Int64 integer
Details
Длина слова с фиксированной запятой, используемая для выходных данных фильтра, заданная как целое число больше или равное 2.
Зависимости
Чтобы использовать это свойство, установите для свойства FixedPointDataType значение
"Specify word and fraction lengths".
#
OutputFractionLength —
длина дроби с фиксированной запятой для выходных данных фильтра
Int64 integer
Details
Длина дроби с фиксированной запятой, используемая для выходных данных фильтра, заданная как целое число.
Зависимости
Чтобы использовать это свойство, установите для свойства FixedPointDataType значение "Specify word and fraction lengths".
# SectionWordLengths — длина слова с фиксированной запятой для каждой секции фильтра
Details
Длина слова с фиксированной запятой для каждой секции фильтра, заданная как скаляр.
Длина слова должна быть больше или равна 2.
Это значение применяется ко всем секциям фильтра.
Зависимости
Чтобы использовать это свойство, установите для свойства FixedPointDataType значение
"Specify word and fraction lengths".
#
InterpolationFactor —
коэффициент интерполяции
Int64 integer
Details
Коэффициент, на который интерполируется входной сигнал, заданный как положительное целое число.
Дополнительно
CIC-фильтр
Details
CIC-фильтры — это оптимизированный класс КИХ-фильтров с линейной фазой, состоящих из последовательно соединенных гребенчатых фильтров и интеграторов.
Концептуально интерполяционный CIC-фильтр представляет собой элемент повышения частоты дискретизации, за которым следует одночастотный CIC-фильтр , являющийся фильтром нижних частот для подавления искажений. Фильтр CIC интерполяции увеличивает частоту дискретизации входного сигнала на целочисленный коэффициент с помощью каскадного интеграторно-гребенчатого (Cascaded Integrator-Comb, CIC) фильтра.
В более эффективной реализации CIC-фильтр , работающий без изменения частоты дискретизации, разлагается на множители таким образом:
где
-
— передаточная функция секций каскада гребенчатых фильтров, каждый из которых имеет ширину ;
-
— передаточная функция каскада из интеграторов;
-
— количество секций. Количество секций в CIC-фильтре определяется как количество секций либо в гребенчатой части, либо в интегрирующей части фильтра. Это значение не отражает общее количество секций во всем фильтре;
-
— коэффициент интерполяции;
-
— дифференциальная задержка.
В алгоритме, обеспечивающем полную многоскоростную фильтрацию, учитывается замечательное тождество для интерполяции, которое позволяют переместить операцию изменения частоты дискретизации за каскад из гребенчатых фильтров без искажения результата операции.
Передаточная функция результирующего фильтра задается следующим уравнением:
Блок-схему, показывающую многоскоростную реализацию, см. в разделе Алгоритмы.
Сигнал с фиксированной запятой
Details
На схеме сигналов с фиксированной запятой показаны типы данных, которые объект EngeeDSP.CICInterpolator использует для сигналов с фиксированной запятой.

Здесь
-
secNT = numerictype(1, secWL, secFL); -
outNT = numerictype(1, outWL, outFL); -
secWL— длина слова секции, заданная с помощью свойства SectionWordLengths; -
secFL— длина дробной части секции, заданная с помощью свойства SectionFractionLengths; -
outWL— длина выходного слова, заданная с помощью свойства OutputWordLength; -
outFL— длина дробной части выходного слова, заданная с помощью свойства OutputFractionLength.
Значение свойства NumSections на этой схеме равно 2.
Алгоритмы
Фильтр CIC интерполяции
Details
Фильтр CIC интерполяции, описанный в разделе Дополнительно, реализован в виде каскада из гребенчатых фильтров, за которым следует элемент повышения частоты дискретизации сигнала на коэффициент , а затем каскад из интеграторов.

На схеме показан каскад гребенчатых фильтров с двумя секциями и каскад интеграторов, также состоящих из двух секций. Единичная задержка в интеграторах CIC-фильтра может быть расположена как в цепи прямой, так и обратной связи. Эти две конфигурации дают идентичные частотные характеристики фильтра. Однако фактические числовые последовательности на выходе для этих двух вариантов конфигурации будут различными из-за влияния задержки. В этом алгоритме единичная задержка размещается в тракте прямой линии интегратора, поскольку такая конфигурация предпочтительна для HDL-реализации.
Литература
-
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.
-
Meyer-Baese, U. Digital Signal Processing with Field Programmable Gate Arrays. New York: Springer, 2001.
-
Harris, Fredric J. Multirate Signal Processing for Communication Systems. Indianapolis, IN: Prentice Hall PTR, 2004.