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

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

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

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

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

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

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

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

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

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

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

Filter Designer не поддерживает проект или импорт фильтров Farrow. Чтобы сгенерировать HDL-код для фильтра Farrow, используйте один из следующих методов:

  • Используйте MATLAB® командная строка для создания объекта фильтра Farrow. Инициируйте генерацию кода и установите свойства, связанные с Farrow. Смотрите Свойства Генерации кода для Farrow Filters.

  • Используйте командную строку 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);

    The fdhdltool откроется диалоговое окно Генерация HDL. Дополнительные сведения о том, как задать свойства в диалоговом окне, см. в разделе «Опции пользовательского интерфейса для фильтров Farrow».

  • Использование filterBuilder для разработки объекта фильтра Farrow (дробная задержка). В диалоговом окне Filter Builder выберите вкладку Code Generation. Чтобы открыть диалоговое окно Генерация HDL, нажмите Generate HDL.

    Дополнительные сведения о том, как задать свойства, см. в разделе «Опции пользовательского интерфейса для фильтров Farrow» в диалоговом окне «Генерация HDL».

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

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

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

  • Clock inputs. Кодер устанавливает эту опцию по умолчанию (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

Filter Design HDL Coder™ UI предоставляет опции для генерации кода фильтра Farrow. Эти опции соответствуют свойствам, описанным в свойствах генерации кода для фильтров Farrow.

Примечание

Фильтрующие опции Farrow отображаются только при выборе фильтра Farrow для генерации HDL-кода.

Для генерации кода фильтра Farrow поддерживаются следующие свойства:

  • В диалоговом окне Generate HDL, на вкладке Global Settings > Ports, Fractional delay port задает имя порта дробной задержки в сгенерированном коде. Имя по умолчанию filter_fd.

  • В диалоговом окне Generate HDL, на вкладке Test Bench > Stimuli, используйте Fractional delay stimulus, чтобы выбрать сигнал стимула. Этот сигнал подается на порт дробной задержки в сгенерированном испытательном стенде.

    Используйте Fractional delay stimulus, чтобы выбрать тип входного сигнала в сгенерированном коде:

    • Get value from filter (по умолчанию). Внутреннее постоянное значение применяется к порту дробной задержки.

    • Ramp sweep. Вектор значений, постепенно возрастающих в области значений от 0 до 1. Этот стимулирующий сигнал имеет ту же длительность, что и вход в фильтр, но изменяется с меньшей скоростью. Каждое значение дробной задержки, полученное из вектора, удерживается в течение 10% от общей длительности входного сигнала.

    • Random sweep. Вектор случайных значений от 0 до 1. Этот стимулирующий сигнал имеет ту же длительность, что и вход в фильтр, но изменяется с меньшей скоростью. Каждое значение дробной задержки, полученное из вектора, удерживается в течение 10% от общей длительности входного сигнала.

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

Похожие темы