Генерация кода HDL поддерживается для следующих типов многоскоростных фильтров:
Каскадный интеграторный блок-интерполятор (CIC) (dsp.CICInterpolator)
Каскадный блок интегратора (CIC)dsp.CICDecimator)
Полифазный дециматор FIR (dsp.FIRDecimator)
Полифазный интерполятор FIR (dsp.FIRInterpolator)
Преобразователь частоты дискретизации полифазного КИХ (dsp.FIRRateConverter)
Компенсационный интерполятор CIC (dsp.CICCompensationInterpolator)
Декиматор компенсации CIC (dsp.CICCompensationDecimator)
Чтобы создать многоскоростной код фильтра, сначала выберите и создайте один из поддерживаемых типов фильтров с помощью конструктора фильтров, построителя фильтров или командной строки MATLAB ®.
После создания фильтра откройте диалоговое окно «Создание HDL», задайте требуемые свойства создания кода и создайте код. См. раздел Параметры генерации кода для многоскоростных фильтров.
Создание кода с помощью generatehdl укажите свойства генерации многоскоростного кода фильтра, которые функционально эквивалентны опциям пользовательского интерфейса. См. раздел Свойства generatehdl для многоскоростных фильтров.
При разработке многоскоростного фильтра поддерживаемого типа (см. раздел Поддерживаемые типы многоскоростного фильтра) состояние включения/отключения нескольких параметров в диалоговом окне «Создание HDL» изменяется.
На вкладке Global settings (Глобальные параметры) включено раскрывающееся меню Clock input (Входные данные часов). Это меню предоставляет две альтернативы для генерации тактовых входов для многоскоростных фильтров.
Примечание
Меню тактовых входов не поддерживается для:
Фильтры с помощью Partly serial архитектура
Многоступенчатые преобразователи частоты дискретизации: dsp.FIRRateConverter, или dsp.FilterCascade содержащий несколько ставок
Для фильтров CIC на вкладке «Архитектура фильтра» опция «Множители коэффициентов» отключена. Множители коэффициентов в фильтрах CIC не используются.
Для фильтров CIC на вкладке «Архитектура фильтра» опция стиля сумматора FIR отключена, так как фильтры CIC не требуют конечного сумматора.
На следующем рисунке показаны параметры по умолчанию диалогового окна «Создание HDL» для поддерживаемого фильтра CIC.

Параметры тактовых входов:
Single: При выборе Singleкодер генерирует один тактовый вход для многоскоростного фильтра. Объявление модуля или объекта для фильтра имеет один вход тактового сигнала с соответствующим входом включения тактового сигнала и выходом включения тактового сигнала. Сгенерированный код включает в себя счетчик, который управляет синхронизацией передачи данных на выход фильтра (для прореживающих фильтров) или на вход (для интерполяционных фильтров). Счетчик ведет себя как вторичный тактовый сигнал, скорость которого определяется коэффициентом прореживания или интерполяции. Эта опция обеспечивает автономное решение синхронизации для конструкций FPGA.
Чтобы настроить имя выходного сигнала включения синхронизации, см. раздел Настройка имени выходного сигнала включения синхронизации. Интерполяторы также проходят через входной сигнал разрешения синхронизации к выходному порту с именем ce_in. Этот сигнал указывает, когда объект принял входной образец. Этот сигнал можно использовать для управления восходящим потоком данных. Невозможно настроить это имя порта.
Следующие выдержки кода были сгенерированы из фильтра прореживания CIC, имеющего коэффициент прореживания, равный 4, с входами синхросигналов, установленными на 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 опция предназначена для ASIC и FPGA. Он обеспечивает большую гибкость, чем Single , но предполагает, что для управления входными часами фильтра предоставляется код HDL более высокого уровня.
Синхронизаторы между несколькими доменами синхронизации не предоставляются.
При выборе Multipleкодер не генерирует выходные сигналы включения синхронизации; поэтому поле Clock enable output port на панели Global Settings отключено.
СледующееENTITY объявление было сгенерировано из децимационного фильтра CIC с входами тактовых импульсов, установленными на 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;
Кодер генерирует выходной сигнал включения синхросигнала при установке для входных сигналов тактового синхросигнала значения Single в диалоговом окне «Создание ЛПВП». Имя по умолчанию для выхода включения синхронизации: ce_out.
Чтобы изменить имя выходного сигнала включения синхронизации, измените значение в поле Clock enable output port на панели Ports диалогового окна Generate HDL.

Кодер активизирует поле Clock enable output port только при генерации кода для многоскоростного фильтра с одним входным синхросигналом.
generatehdl Свойства многоскоростных фильтровЕсли используется generatehdl чтобы создать код для многоскоростного фильтра, можно задать следующие свойства, чтобы задать опции генерации тактового сигнала:
ClockInputsСоответствует параметру Clock incomts; выбирает генерацию одиночных или множественных тактовых входов для многоскоростных фильтров.
ClockEnableOutputPort: Соответствует полю Clock enable output port; указывает имя выходного порта включения синхронизации.
ClockEnableInputPort соответствует полю Clock enable input port; определяет имя входного порта включения синхронизации.