Многоскоростные фильтры

Поддерживаемые типы многоскоростного фильтра

Генерация 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 ; указывает, что имя часов включает входной порт.

Для просмотра документации необходимо авторизоваться на сайте