Генерация HDL-кода поддерживается для следующих типов многоскоростных фильтров:
Интерполятор Каскадной расчески интегратора (CIC) (dsp.CICInterpolator
)
Каскадная расческа интегратора (CIC) Decimator (dsp.CICDecimator
)
КИХ многофазный Decimator (dsp.FIRDecimator
)
КИХ многофазный интерполятор (dsp.FIRInterpolator
)
КИХ многофазный конвертер частоты дискретизации (dsp.FIRRateConverter
)
Интерполятор компенсации CIC (dsp.CICCompensationInterpolator
)
Компенсация CIC Decimator (dsp.CICCompensationDecimator
)
Чтобы сгенерировать код многоскоростного фильтра, сначала выберите и спроектируйте один из поддерживаемых типов фильтра с помощью Filter Designer, Filter Builder или командной строки MATLAB®.
После того, как вы создали фильтр, открываете диалоговое окно Generate HDL, устанавливаете желаемые свойства генерации кода и генерируете код. См. Опции Генерации кода для Многоскоростных фильтров.
Сгенерировать код с помощью generatehdl
функционируйте, задайте свойства генерации кода многоскоростного фильтра, которые функционально эквивалентны опциям пользовательского интерфейса. См. generatehdl Свойства для Многоскоростных фильтров.
Когда многоскоростной фильтр поддерживаемого типа (см. Поддерживаемые Типы Многоскоростного фильтра) спроектирован, активированное / нерабочее состояние нескольких опций в изменениях диалогового окна Generate HDL.
На вкладке Global settings включено выпадающее меню Clock inputs. Это меню обеспечивает две альтернативы для генерации входных параметров часов для многоскоростных фильтров.
Меню Clock inputs не поддержано для:
Фильтры с Partly serial
архитектура
Многоступенчатые конвертеры частоты дискретизации: dsp.FIRRateConverter
, или dsp.FilterCascade
содержа несколько уровней
Для CIC-фильтров, на вкладке Filter Architecture, отключена опция Coefficient multipliers. Содействующие множители не используются в CIC-фильтрах.
Для CIC-фильтров, на вкладке Filter Architecture, отключена опция FIR adder style, поскольку CIC-фильтры не требуют итогового сумматора.
Следующий рисунок показывает настройки по умолчанию опций диалогового окна Generate HDL для поддерживаемого CIC-фильтра.
Опции Clock inputs:
Single
: Когда вы выбираете Single
, кодер генерирует один вход часов для многоскоростного фильтра. Модуль или объявление сущности для фильтра имеют один вход часов со связанными часами, включают вход, и часы включают выход. Сгенерированный код включает счетчик, который управляет синхронизацией передач данных к фильтру выход (для децимирующих фильтров) или вход (для фильтров интерполяции). Счетчик ведет себя как вторичные часы, уровень которых определяется децимацией или коэффициентом интерполяции. Эта опция предоставляет автономное решение для синхронизации для проектов FPGA.
Чтобы настроить имя часов включают выход, видят, что Установка Часов Включает Выходное Имя. Интерполяторы также проходят через часы, включают входной сигнал к выходному порту под названием ce_in
. Этот сигнал указывает, когда объект принял входную выборку. Можно использовать этот сигнал управлять восходящим потоком данных. Вы не можете настроить это имя порта.
Следующие выборки кода были сгенерированы от децимирующего фильтра CIC, имеющего фактор децимации 4
, с набором Clock inputs к Single
.
Кодер генерирует входные часы, входные часы включают, и выходные часы включают.
ENTITY cic_decim_4_1_single IS PORT( clk : IN std_logic; clk_enable : IN std_logic; reset : IN std_logic; filter_in : IN std_logic_vector(15 DOWNTO 0); -- sfix16_En15 filter_out : OUT std_logic_vector(15 DOWNTO 0); -- sfix16_En15 ce_out : OUT std_logic ); END cic_decim_4_1_single;
Часы включают выходной процесс, ce_output
, обеспечивает counter
сигнала. Каждый 4-й такт,
counter
переключатели к 1.
ce_output : PROCESS (clk, reset) BEGIN IF reset = '1' THEN cur_count <= to_unsigned(0, 4); ELSIF clk'event AND clk = '1' THEN IF clk_enable = '1' THEN IF cur_count = 3 THEN cur_count <= to_unsigned(0, 4); ELSE cur_count <= cur_count + 1; END IF; END IF; END IF; END PROCESS ce_output; counter <= '1' WHEN cur_count = 1 AND clk_enable = '1' ELSE '0';
Следующая выборка кода иллюстрирует типичное использование counter
сигнал, в этом случае ко времени фильтр выводится.
output_reg_process : PROCESS (clk, reset) BEGIN IF reset = '1' THEN output_register <= (OTHERS => '0'); ELSIF clk'event AND clk = '1' THEN IF counter = '1' THEN output_register <= section_out4; END IF; END IF; END PROCESS output_reg_process;
Multiple
: Когда вы выбираете Multiple
, кодер генерирует несколько входных параметров часов для многоскоростного фильтра. Модуль или объявление сущности для фильтра имеют отдельные входные параметры часов (каждый со связанными часами включает вход) для каждого уровня многоскоростного фильтра. Вы ответственны за обеспечение входных сигналов часов, которые соответствуют желаемой децимации или коэффициенту интерполяции. Чтобы видеть пример, сгенерируйте код испытательного стенда для своего многоскоростного фильтра и исследуйте clk_gen
процессы для каждых часов.
Multiple
опция предназначается для ASICs и FPGAs. Это обеспечивает больше гибкости, чем Single
опция, но принимает, что вы обеспечиваете высокоуровневый HDL-код, чтобы управлять входными часами вашего фильтра.
Синхронизаторы между несколькими областями часов не обеспечиваются.
Когда вы выбираете Multiple
, кодер не генерирует часы, включают выходные параметры; поэтому поле Clock enable output port панели Global Settings отключено.
followingENTITY
объявление было сгенерировано от децимирующего фильтра CIC с набором Clock inputs к Multiple
.
ENTITY cic_decim_4_1_multi IS PORT( clk : IN std_logic; clk_enable : IN std_logic; reset : IN std_logic; filter_in : IN std_logic_vector(15 DOWNTO 0); -- sfix16_En15 clk1 : IN std_logic; clk_enable1 : IN std_logic; reset1 : IN std_logic; filter_out : OUT std_logic_vector(15 DOWNTO 0) -- sfix16_En15 ); END cic_decim_4_1_multi;
Кодер генерирует часы, включают выход, когда вы устанавливаете Clock inputs на Single
в диалоговом окне Generate HDL. Имя по умолчанию для часов включает выход, ce_out
.
Чтобы изменить название часов включают выход, изменяют поле Clock enable output port панели Ports диалогового окна Generate HDL.
Кодер включает поле Clock enable output port только при генерации кода для многоскоростного фильтра с одними входными часами.
generatehdl
Свойства для многоскоростных фильтровЕсли вы используете generatehdl
чтобы сгенерировать код для многоскоростного фильтра, можно установить следующие свойства задать опции генерации тактовых сигналов:
ClockInputs
: Соответствует опции Clock inputs; выбирает генерацию сингла или нескольких входных параметров часов для многоскоростных фильтров.
ClockEnableOutputPort
: Соответствует полю Clock enable output port ; указывает, что имя часов включает выходной порт.
ClockEnableInputPort
соответствует полю Clock enable input port ; указывает, что имя часов включает входной порт.