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

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

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

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

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

  • dfilt.farrowfd отфильтруйте структуру

  • dfilt.farrowlinearfd отфильтруйте структуру

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

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

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

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

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

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

  • Используйте командную строку MATLAB, чтобы создать объект фильтра Фэрроу. Затем передайте этот объект в fdhdltool.

    Например, эти команды создают Фэрроу дробный Системный объект задержки, farrowfilt, и передайте его fdhdltool, вместе с его входом и дробными типами данных задержки.

    farrowfilt = dsp.VariableFractionalDelay('InterpolationMethod','Farrow');
    inputDataType = numerictype(1,18,17);
    fdDataType = numerictype(1,8,7);
    fdhdltool(farrowfilt,inputDataType,fdDataType);

    fdhdltool инструмент открывает диалоговое окно Generate HDL. См. Опции пользовательского интерфейса для Неоплодотворенных Фильтров для получения дополнительной информации, как установить свойства в диалоговом окне.

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

    См. Опции пользовательского интерфейса для Неоплодотворенных Фильтров для получения дополнительной информации, как установить свойства в диалоговом окне Generate HDL.

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

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

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

  • Clock inputs. Кодер устанавливает эту опцию на ее значение по умолчанию (Single) и отключает его.

Свойства генерации кода для неоплодотворенных фильтров

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

  • 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.

Опции пользовательского интерфейса для неоплодотворенных фильтров

Пользовательский интерфейс Filter Design HDL Coder™ предоставляет возможности для генерации кода фильтра Фэрроу. Эти опции соответствуют свойствам, описанным в Code Generation Properties для Фильтров Фэрроу.

Примечание

Опции фильтра Фэрроу отображены только, когда фильтр Фэрроу выбран для генерации HDL-кода.

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

  • В диалоговом окне 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 включено. Можно ввести вектор, чтобы задать собственный стимул как показано в следующем рисунке:

Похожие темы