exponenta event banner

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

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

Передовые практики

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Конструкция с часами, которые работают с той же скоростью, но не в фазе.

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

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

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

  • Стробирование синхросигналов для маломощной конструкции.

Примечание

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

Требования

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

Укажите триггер как тактовый сигнал

  • В меню 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.

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

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

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

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

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

    • Интегратор дискретного времени

    • Децимация CIC

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

    • Децимация РПИ

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

    • Субдискретизировать

    • Сверхдискретизировать

    • Блоки косимуляции ЛПВП для ЛПВП Verifier™

    • Переход ставки

    • Пиксельный поток FIFO (Vision HDL Toolbox™)

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