Для получения информации о сигналах шины, моделировании конструкции с помощью этих сигналов и генерации кода HDL можно следовать приведенным ниже инструкциям. Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.
1.3.3
Информативный
Когда использовать шины?
Если DUT или другие блоки в модели имеют много входных или выходных сигналов, можно создать сигналы шины для улучшения читаемости модели. Сигнал шины или шина - это составной сигнал, который состоит из других сигналов, называемых элементами. Сигнал шины может иметь структуру различных типов данных или векторный сигнал с одинаковыми типами данных. Если все сигналы имеют одинаковый тип данных, обычно используется блок Mux. Составляющими сигналами или элементами шины могут быть:
Смешанные сигналы типа данных, такие как двойные, целочисленные и фиксированные
Смешанные скалярные и векторные элементы
Смешанные реальные и сложные сигналы
Другие автобусы, вложенные в любой уровень
Многомерные сигналы
Поддержка HDL Coder™ для автобусов
Можно создать код HDL для проектов, имеющих:
Порты подсистемы DUT, подключенные к шинам.
Блоки Simulink ® и Stateflow ® поддерживаются для генерации кода HDL.
Кодер HDL поддерживает генерацию кода для блоков с поддержкой шины в библиотеке блоков кодера HDL. Блоки с поддержкой шины представляют собой блоки, которые могут принимать сигналы шины в качестве входных сигналов и создавать сигналы шины в качестве выходных сигналов. Список блоков с поддержкой шины, поддерживаемых Simulink, см. в разделе Блоки с поддержкой шины.
Для получения информации о блоках, поддерживающих генерацию кода HDL с шинами, см. раздел Поддержка сигналов и типов данных.
Создание сигналов шины
Сигналы шины можно создавать с помощью блоков Bus Creator. Блок Bus Creator присваивает имя каждому создаваемому сигналу. При поиске их источников можно ссылаться на сигналы по имени.
Для примера, иллюстрирующего моделирование с помощью автобусов, откройте hdlcoder_bus_nested.slx. Дважды щелкните значок HDL_DUT Подсистема.
open_system('hdlcoder_bus_nested') set_param('hdlcoder_bus_nested','SimulationCommand','Update') open_system('hdlcoder_bus_nested/HDL_DUT')

В этой модели блоки Bus Creator создают два сигнала шины. Один сигнал шины содержит data1_En и CounterForParam сигналы. Сигнал другой шины содержит Param и sin сигналы. По умолчанию каждый сигнал на шине наследует имя сигнала, подключенного к шине. На этом рисунке показаны элементы в параметре блока шины для блока Bus Creator, который принимает входы. data1_En и CounterForParam.

Гнездовые автобусы
Вы видите другой блок Bus Creator, который объединяет эти два сигнала шины. Если одним или несколькими входами в блок Bus Creator является шина, то выходом является вложенная шина.
Блок Bus Creator генерирует имена для сигналов шины, соответствующие входы которых не имеют имен. Имена в форме signaln, где n - номер порта, к которому подключается входной сигнал. Например, если открыть диалоговое окно «Параметры блока» для второго блока Bus Creator, элементы в шине будут отображаться как signal1 и Param_sin.
Назначение значений сигналов шине
Чтобы изменить значения элементов шины, используйте блок назначения шины. Блок назначения шины используется для изменения значений элементов шины без добавления блоков выбора шины и создания шины, которые выбирают элементы шины и повторно собирают их в шину.
Например, откройте модель hdlcoder_bus_nested_assignment.
open_system('hdlcoder_bus_nested_assignment') set_param('hdlcoder_bus_nested_assignment','SimulationCommand','Update') open_system('hdlcoder_bus_nested_assignment/HDL_DUT')

В модели отображается блок назначения шины, который назначает значение 5 в data1_En сигнал в шине.
Выбор выходов шины
Чтобы извлечь сигналы из шины, включающей вложенные шины, используйте блоки выбора шины. По умолчанию блок выводит указанные элементы шины в виде отдельных сигналов. Вы также можете выводить сигналы в виде другой шины. OutputSignals свойство block для просмотра элементов в шине, выводимой блоком. С помощью этого свойства можно отслеживать, какие сигналы входят в блок выбора шины глубоко в иерархии модели.
get_param('hdlcoder_bus_nested/HDL_DUT/Bus Selector5', 'OutputSignals')
ans =
'signal1.data1_En,signal1.CounterForParam,Param_sin.Param,Param_sin.sin'
Создание кода HDL
Чтобы создать код HDL для этой модели, выполните следующую команду:
makehdl('hdlcoder_bus_nested/HDL_DUT')
Вы видите, что генератор кода расширяет сигналы шины до скалярных сигналов в сгенерированном коде. Например, если открыть созданный файл Verilog для HDL_DUT Подсистема для блока задержки, который принимает два вложенных сигнала шины signal1 и Param_sin, вы видите четыре всегда блока, созданных для каждого сигнала в шине. Например, вы видите всегда блок для data1_En сигнал, входящий в состав signal1. На этом рисунке показаны скалярные сигналы, созданные для каждого сигнала шины в определении модуля.

Упрощение интерфейсов шины подсистемы
Интерфейсы шины подсистемы можно упростить с помощью блоков элементов шины. Блоки In Bus Element и Out Bus Element обеспечивают упрощенный и гибкий способ использования сигналов шины в качестве входных и выходных сигналов подсистем. Блок In Bus Element эквивалентен блоку Inport, объединенному с блоком Bus Selector. Блок Out Bus Element эквивалентен блоку Outport, объединенному с блоком Bus Creator. Для преобразования существующей модели, в которой используются блоки «Inport», «Bus Selector», «Bus Creator» и «Outport» для использования блоков «In Bus Element» и «Out Bus Element», можно использовать панели действий редактора Simulink ® Editor.
Например, откройте модель hdlcoder_bus_nested_simplified. Эта модель функционально эквивалентна hdlcoder_bus_nested модель, но является более упрощенной версией.
open_system('hdlcoder_bus_nested_simplified') set_param('hdlcoder_bus_nested_simplified','SimulationCommand','Update') open_system('hdlcoder_bus_nested_simplified/HDL_DUT')

Модель имеет две подсистемы, которые выполняют создание шины и выбор шины с помощью блоков элементов шины. Bus_Creator_Subsystem объединяет блоки Outport с блоками Bus Creator для создания блоков Out Bus Element.
open_system('hdlcoder_bus_nested_simplified/HDL_DUT/Bus_Creator_Subsystem')

Bus_Selection_Subsystem объединяет блоки Inport с блоками Bus Selector для создания блоков In Bus Element.
open_system('hdlcoder_bus_nested_simplified/HDL_DUT/Bus_Selection_Subsystem')

Дополнительные сведения см. в разделе Упрощение интерфейсов подсистемы и модели с шинами.
Виртуальные и невиртуальные шины
Сигналы шины в модели hdlcoder_bus_nested созданные ранее с помощью блоков Bus Creator и Bus Selector являются виртуальными шинами. Каждый сигнал элемента шины сохраняется в памяти, но сигнал шины не сохраняется. Шина упрощает график, но не имеет функционального эффекта. В сгенерированном HDL-коде отображаются составляющие сигналы, но не сигнал шины.
Чтобы легче отслеживать соответствие между сигналом шины в модели и сгенерированным кодом HDL, используйте невиртуальные шины. Невиртуальные шины генерируют чистый код HDL, поскольку он использует структуру для хранения сигналов шины. Чтобы преобразовать виртуальную шину в невиртуальную, в разделе «Параметры блока» блоков Bus Creator необходимо указать тип данных Output как Bus: object_name заменой object_name с именем объекта шины, а затем выберите Вывод (Output) в качестве невиртуальной шины.
См. раздел Преобразование виртуальной шины в невиртуальную.
Массив шин
Массив шин - это массив, элементами которого являются шины. Каждый элемент в массиве шин должен быть невиртуальным и иметь один и тот же тип данных.
Дополнительные сведения о моделировании с использованием массива шин см. в разделе Создание кода HDL для подсистем с массивом шин.