Кодер поддерживает генерацию кода для мультирейтовых преобразователей частоты дискретизации Фэрроу (dsp.FarrowRateConverter). dsp.FarrowRateConverter является многоскоростной фильтр структурой, которая реализует преобразователь частоты дискретизации с произвольным коэффициентом преобразования, определяемым его интерполяцией и факторами десятикратного уменьшения.
В отличие от односкоростного фильтра Фэрроу (см. «Односкоростные фильтры Фэрроу»), многократный преобразователь частоты дискретизации Фэрроу не имеет дробной задержки входа. Для получения общей информации об этой структуре фильтра смотрите dsp.FarrowRateConverter страница с описанием в документации DSP System Toolbox™.
Можно сгенерировать HDL-код для автономного dsp.FarrowRateConverter объект или каскад, включающий dsp.FarrowRateConverter объект. В этом разделе приведены простые примеры для каждого случая.
В следующем примере создается экземпляр автономного преобразователя частоты дискретизации Фэрроу с фиксированной точкой. Объект преобразуется между двумя стандартными скоростями звука, от 44,1 кГц до 48 кГц. Пример генерирует как VHDL- кода, так и VHDL- испытательного стенда.
Hm = dsp.FarrowRateConverter(48,44.1); generatehdl(Hm,'InputDataType',numerictype(1,16,15),... 'GenerateHDLTestbench','on')
Следующий пример генерирует HDL-код для каскада, который включает в себя dsp.FarrowRateConverter фильтр. Кодер требует, чтобы dsp.FarrowRateConverter фильтр находится в последнем положении каскада.
Сначала интерполируйте исходный сигнал 8-kHz на четыре, используя каскад конечной импульсной характеристики полуполосных фильтров.
Astop = 50; % Minimum stopband attenuation TW = .125; % Transition Width f2 = fdesign.interpolator(4,'Nyquist',4,'TW,Ast',TW,Astop); hfir = design(f2,'multistage','HalfbandDesignMethod','equiripple','Systemobject',true);
dsp.FarrowRateConverter Система object™ вычисляет кусочно-полиномиальное сглаживание с помощью коэффициентов интерполяции Лагранжа. N = 3; % Polynomial Order hfar = dsp.FarrowRateConverter(32,44.1,'PolynomialOrder',N)
dsp.FarrowRateConverter фильтр находится в конце каскада.interp_cascade.addStage(hfar); generatehdl(interp_cascade,'InputDataType',numerictype(1,16,15),... 'GenerateHDLTestbench','on');
dsp.FarrowRateConverter Фильтры в пользовательском интерфейсеfilterDesigner и filterBuilder в настоящее время не поддерживает dsp.FarrowRateConverter фильтры. Чтобы сгенерировать код для dsp.FarrowRateConverter фильтровать в пользовательском интерфейсе генерации HDL-кода, используйте fdhdltool команда, как в следующем примере:
m = dsp.FarrowRateConverter(48,44.1); fdhdltool(m,numerictype(1,16,15));
fdhdltool открывает диалоговое окно Сгенерировать HDL для dsp.FarrowRateConverter фильтр, как показано на следующем рисунке.

Следующие опции генерации кода не поддерживаются для dsp.FarrowRateConverter фильтры и отключены в пользовательском интерфейсе:
Использование регистров трубопроводов (AddPipelineRegisters)
Распределённая арифметическая архитектура (DARadix и (DALUTPartition))
Полностью или частично последовательные архитектуры (SerialPartition и ReuseAccum)
Входы нескольких синхроимпульсов (ClockInputs)