Фильтр Фэрроу отличается от обычного фильтра, потому что он имеет дробную задержку входа в сложение с сигнальным входом. Дробная задержка входа позволяет использовать переменные по времени задержки при работе фильтра. Дробная задержка входа получает сигнал, принимающий значения от 0 до 1,0. Для получения общей информации о том, как создавать и использовать объекты фильтра Farrow, см. документацию DSP System Toolbox™.
Можно сгенерировать HDL-код для односкоростных фильтров Farrow из следующих объектов и структур:
dsp.VariableFractionalDelay
Системные object™
dfilt.farrowfd
структура фильтра
dfilt.farrowlinearfd
структура фильтра
Кодер обеспечивает generatehdl
свойства и эквивалентные опции пользовательского интерфейса, которые позволяют вам:
Задайте имя порта дробной задержки, используемое в сгенерированном коде.
Примените различные испытательные стенды входные сигналы к порту дробной задержки или задайте свой собственный входной сигнал.
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».
Когда открывается диалоговое окно Генерация HDL с фильтром Farrow, кодер отключает некоторые опции или устанавливает их на фиксированные значения по умолчанию. Затронутые опции:
Architecture. Кодер устанавливает эту опцию по умолчанию (Fully parallel
) и отключает его.
Clock inputs. Кодер устанавливает эту опцию по умолчанию (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.
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. Можно ввести вектор, чтобы задать свой собственный стимул, как показано на следующем рисунке: