exponenta event banner

Минимизация включения тактового сигнала и сброс параметров сигнала

На этой странице описываются параметры, которые находятся на вкладке Создание кода HDL > Глобальные настройки > Порты диалогового окна Параметры конфигурации.

Минимизация включения часов

Исключите генерацию логики включения синхронизации для односкоростных конструкций.

Настройки

По умолчанию: Откл.

На

Для односкоростных моделей исключите генерацию логики включения синхронизации, где это возможно. Следующий пример кода VHDL ® не определяет и не проверяет сигнал включения синхронизации. При наличии синхросигнала (clk) поднимается, выводится текущее значение сигнала.

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      Unit_Delay_out1 <= In1_signed;
    END IF;
  END PROCESS Unit_Delay_process;
Прочь

Создайте логику включения синхронизации. Следующее извлечение кода VHDL представляет собой регистр с включенным синхросигналом (enb)

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        Unit_Delay_out1 <= In1_signed;
      END IF;
    END IF;
  END PROCESS Unit_Delay_process;

Исключения

В некоторых случаях HDL Coder™ выдает тактовый сигнал, даже если выбран параметр Минимизировать тактовый сигнал. Это следующие случаи:

  • Регистрируется в подсистемах Enabled, State-Enabled и Triggered.

  • Многоскоростные модели.

  • Кодер всегда выдает тактовый сигнал для следующих блоков:

    • commseqgen2/PN Генератор последовательностей

    • dspsigops/NCO

      Примечание

      Поддержка HDL для блока NCO будет удалена в следующем выпуске. Вместо этого используйте блок NCO HDL Optimized.

    • dspsrcs4/Sine Волна

    • hdldemolib/HDL БПФ

    • встроенный/Фир

    • dspmlti4/CIC Прореживание

    • dspmlti4/CIC Интерполяция

    • dspmlti4/FIR Прореживание

    • dspmlti4/FIR Интерполяция

    • dspadpt3/LMS Фильтр

    • dsparch4/Biquad Фильтр

Примечание

Если в проекте используется блок ОЗУ, например двухскоростная двухпортовая ОЗУ с архитектурой ОЗУ, установленной на Generic RAM without Clock Enableгенератор кода игнорирует параметр Minimize clock enables.

Информация командной строки

Свойство: MinimizeClockEnables
Текст: символьный вектор
Значение: 'on' | 'off'
По умолчанию: 'off'

Чтобы задать это свойство, используйте hdlset_param или makehdl. Для просмотра значения свойства используйте hdlget_param.

Например, чтобы минимизировать сигналы Clock Enable при генерации кода HDL для symmetric_fir подсистема внутри sfir_fixed используйте любой из этих методов.

  • Передать свойство в качестве аргумента makehdl функция.

    makehdl('sfir_fixed/symmetric_fir', ... 
            'MinimizeClockEnables','on')
  • При использовании hdlset_param, можно задать параметр в модели, а затем создать код HDL с помощью makehdl.

    hdlset_param('sfir_fixed','MinimizeClockEnables','on')
    makehdl('sfir_fixed/symmetric_fir')

Минимизация глобальных сбросов

Пропустите генерацию логики сброса в коде HDL.

Настройки

По умолчанию: Откл.

На

Если этот параметр включен, генератор кода пытается свернуть или удалить логику глобального сброса из кода HDL. Этот фрагмент кода соответствует коду Verilog, сгенерированному для блока задержки в модели Simulink ®. Фрагмент кода показывает, что кодер HDL удалил логику сброса.

 always @(posedge clk)
    begin : Delay_Synchronous_process
      if (enb) begin
        Delay_Synchronous_out1 <= DataIn;
      end
    end
Прочь

При отключении этого параметра кодер HDL генерирует логику глобального сброса в коде HDL. Этот фрагмент кода Verilog показывает логику сброса, сформированную для блока задержки.

  always @(posedge clk or posedge reset)
    begin : Delay_Synchronous_process
      if (reset == 1'b1) begin
        Delay_Synchronous_out1 <= 1'b0;
      end
      else begin
        if (enb) begin
          Delay_Synchronous_out1 <= DataIn;
        end
      end
    end

Зависимость

При выборе параметра Минимизировать глобальные сброса сгенерированный код HDL содержит регистры, не имеющие порта сброса. Если эти регистры не инициализированы, в результатах моделирования ЛПВП могут возникнуть возможные числовые несоответствия. Чтобы избежать несовпадений моделирования, можно инициализировать регистры с помощью настройки инициализации Без сброса регистров.

По умолчанию параметр инициализации регистров без сброса имеет значение Generate initialization inside module, что означает, что генератор кода инициализирует регистры как часть кода HDL, сгенерированного для DUT. Чтобы инициализировать регистры с помощью сценария, установите для параметра No-reset regists initialization значение Generate an external script. Необходимо использовать нулевое начальное значение для блоков в модели Simulink.

Исключения

Иногда при выборе опции Минимизировать глобальные сброса (Minimize global resets) кодер HDL генерирует логику сброса, если имеется:

  • Блоки с состоянием, имеющими ненулевое начальное значение, например блок задержки с ненулевым начальным условием.

  • Перечислимые типы данных для блоков с состоянием.

  • Блоки подсистем с BlackBox Архитектура HDL, в которой запрашивается сигнал сброса.

  • Многоскоростные модели с архитектурой контроллера синхронизации default.

    Если для архитектуры контроллера синхронизации установлено значение resettableКодер HDL генерирует порт сброса для контроллера синхронизации. Если для параметра Минимизировать сигналы глобального сброса установлено значение 'on'генератор кода удаляет этот порт сброса.

  • Таблица правды

  • Диаграмма

  • Функциональный блок MATLAB

Информация командной строки

Свойство: MinimizeGlobalResets
Текст: символьный вектор
Значение: 'on' | 'off'
По умолчанию: 'off'

Чтобы задать это свойство, используйте hdlset_param или makehdl. Для просмотра значения свойства используйте hdlget_param.

Например, чтобы минимизировать сигналы глобального сброса при генерации кода HDL для symmetric_fir подсистема внутри sfir_fixed используйте любой из этих методов.

  • Передать свойство в качестве аргумента makehdl функция.

    makehdl('sfir_fixed/symmetric_fir', ... 
            'MinimizeGlobalResets','on')
  • При использовании hdlset_param, можно задать параметр в модели, а затем создать код HDL с помощью makehdl.

    hdlset_param('sfir_fixed','MinimizeGlobalResets','on')
    makehdl('sfir_fixed/symmetric_fir')