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

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

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