getLatency

Задержка конечной импульсной характеристики

Описание

пример

Y = getLatency(hdlfir,inputType,[],isInputComplex) возвращает задержку, Y, между первой действительной входной выборкой и первой действительной выходной выборкой, принимая смежные входные выборки. Задержка зависит от структуры фильтра и коэффициентов фильтра. Используйте этот синтаксис, когда вы не используете программируемые коэффициенты. Последние три аргумента могут быть необязательными, в зависимости от строения объекта.

  • Использование inputType когда вы задаете CoefficientsDataType свойство к 'Same word length as input'. Задержка может измениться с типом входных данных, потому что объект приводит коэффициенты к типу входных данных, что может повлиять на совместное использование умножителя для коэффициентов с равными абсолютными значениями.

  • Использование isInputComplex когда ваши входные данные комплексны, и вы используете частично последовательную сестрическую архитектуру. Задержка изменяется, когда у вас есть комплексные данные и комплексные коэффициенты из-за дополнительного конвейера сумматора. Когда вы задаете isInputComplex, необходимо также привести аргумент заполнителя, [] для неиспользованного третьего аргумента.

пример

Y = getLatency(hdlfir,coeffType,coeffPrototype,isInputComplex) возвращает задержку, Y, между первой действительной входной выборкой и первой действительной выходной выборкой, принимая смежные входные выборки. Задержка зависит от структуры фильтра и коэффициентов фильтра. Используйте этот синтаксис, когда вы используете программируемые коэффициенты. coeffType - тип данных входных коэффициентов. Последние два аргумента могут быть необязательными, в зависимости от строения объекта.

  • Использование coeffPrototype оптимизировать программируемый фильтр для симметричных или антисимметричных коэффициентов. Прототип задает шаблон, которому должны следовать все входные коэффициенты. На основе прототипа объект реализует оптимизированный фильтр, который разделяет умножители для симметричных коэффициентов. Если ваши входные коэффициенты не все соответствуют одному и тому же шаблону или чтобы отказаться от оптимизации умножителя, можно опустить этот аргумент или задать прототип как пустой вектор, [].

  • Использование isInputComplex когда ваши входные данные комплексны. Когда вы задаете isInputComplex, вы также должны задать coeffPrototype или аргумент заполнителя, [].

пример

Y = getLatency(hdlfir) возвращает задержку, Y. Используйте этот синтаксис, когда CoefficientsDataType задан числовой тип, вы не используете программируемые коэффициенты, и входные данные не являются комплексными.

Примеры

свернуть все

Задержка dsp.HDLFIRFilter Системная object™ изменяется со структурой фильтра, опциями сериализации и тем, обеспечивают ли значения коэффициентов возможности оптимизации. Используйте getLatency функция для нахождения задержки конкретного строения. Задержка - это количество циклов между первым допустимым входом и первым действительным выходом.

Создайте dsp.HDLFIRFilter Система object™ и запрашивает задержку. Архитектура по умолчанию полностью параллельна systolic. Тип данных по умолчанию для коэффициентов 'Same word length as input'. Поэтому, когда вы вызываете getLatency объект, необходимо задать тип входных данных. Объект приводит значения коэффициентов к типу входных данных, а затем проверяет симметричные коэффициенты. Этот Numerator имеет 31 симметричный коэффициент, поэтому объект оптимизирует для общих коэффициентов и реализует 16 умножителей.

Numerator = firpm(30,[0 0.1 0.2 0.5]*2,[1 1 0 0]);
Input_type = numerictype(1,16,15); % object uses only the word length for coefficient type cast
hdlfir = dsp.HDLFIRFilter('Numerator',Numerator);
L_sysp = getLatency(hdlfir,Input_type)
L_sysp = 23

Проверяйте задержку на наличие частично последовательной систематической реализации того же фильтра. По умолчанию, SerializationOption свойство 'Minimum number of cycles between valid input samples'и поэтому необходимо задать правило сериализации с помощью NumberOfCycles свойство. Чтобы разделить каждый умножитель между 8 коэффициентами, установите NumberOfCycles до 8. Затем объект оптимизируется на основе симметрии коэффициентов, поэтому существует 16 уникальных коэффициентов, разделяемых 8 раз каждый на 2 умножителя. Эта последовательная реализация фильтра требует входных выборок, которые действительны каждые 8 циклов.

hdlfir = dsp.HDLFIRFilter('Numerator',Numerator,'FilterStructure','Partly serial systolic','NumberOfCycles',8);
L_syss = getLatency(hdlfir,Input_type)
L_syss = 19

Проверяйте задержку несимметричного полностью параллельного сестрического фильтра. The Numerator имеет 31 коэффициент.

Numerator = sinc(0.4*[-30:0]);
hdlfir = dsp.HDLFIRFilter('Numerator',Numerator);
L_sysp = getLatency(hdlfir,Input_type)
L_sysp = 37

Проверяйте задержку того же несимметричного фильтра, реализованного как частично последовательный сестрический фильтр. В этом случае задайте SerializationOption по количеству умножителей. Объект реализует фильтр, который имеет 2 умножителя и требует 8 циклов между входными выборками.

hdlfir = dsp.HDLFIRFilter('Numerator',Numerator,'FilterStructure','Partly serial systolic',...
                          'SerializationOption','Maximum number of multipliers','NumberOfMultipliers',2);
L_syss = getLatency(hdlfir,Input_type)
L_syss = 37

Проверяйте задержку полностью параллельной транспонированной архитектуры. Задержка для этой структуры фильтра всегда составляет 6 циклов.

hdlfir = dsp.HDLFIRFilter('Numerator',Numerator,'FilterStructure','Direct form transposed');
L_trans = getLatency(hdlfir,Input_type)
L_trans = 6

Входные параметры

свернуть все

HDL-оптимизированный конечной импульсной характеристикой фильтр Системного объекта, который вы создали и настроили. См. dsp.HDLFIRFilter.

Входные данные, заданный как a numerictype (Fixed-Point Designer) объект. Функции numerictype(s,w,f), где s равен 1 для со знаком и 0 для без знака, w - размер слова в битах и f - количество дробных бит.

Если вы задаете [] для этого аргумента объект использует double тип данных для вычисления задержки. Результат эквивалентен задержке с фиксированной точкой, пока тип данных коэффициента достаточно велик, чтобы точно представлять значения коэффициентов.

Зависимости

Этот аргумент применяется, когда CoefficientsDataType является 'Same word length as input'.

Тип данных входных коэффициентов, заданный как a numerictype (Fixed-Point Designer) объект. Этот аргумент применяется, когда вы используете программируемые коэффициенты. Функции numerictype(s,w,f), где s равен 1 для со знаком и 0 для без знака, w - размер слова в битах и f - количество дробных бит.

Зависимости

Этот аргумент применяется, когда вы задаете NumeratorSource на 'Input port (Parallel interface)'.

Коэффициенты фильтра прототипа, заданные как вектор числовых вещественных значений. Прототип задает шаблон, которому должны следовать все входные коэффициенты. На основе прототипа объект реализует оптимизированный фильтр, который разделяет умножители для симметричных коэффициентов. Если ваши входные коэффициенты не все соответствуют одному и тому же шаблону, или чтобы отказаться от оптимизации умножителя, задайте прототип как пустой вектор, [].

Оптимизация коэффициентов влияет на задержку объекта фильтра.

Зависимости

Этот аргумент применяется, когда вы задаете NumeratorSource на 'Input port (Parallel interface)'. Когда у вас есть комплексные входные данные, но вы не используете программируемые коэффициенты, установите этот аргумент равным [].

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

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

Типы данных: logical

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

свернуть все

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

См. также

Объекты

Введенный в R2018b