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

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

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

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

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

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

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

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

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

Использование блока Signal Builder

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

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

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

Использование триггера в качестве часов

Использование триггера в качестве синхроимпульса в триггируемых подсистемах позволяет вам разбить ваш проект на различные тактовые области в сгенерированном коде. Убедитесь, что значение Clock edge в диалоговом окне Параметров конфигурации соответствует 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 не установлен на блоке Inport внутри Triggered Subsystem.

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

    • Двухпортовая ОЗУ

    • Простая двухпортовая оперативная память

    • Однопортовая ОЗУ

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

    • 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.