Фильтр Фэрроу отличается от обычного фильтра тем, что он имеет вход дробной задержки в дополнение к входу сигнала. Ввод дробной задержки позволяет использовать изменяющиеся во времени задержки при работе фильтра. Вход дробной задержки принимает сигнал, принимающий значения от 0 до 1,0. Общие сведения о построении и использовании объектов фильтра Farrow см. в документации по Toolbox™ системы DSP.
Можно создать код HDL для односкоростных фильтров Farrow из следующих объектов и структур:
dsp.VariableFractionalDelay Системные object™
dfilt.farrowfd структура фильтра
dfilt.farrowlinearfd структура фильтра
Кодер обеспечивает generatehdl свойства и эквивалентные параметры пользовательского интерфейса, которые позволяют:
Определите имя порта дробной задержки, используемое в сгенерированном коде.
Примените различные сигналы стимула испытательного стенда к порту дробной задержки или определите собственный сигнал стимула.
Конструктор фильтров не поддерживает проектирование или импорт фильтров Farrow. Чтобы создать код HDL для фильтра Farrow, используйте один из следующих методов.
Используйте командную строку MATLAB ® для создания объекта фильтра Farrow. Инициируйте создание кода и задайте свойства, связанные с Farrow. См. раздел Свойства генерации кода для фильтров Farrow.
Используйте командную строку MATLAB для создания объекта фильтра Farrow. Затем передайте этот объект в fdhdltool.
Например, эти команды создают объект системы дробной задержки Farrow, farrowfiltи передайте его в fdhdltoolвместе с типами данных входной и дробной задержки.
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); inputDataType = numerictype(1,18,17); fdDataType = numerictype(1,8,7); fdhdltool(farrowfilt,inputDataType,fdDataType);
fdhdltool открывает диалоговое окно Генерировать ЛПВП (Generate HDL). Дополнительные сведения о настройке свойств в диалоговом окне см. в разделе Параметры пользовательского интерфейса для фильтров Farrow.
Использовать filterBuilder для проектирования объекта фильтра Farrow (дробная задержка). В диалоговом окне «Построитель фильтров» выберите вкладку «Создание кода». Чтобы открыть диалоговое окно Генерировать ЛПВП (Generate HDL), щелкните Генерировать ЛПВП (Generate HDL).

Дополнительные сведения о настройке свойств в диалоговом окне «Создание HDL» см. в разделе Параметры пользовательского интерфейса для фильтров Farrow.
Когда открывается диалоговое окно Создать HDL (Generate HDL) с фильтром Farrow (Farrow), кодер отключает некоторые опции или устанавливает для них фиксированные значения по умолчанию. Затронутые варианты:
Архитектура. Кодер устанавливает для этой опции значение по умолчанию (Fully parallel) и отключает его.
Входные синхросигналы. Кодер устанавливает для этой опции значение по умолчанию (Single) и отключает его.
Для создания кода фильтра Farrow поддерживаются следующие свойства:
FracDelayPort (символьный вектор). Это свойство указывает имя порта дробной задержки в сгенерированном коде. Имя по умолчанию: 'filter_fd'. В следующем примере имя 'FractionalDelay' назначается порту дробной задержки.
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); generatehdl(farrowfilt,'InputDataType',numerictype(1,18,17),... 'FractionalDelayDataType',numerictype(1,8,7),... 'FracDelayPort','FractionalDelay');
TestBenchFracDelayStimulus (символьный вектор). Это свойство определяет сигнал стимула, применяемый к порту дробной задержки в коде тестового стенда.
По умолчанию к порту дробной задержки применяется внутреннее постоянное значение. Чтобы использовать значение по умолчанию, оставьте TestBenchFracDelayStimulus неопределенное свойство или передача в пустом символьном векторе (''):
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); generatehdl(farrowfilt,'InputDataType',numerictype(1,18,17),... 'FractionalDelayDataType',numerictype(1,8,7),... 'GenerateHDLTestbench','on');
Кроме того, можно задать генерацию следующих типов векторов стимула:
'RandSweep'Вектор случайных значений от 0 до 1. Этот сигнал стимула имеет ту же длительность, что и вход в фильтр, но изменяется с более медленной скоростью. Каждое значение дробной задержки, полученное из вектора, сохраняется в течение 10% от общей длительности входного сигнала. Например:
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); generatehdl(farrowfilt,'InputDataType',numerictype(1,18,17),... 'FractionalDelayDataType',numerictype(1,8,7),... 'GenerateHDLTestbench','on',... 'TestbenchFracDelayStimulus','RandSweep');
'RampSweep'Вектор значений, постепенно увеличивающийся в диапазоне от 0 до 1. Этот сигнал стимула имеет ту же длительность, что и вход в фильтр, но изменяется с более медленной скоростью. Каждое значение дробной задержки, полученное из вектора, сохраняется в течение 10% от общей длительности входного сигнала.
Определяемый пользователем вектор стимула. Можно передать вектор для определения собственного стимула. Например:
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); mytestv = [0.5*ones(1, 512), 0.2*ones(1, 513)]; generatehdl(farrowfilt,'InputDataType',numerictype(1,18,17),... 'FractionalDelayDataType',numerictype(1,8,7),... 'GenerateHDLTestbench','on',... 'TestBenchStimulus',{'chirp'},... 'TestbenchFracDelayStimulus',mytestv);
Примечание
Определяемый пользователем сигнал стимулирования дробной задержки должен иметь ту же длину, что и входной сигнал испытательного стенда. Если эти два сигнала не имеют одинаковой длины, формирование тестового стенда завершается сообщением об ошибке. В сообщении об ошибке отображается длина сигнала. Например:
farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow'); mytestv = [0.5*ones(1, 512), 0.2*ones(1, 513)]; generatehdl(farrowfilt,'InputDataType',numerictype(1,18,17),... 'FractionalDelayDataType',numerictype(1,8,7),... 'GenerateHDLTestbench','on',... 'TestBenchStimulus',{'chirp' 'noise'},... 'TestbenchFracDelayStimulus',mytestv);
Error using hdlfilter.abstractfarrow/genVecDataforFarrow The lengths of specified vectors for FracDelay (1025) and Input (2050) do not match.
Пользовательский интерфейс HDL Coder™ Filter Design предоставляет опции для создания кода фильтра Farrow. Эти параметры соответствуют свойствам, описанным в разделе Свойства генерации кода для фильтров Farrow.
Примечание
Параметры фильтра Farrow отображаются только в том случае, если для генерации кода HDL выбран фильтр Farrow.
Для создания кода фильтра Farrow поддерживаются следующие свойства:
В диалоговом окне «Создание HDL» на вкладке «Глобальные настройки» > «Порты» в поле «Порт дробной задержки» указывается имя порта дробной задержки в сгенерированном коде. Имя по умолчанию: filter_fd.

В диалоговом окне Generate HDL (Генерировать HDL) на вкладке Test Bench (Испытательный стенд) > Stimuli (Стимул) выберите стимул дробной задержки. Этот сигнал подается на порт частичной задержки в сформированном испытательном стенде.

Используйте стимул дробной задержки для выбора типа сигнала стимула в сгенерированном коде:
Получение значения из фильтра (по умолчанию). К порту дробной задержки применяется внутреннее постоянное значение.
Зачистка пандуса. Вектор значений, постепенно увеличивающийся в диапазоне от 0 до 1. Этот сигнал стимула имеет ту же длительность, что и вход в фильтр, но изменяется с более медленной скоростью. Каждое значение дробной задержки, полученное из вектора, сохраняется в течение 10% от общей длительности входного сигнала.
Случайная зачистка. Вектор случайных значений от 0 до 1. Этот сигнал стимула имеет ту же длительность, что и вход в фильтр, но изменяется с более медленной скоростью. Каждое значение дробной задержки, полученное из вектора, сохраняется в течение 10% от общей длительности входного сигнала.
Определяется пользователем. При выборе этой опции активируется поле Определяемый пользователем стимул. Можно ввести вектор для определения собственного стимула, как показано на следующем рисунке:
