Используя триггируемые подсистемы для генерации HDL-кода

Блок Triggered Subsystem является блоком Subsystem, который выполняется каждый раз, когда управляющий сигнал имеет триггерное значение. Чтобы узнать больше о блоке, смотрите Triggered Subsystem.

Лучшые практики

При использовании триггируемых подсистем в моделях, предназначенных для генерации HDL-кода, рассмотрите следующее:

  • Для результатов синтеза совпадать с результатами Simulink®, управляйте триггерным портом с зарегистрированной логикой (с синхронными часами) на FPGA.

  • Это - хорошая практика, чтобы поместить единичные задержки на выходные сигналы Триггируемой подсистемы. Выполнение так препятствует тому, чтобы генератор кода вставил дополнительные обходные регистры в HDL-код.

  • Использование триггируемых подсистем может влиять на результаты синтеза следующими способами:

    • В некоторых случаях скорость системных часов может понизиться небольшим процентом.

    • Сгенерированный код использует больше ресурсов, масштабирующихся с количеством экземпляров триггируемой подсистемы и количеством выходных портов на подсистему.

Используя блок Signal Builder

Когда вы соединяете выходные параметры от блока Signal Builder до триггируемой подсистемы, вы можете должны быть использовать блок Rate Transition. Запускать все порты триггируемой подсистемы на том же уровне:

  • Если триггерный источник является блоком Signal Builder, но другие входные параметры триггируемой подсистемы прибывают из других источников, вставляют блок Rate Transition в путь прохождения сигнала, прежде чем триггер ввел.

  • Если все входные параметры (включая триггер) прибывают из блока Signal Builder, у них есть тот же уровень, таким образом, специальное действие не требуется.

Используя триггер как часы

Используя триггер, когда часы в триггируемых подсистемах позволяют вам разделить свой проект в различные области часов в сгенерированном коде. Убедитесь, что установка Clock edge в диалоговом окне Configuration Parameters совпадает с Trigger type блока Trigger в триггируемой подсистеме.

Например, можно смоделировать:

  • Проект с часами, которые запускаются на том же уровне, но несовпадающий по фазе.

  • Синхронизируйте области, управляемые внешним или внутренним делителем часов.

  • Синхронизируйте области, управляемые часами, уровни которых не являются целочисленными множителями друг друга.

  • Внутренне сгенерированные часы.

  • Синхронизируйте пропускание для проекта малой мощности.

Примечание

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

Требования

Когда вы используете триггер в качестве часов в триггируемых подсистемах, каждый сигнал данных о вводе или выводе триггируемой подсистемы должен иметь задержки сразу снаружи и сразу в подсистеме. Эти задержки действуют как интерфейс синхронизации между областями, запускающимися на различных уровнях.

Задайте триггер как часы

  • Во вкладке HDL Code Generation> Global Settings> Optimization выберите Use trigger signal as clock.

  • Установите TriggerAsClock использование свойства makehdl или hdlset_param. Например, чтобы сгенерировать HDL-код, который использует триггерный сигнал в качестве часов для триггируемых подсистем в подсистеме DUT, myDUT, в модели, myModel, Введите:

    makehdl ('myModel/myDUT','TriggerAsClock','on')

Ограничения

HDL Coder™ поддерживает генерацию HDL-кода для триггируемых подсистем, которые отвечают следующим условиям:

  • Триггируемая подсистема не является DUT.

  • Подсистема и не инициирована и включена.

  • Триггерный сигнал является скаляром.

  • Выходные параметры триггируемой подсистемы имеют начальное значение 0.

  • Все вводы и выводы триггируемой подсистемы (включая триггерный сигнал) запускаются на том же уровне.

  • Параметр Show output port блока Trigger устанавливается на Off.

  • Флажок Latch input by delaying outside signal не является выбранным On блока Inport в Triggered Subsystem.

  • Если DUT содержит следующие блоки, RAMArchitecture установлен в WithClockEnable:

    • Двухпортовый RAM

    • Простой двухпортовый RAM

    • Один порт RAM

  • Триггируемая подсистема не содержит следующие блоки:

    • Discrete-Time Integrator

    • CIC Decimation

    • CIC Interpolation

    • FIR Decimation

    • FIR Interpolation

    • Downsample

    • Upsample

    • HDL Cosimulation блокируется для HDL Verifier™

    • Rate Transition

    • Pixel Stream FIFO (Vision HDL Toolbox™)

    • PN Sequence Generator, если опция Use trigger signal as clock выбрана.