Используя инициированные подсистемы для генерации 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.

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

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

  • Типом данных триггерного сигнала является любой boolean или ufix1.

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

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

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

  • Если 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 выбрана.