Генерация 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
, кодер генерирует один вход часов для многоскоростного фильтра. Модуль или объявление сущности для фильтра имеют один вход часов со связанными часами, включают вход, и часы включают вывод. Сгенерированный код включает счетчик, который управляет синхронизацией передач данных к фильтру вывод (для децимирующих фильтров) или вход (для фильтров интерполяции). Счетчик ведет себя как вторичные часы, уровень которых определяется десятикратным уменьшением или коэффициентом интерполяции. Эта опция предоставляет автономное решение для синхронизации для проектов 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 ; указывает, что имя часов включает входной порт.