exponenta event banner

Односкоростные фильтры Farrow

Фильтр Фэрроу отличается от обычного фильтра тем, что он имеет вход дробной задержки в дополнение к входу сигнала. Ввод дробной задержки позволяет использовать изменяющиеся во времени задержки при работе фильтра. Вход дробной задержки принимает сигнал, принимающий значения от 0 до 1,0. Общие сведения о построении и использовании объектов фильтра Farrow см. в документации по Toolbox™ системы DSP.

Поддерживаемые односкоростные фильтры Farrow

Можно создать код HDL для односкоростных фильтров Farrow из следующих объектов и структур:

  • dsp.VariableFractionalDelay Системные object™

  • dfilt.farrowfd структура фильтра

  • dfilt.farrowlinearfd структура фильтра

Кодер обеспечивает generatehdl свойства и эквивалентные параметры пользовательского интерфейса, которые позволяют:

  • Определите имя порта дробной задержки, используемое в сгенерированном коде.

  • Примените различные сигналы стимула испытательного стенда к порту дробной задержки или определите собственный сигнал стимула.

Механика генерации кода для фильтров Farrow

Конструктор фильтров не поддерживает проектирование или импорт фильтров 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.

Опции отключены для фильтров Farrow

Когда открывается диалоговое окно Создать HDL (Generate HDL) с фильтром Farrow (Farrow), кодер отключает некоторые опции или устанавливает для них фиксированные значения по умолчанию. Затронутые варианты:

  • Архитектура. Кодер устанавливает для этой опции значение по умолчанию (Fully parallel) и отключает его.

  • Входные синхросигналы. Кодер устанавливает для этой опции значение по умолчанию (Single) и отключает его.

Свойства создания кода для фильтров Farrow

Для создания кода фильтра 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.

Параметры пользовательского интерфейса для фильтров Farrow

Пользовательский интерфейс 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% от общей длительности входного сигнала.

    • Определяется пользователем. При выборе этой опции активируется поле Определяемый пользователем стимул. Можно ввести вектор для определения собственного стимула, как показано на следующем рисунке:

Связанные темы