exponenta event banner

getLatency

Задержка фильтра FIR

Описание

пример

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™ и запрашивает задержку. Архитектура по умолчанию является полностью параллельной систолической. Тип данных по умолчанию для коэффициентов: '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

Проверьте латентность несимметричного полностью параллельного систолического фильтра. 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 объект FIR filter System, созданный и настроенный. Посмотрите dsp.HDLFIRFilter.

Тип входных данных, указанный как numerictype (Конструктор фиксированных точек). Звонить numerictype(s,w,f), где s равно 1 для подписанных и 0 для неподписанных, w - длина слова в битах, и f - количество дробных битов.

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

Зависимости

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

Тип данных входных коэффициентов, указанный как numerictype (Конструктор фиксированных точек). Этот аргумент применяется при использовании программируемых коэффициентов. Звонить 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