Полифазные преобразователи скорости выборки

Генерация кода для полифазного преобразователя частоты выборки

Кодер поддерживает генерацию HDL-кода для прямых преобразователей скорости конечной импульсной характеристики полифазы выборки. dsp.FIRRateConverter является многоскоростной фильтр структурой, которая объединяет коэффициент интерполяции и коэффициент десятикратного уменьшения. Эта комбинация позволяет вам выполнить дробную интерполяцию или десятикратное уменьшение входного сигнала.

Коэффициент интерполяции (l) и коэффициент десятикратного уменьшения (m) для полифазного преобразователя частоты выборки заданы в виде целых чисел в InterpolationFactor и DecimationFactor свойства dsp.FIRRateConverter Системные object™. Этот код создает объект с коэффициентом повторной дискретизации 5/3:

frac_cvrter = dsp.FIRRateConverter('InterpolationFactor',5, ...
    'DecimationFactor',3)

Дробная повторная дискретизация скорости может быть визуализирована как двухэтапный процесс: интерполяция по фактору l, с последующим десятикратным уменьшением коэффициентом m. Для коэффициента повторной дискретизации 5/3 объект увеличивает частоту дискретизации в 5 раз, используя пятипутевой полифазный фильтр. Переключатель повторной дискретизации затем уменьшает новую скорость в 3 раза. Этот процесс извлекает пять выходных выборок для трех входных выборок.

Для получения общей информации об этой структуре фильтра смотрите dsp.FIRRateConverter страница с описанием в документации DSP System Toolbox™.

Реализация HDL для полифазного преобразователя частоты выборки

Поток сигналов, задержки и синхронизация

Поток сигналов для dsp.FIRRateConverter фильтр аналогичен интерполятору полифазы конечной импульсной характеристики (dsp.FIRInterpolator). Линия задержки продвигается, чтобы доставить каждый вход после обработки необходимого набора полифазы коэффициентов.

Схема иллюстрирует сроки реализации HDL для dsp.FIRRateConverter. Вход включения синхроимпульса (ce_in) указывает действительные входные выборки. Выходные данные и выход включения синхроимпульса (ce_out), производятся и поставляются одновременно, что приводит к непериодическому выходу.

Тактовая частота

Тактовая частота, необходимая для обработки логики оборудования, связана со скоростью входа как:

ceil(InterpolationFactor/DecimationFactor) 

Для коэффициента повторной дискретизации 5/3 тактовая частота ceil(5/3) = 2, или удвоить входную частоту выборки. Входы подаются в каждом другом такте. Выходы выдаются по мере их создания и поэтому являются непериодическими.

Примечание

Когда сгенерированный код или аппаратная логика развернуты, выходные параметры должны быть приняты в FIFO, спроектированном с выходами, происходящими с желаемой частотой дискретизации.

Порты включения синхроимпульса

HDL- сущности или модуль, сгенерированный из dsp.FIRRateConverter фильтр имеет один входной и два выходных порта включения синхроимпульса:

  • Выходы включения синхроимпульса: Имя выходного порта включения синхроимпульса по умолчанию ce_out. Этот сигнал указывает, когда выход данных действителен. Как и в случае с другими многоскоростными фильтрами, можно использовать поле Clock enable output port на вкладке Global Settings > Ports диалогового окна Generate HDL, чтобы задать имя порта. Также можно использовать ClockEnableOutputPort свойство, чтобы задать имя порта в generatehdl команда.

    Фильтр также проходит через вход включения синхроимпульса к выходу порту с именем ce_in. Этот сигнал указывает, когда объект принял вход выборку. Можно использовать этот сигнал для управления потоком данных в восходящем направлении. Вы не можете настроить это имя порта.

  • Вход включения синхроимпульса: Имя входного порта включения синхроимпульса по умолчанию clk_enable. Этот сигнал указывает, когда выборка входных данных действительна. Можно использовать поле Clock enable input port на вкладке Global Settings диалогового окна Generate HDL, чтобы задать имя порта. Также можно использовать ClockEnableInputPort свойство, чтобы задать имя порта в generatehdl команда.

Испытательный стенд

Сгенерированные испытательные стенды применяют тестовые векторы с правильной скоростью, затем наблюдают и проверяют выход по мере его доступности. Испытательные стенды управляют потоком данных, используя входной и выходной синхроимпульсы.

Генерация кода

В следующем примере создается dsp.FIRRateConverter с фиксированной точкой объект с коэффициентом повторной дискретизации 5/3 и генерирует код VHDL-фильтра. Когда вы генерируете HDL-код для системного объекта, задайте входной тип данных с фиксированной точкой. Объект определяет внутренние типы данных на основе типа входов и настроек свойств.

frac_cvrter = dsp.FIRRateConverter('InterpolationFactor',5,'DecimationFactor',3)
generatehdl(frac_cvrter,'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: filter
### Generating: H:\hdlsrc\filter.vhd
### Starting generation of filter VHDL entity
### Starting generation of filter VHDL architecture
### Successful completion of VHDL code generation process for filter: filter
### HDL latency is 2 samples 

Следующие опции генерации кода не поддерживаются для dsp.FIRRateConverter фильтры:

  • Использование регистров трубопроводов (AddPipelineRegisters)

  • Распределённая арифметическая архитектура (DARadix и (DALUTPartition))

  • Полностью или частично последовательные архитектуры (SerialPartition и ReuseAccum)

  • Входы нескольких синхроимпульсов (ClockInputs)