Минимизируйте часы, включает и сигналы сброса

Минимизируйте часы, включает

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

Настройки

Значение по умолчанию: 'off'

На

Для односкоростных моделей не используйте генерацию часов, включают логику по мере возможности. Следующий пример кода 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;
'off'

Сгенерируйте часы, включают логику. Следующее извлечение 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™ испускает часы, включает, даже когда Minimize clock enables выбран. Эти случаи:

  • Регистры внутри Enabled, и Инициированные подсистемы состояния поддерживающие.

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

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

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

    • dspsigops/NCO

      Примечание

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

    • Волна dspsrcs4/Sine

    • БПФ hdldemolib/HDL

    • built-in/DiscreteFir

    • Десятикратное уменьшение dspmlti4/CIC

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

    • Десятикратное уменьшение dspmlti4/FIR

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

    • Фильтр dspadpt3/LMS

    • Фильтр dsparch4/Biquad

Примечание

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

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

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

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

Например, чтобы минимизировать Часы Включают сигналы, когда вы генерируете 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-коде.

Настройки

Значение по умолчанию: 'off'

На

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

 always @(posedge clk)
    begin : Delay_Synchronous_process
      if (enb) begin
        Delay_Synchronous_out1 <= DataIn;
      end
    end
'off'

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

  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

Зависимость

Если вы выбираете Minimize global resets, сгенерированный HDL-код содержит регистры, которые не имеют порта сброса. Если вы не инициализируете эти регистры, в результатах симуляции HDL могут быть потенциальные числовые несоответствия. Чтобы избежать несоответствий симуляции, можно инициализировать регистры при помощи установки инициализации регистров без сброса.

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

Исключения

Иногда, когда вы выбираете Minimize global resets, HDL Coder генерирует логику сброса, если вы имеете:

  • Блоки с состоянием, которые имеют ненулевое начальное значение, такое как блок Delay с ненулевым Initial Condition.

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

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

  • Многоскоростные модели с набором Timing controller architecture к default.

    Если вы устанавливаете Timing controller architecture на resettable, HDL Coder генерирует порт сброса для контроллера синхронизации. Если вы устанавливаете Minimize global reset signals на 'on', генератор кода удаляет этот порт сброса.

  • Таблица истинности

  • График

  • Блок MATLAB function

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

Свойство: 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')