exponenta event banner

Использование различных типов подсистем

Ниже приведены инструкции по использованию различных типов подсистем в проекте и иерархическому моделированию алгоритма. Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.

Виртуальная подсистема: использование в качестве DUT

Идентификатор руководства

2.4.1

Серьезность

Очень рекомендуем

Описание

Виртуальная подсистема - это подсистема, которая не является условно выполняемой подсистемой или атомной подсистемой. По умолчанию обычный блок подсистемы, добавляемый к модели Simulink ®, является виртуальной подсистемой. Невиртуальные типы подсистем включают атомарную подсистему, ссылку на модель, исполнительную подсистему и исполнительную модель. Об этих типах подсистем можно узнать из предыдущих разделов.

Чтобы определить, является ли подсистема виртуальной, можно использовать get_param функция с параметром IsSubsystemVirtual. Например:

get_param('sfir_fixed/symmetric_fir', 'IsSubsystemVirtual')

Атомарные и виртуальные подсистемы: создание повторно используемых файлов HDL

Идентификатор руководства

2.4.2

Серьезность

Рекомендуется

Описание

DUT можно указать как атомарную подсистему. Чтобы задать подсистему как атомарную подсистему, в диалоговом окне «Параметры блока» этой подсистемы выберите «Считать атомной единицей».

Используйте атомарные и виртуальные подсистемы для создания одного файла HDL для идентичных экземпляров подсистем, используемых на более низких уровнях иерархии. Дополнительные сведения см. в разделе Создание многоразового кода для подсистем.

Чтобы разрешить совместное использование ресурсов в подсистеме, укажите все подсистемы, которые необходимо совместно использовать в качестве подсистем. Дополнительные сведения см. в разделе Общие соображения по совместному использованию подсистем.

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

Идентификатор руководства

2.4.3

Серьезность

Обязательный

Описание

Блок Variant Subsystem, Variant Model является шаблоном, предварительно настроенным для того, чтобы содержать два блока Subsystem для использования в качестве вариантов Variant Subsystem. Во время моделирования элемент управления вариантом решает, какой из двух блоков подсистемы активен. Поэтому можно использовать Исполнительную подсистему (Variant Subsystem) для создания двух различных конфигураций или вариантов поведения подсистемы, а затем указать активную конфигурацию во время моделирования.

  • В качестве DUT нельзя использовать исполнительную подсистему. Чтобы создать код, поместите исполнительную подсистему в подсистему, которую требуется использовать в качестве DUT. Имя файла и имя экземпляра созданного кода уникальны для активной конфигурации, выбранной во время создания кода.

  • Использование оптимизации исполнительной подсистемы не позволяет совместно использовать несколько блоков исполнительной подсистемы.

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

Например, откройте модель. hdlcoder_variant_subsystem_design.slx. Если открыть подсистему DUT, появится блок подсистемы вариантов, Divide. Variant Subsystem имеет две различные подсистемы, Recip и Op. При открытии диалогового окна «Параметры блока» для Divide Subsystem (Подсистема) - выражение элемента управления Variant и условие, определяющее подсистему, которую следует включить во время моделирования. В этом случае Recip является 1, и Recip Подсистема становится активной во время моделирования.

load_system('hdlcoder_variant_subsystem_design')
set_param('hdlcoder_variant_subsystem_design','SimulationCommand','Update')
open_system('hdlcoder_variant_subsystem_design/DUT/Divide')
variantRecip =

Simulink.Variant
    Condition: 'Recip == 1'


variantOp =

Simulink.Variant
    Condition: 'Recip == 0'


Recip =

     1

Чтобы создать код HDL, выполните следующую команду:

makehdl('hdlcoder_variant_subsystem_design/DUT')

Файл HDL с именем Recip.vhd генерируется, потому что код генерируется для Recip Подсистема, которая активна во время генерации кода.

Ссылки на модель: Построение проекта модели с использованием меньших секций

Идентификатор руководства

2.4.4

Серьезность

Рекомендуется

Описание

Иерархическое моделирование большой конструкции может увеличить время генерации кода. Если указать создание отчетов, таких как отчет об отслеживании, время создания кода может значительно увеличиться. Во избежание таких проблем с производительностью рекомендуется разбить проект на разделы меньшего размера. Блок «Модель» используется для унификации модели, состоящей из меньших секций. Это также позволяет создавать инкрементный код. Можно создать код HDL для родительской модели или ссылочной модели. Для просмотра сгенерированного кода HDL в hdlsrc для родительской модели создается папка с отдельной подпапкой для ссылочной модели.

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

Например, откройте модель. hdlcoder_divide_parentmodel.slx. Дважды щелкнув подсистему DUT, можно увидеть блок модели, который ссылается на модель. hdlcoder_divide_referencedmodel.

load_system('hdlcoder_divide_parentmodel')
set_param('hdlcoder_divide_parentmodel', 'SimulationCommand', 'Update')
open_system('hdlcoder_divide_parentmodel/DUT')

Для просмотра ссылочной модели дважды щелкните блок «Модель»:

open_system('hdlcoder_divide_parentmodel/DUT/Model')

Для создания кода HDL введите следующую команду:

makehdl('hdlcoder_divide_parentmodel/DUT')

Дополнительные сведения см. в разделе Ссылка на модель для создания кода HDL.

Параметры блокировки включенных и запускаемых подсистем

Идентификатор руководства

2.4.5

Серьезность

Обязательный

Описание

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

  • Не используйте блок триггерной подсистемы в качестве DUT. Поместите запускаемую подсистему в другой блок подсистемы и используйте эту подсистему в качестве DUT.

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

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

  • Убедитесь, что параметр Use trigger signal as clock (Использовать триггерный сигнал в качестве тактового сигнала) не приводит к несоответствиям синхронизации при моделировании тестовых инструментов для проверки сгенерированного кода. Дополнительные сведения см. в разделе Использование инициированных подсистем для генерации кода HDL.

Другие настройки при конфигурировании блока «Triggered Subsystem» для генерации кода HDL см. в разделе «Создание кода HDL» на странице «Triggered Subsystem».

Подсистема Enabled - это подсистема, принимающая управляющий сигнал через блок Enable. Включенная подсистема выполняется на каждом этапе моделирования, где управляющий сигнал имеет положительное значение. При создании кода HDL для включенной подсистемы:

  • Не используйте блок включенной подсистемы в качестве DUT. Поместите включенную подсистему в другой блок подсистемы и используйте эту подсистему в качестве DUT.

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

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

  • Можно добавить блок управления состоянием в Synchronous в включенной подсистеме. Блок управления состоянием преобразует блок включенной подсистемы в блок включенной синхронной подсистемы. Этот блок генерирует более эффективный и удобный для оборудования HDL-код. Дополнительные сведения см. в разделе Поведение синхронной подсистемы с блоком управления состоянием.

Другие настройки при настройке блока Enabled Subsystem для генерации кода HDL см. в разделе Создание кода HDL на странице Enabled Subsystem.

См. также

Функции

Параметры конфигурации Simulink

Связанные примеры

Подробнее