Используйте сигналы шины улучшить удобочитаемость модели и сгенерировать HDL-код

Можно следовать этим инструкциям, чтобы узнать о сигналах шины, как смоделировать проект при помощи этих сигналов и сгенерировать HDL-код.

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

ID инструкции

1.3.3

Серьезность

Информативный

Описание

Когда использовать шины?

Если ваш DUT или другие блоки в вашей модели имеют много сигналов ввода или вывода, можно создать сигналы шины улучшить удобочитаемость модели. Сигнал шины или шина являются составным сигналом, который состоит из других сигналов, которые называются элементами. Сигнал шины может иметь структуру различных типов данных или векторного сигнала с совпадающими типами данных. Если все сигналы имеют совпадающий тип данных, вы обычно используете Мультиплексор. Составляющие сигналы или элементы шины могут быть:

  • Смешанные сигналы типа данных такой как дважды, целое число и фиксированная точка

  • Смешанные скалярные и векторные элементы

  • Смешанные действительные и комплексные сигналы

  • Другие шины вкладываются к любому уровню

  • Многомерные сигналы

Поддержка HDL Coder™ шин

Можно сгенерировать HDL-код для проектов, которые имеют:

  • Порты подсистемы DUT соединяются с шинами.

  • Simulink™ и блоки Stateflow™ поддержаны для генерации HDL-кода.

HDL Coder поддерживает генерацию кода для способных к шине блоков в библиотеке блоков HDL Coder. Способные к шине блоки являются блоками, которые могут принять сигналы шины, как введено и произвести сигналы шины как выходные параметры. Для списка способных к шине блоков, которые поддерживает Simulink, смотрите Способные к шине Блоки.

Смотрите и Поддержку типов данных Сигнала для блоков, которые поддерживают генерацию HDL-кода с шинами.

Создайте сигналы шины

Можно создать сигналы шины при помощи блоков Создателя Шины. Блок Bus Creator присваивает имя к каждому сигналу, что он создает. Можно затем обратиться к сигналам по наименованию, когда вы ищете их источники.

Для примера, который иллюстрирует, как смоделировать с шинами, открыть hdlcoder_bus_nested.slx. Дважды кликните Подсистему HDL_DUT.

load_system('hdlcoder_bus_nested')
set_param('hdlcoder_bus_nested','SimulationCommand','Update')
open_system('hdlcoder_bus_nested/HDL_DUT')

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

Шины вложенного множества

Вы видите другой блок Bus Creator, который комбинирует эти два сигнала шины. Когда одни или несколько входных параметров к блоку Bus Creator являются шиной, вывод является вложенной шиной.

Блок Bus Creator генерирует имена для сигналов шины, соответствующие входные параметры которых не имеют имен. Имена находятся в форме signaln, где n является количеством порта подключения входного сигнала к. Например, если вы открываете диалоговое окно Block Parameters для второго блока Bus Creator, вы видите Сигналы в шине как signal1 и Param_sin.

См. также Шины Вложенного множества.

Присвойте значения сигналов, чтобы соединить шиной

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

Например, откройте модель hdlcoder_bus_nested_assignment.

load_system('hdlcoder_bus_nested_assignment')
set_param('hdlcoder_bus_nested_assignment','SimulationCommand','Update')
open_system('hdlcoder_bus_nested_assignment/HDL_DUT')

В модели вы видите блок Bus Assignment, который присваивает значение 5 сигналу data1_En в шине.

Выберите Bus Outputs

Чтобы извлечь сигналы от шины, которая включает вложенные шины, используйте блоки Селектора Шины. По умолчанию блок выводит элементы шины specifed как отдельные сигналы. Можно также вывести сигналы как другую шину. Можно использовать свойство блока OutputSignals видеть Сигналы в шине что блок выходные параметры. При помощи этого свойства можно отследить, какие сигналы вводят блок Селектора Шины глубоко в иерархии модели.

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 для блока Delay, который берет два вложенных сигнала шины signal1 и Param_sin, вы видите четыре всегда блоки процесса, созданные для каждого сигнала в шине. Например, вы видите всегда блок для сигнала data1_En, который является частью signal1. Эта фигура отображает скалярные сигналы, созданные для каждого сигнала шины в определении модуля.

Упростите интерфейсы шины подсистемы

Можно упростить интерфейсы шины Подсистемы при помощи блоков Элемента Шины. В Элементе Шины и блоки Элемента Шины обеспечивают упрощенный и гибкий способ использовать сигналы шины в качестве вводов и выводов к подсистемам. Блок In Bus Element эквивалентен блоку Inport, объединенному с блоком Селектора Шины. Блок Out Bus Element эквивалентен блоку Outport, объединенному с блоком Bus Creator. К refacrot существующая модель, которая использует Inport, Селектор Шины, Создателя Шины и блоки Выходного порта, чтобы использовать В Элементе Шины и блоках Элемента Шины, можно использовать Редактор Simulink® строки меню.

Например, откройте модель hdlcoder_bus_nested_simplified. Эта модель функционально эквивалентна модели hdlcoder_bus_nested, но является более упрощенной версией.

load_system('hdlcoder_bus_nested_simplified')
set_param('hdlcoder_bus_nested_simplified','SimulationCommand','Update')
open_system('hdlcoder_bus_nested_simplified/HDL_DUT')

Модель имеет две Подсистемы, которые выполняют создание шины и соединяют шиной выбор при помощи блоков Элемента Шины. Bus_Creator_Subsystem комбинирует блоки Выходного порта с блоками Создателя Шины, чтобы создать блоки Элемента Шины.

open_system('hdlcoder_bus_nested_simplified/HDL_DUT/Bus_Creator_Subsystem')

Bus_Selection_Subsystem комбинирует блоки Inport с блоками Селектора Шины, чтобы создать В блоках Элемента Шины.

open_system('hdlcoder_bus_nested_simplified/HDL_DUT/Bus_Selection_Subsystem')

Чтобы узнать больше, смотрите, Упрощают Интерфейсы шины Подсистемы.

Виртуальные и невиртуальные шины

Сигналы шины в модели hdlcoder_bus_nested, созданной ранее при помощи блоков Селектора Создателя и Шины Шины, являются виртуальными шинами. Каждый сигнал элемента шины хранится в памяти, но сигнал шины не хранится. Шина simplies график, но не имеет никакого функционального эффекта. В сгенерированном HDL-коде вы видите составляющие сигналы, но не сигнал шины.

Чтобы более легко отследить соответствие между сигналом шины в модели и сгенерированным HDL-кодом, используйте невиртуальные шины. Невиртуальные шины генерируют чистый HDL-код, потому что он использует структуру, чтобы содержать сигналы шины. Чтобы преобразовать виртуальную шину в невиртуальную шину, в Параметрах блоков блоков Создателя Шины, вы задаете тип Выходных данных, когда Bus: object_name, заменяя object_name на имя шины возражает и затем выбирает Output как невиртуальную шину.

Массив шин

Массив шин является массивом, элементы которого являются шинами. Каждый элемент в массиве шин должен быть невиртуальным и должен иметь совпадающий тип данных.

Чтобы узнать больше о моделировании с массивом шин, смотрите Генерирующийся HDL-код для Подсистем с Массивом Шин.

Смотрите также

Функции

Похожие темы