Выбор выходного сигнала на основе управляющего сигнала
Одновременная маршрутизация/маршрутизация сигналов
Кодер HDL/маршрутизация сигналов
Блок мультипортового коммутатора определяет, какой из нескольких входов блока передается на выход. Блок основывает это решение на значении первого входного сигнала. Первый вход является управляющим входом, а остальные входы являются входами данных. Значение управляющего входа определяет, какие данные поступают на выход.
Таблица суммирует, как блок интерпретирует управляющий ввод и определяет ввод данных, который передается на вывод.
| Управляющий вход | Усечение | Настройка порядка портов данных | Поведение блоков во время моделирования | |
|---|---|---|---|---|
| Индексирование для выбора входных данных | Состояние вне диапазона | |||
Целочисленное значение | Ничего | Zero-based contiguous | Индексация на основе нуля | Управляющий вход меньше |
One-based contiguous | Однонаправленное индексирование | Управляющий вход меньше | ||
Specify indices | Указываемые индексы | Управляющий вход не соответствует ни одному указанному индексу порта данных. | ||
Не целое значение | Блок усекает значение до целого числа путем округления до нуля. | Zero-based contiguous | Индексация на основе нуля | Усеченный управляющий вход меньше |
One-based contiguous | Однонаправленное индексирование | Усеченный управляющий вход меньше | ||
Specify indices | Указываемые индексы | Усеченный управляющий вход не соответствует ни одному указанному индексу порта данных. | ||
Сведения о том, как блок обрабатывает состояние вне диапазона, см. в разделе Как блок обрабатывает вход управления вне диапазона.
Вектор индекса - это специальная конфигурация блока мультипортового коммутатора, в которой указывается один вход данных, а управляющий вход основан на нуле. Блочный выход - это элемент входного вектора, индекс которого совпадает с управляющим входом. Например, если входной вектор [18 15 17 10] и управляющий вход 3, элемент, соответствующий индексу 3 (на основе нуля), равен 10 и становится выходным значением.
Чтобы настроить блок мультипортового коммутатора на работу в качестве блока вектора индекса, установите для параметра Количество портов данных значение 1 и порядок портов данных в Zero-based contiguous.
Для ввода с целочисленным значением меньше intmax(‘int32’), вход выходит за пределы диапазона, если значение не соответствует ни одному индексу порта данных. Для управляющего входа, который не является целым значением, вход выходит за пределы диапазона, когда усеченное значение не соответствует ни одному индексу порта данных. В обоих случаях поведение блока зависит от настроек Порт данных для случая по умолчанию и Диагностика для случая по умолчанию.
Примечание
Если управляющий вход больше intmax(‘int32’)блок переносит входное значение в целое число.
Следующее поведение относится только к моделированию модели.
| Порт данных для варианта по умолчанию | Диагностика для случая по умолчанию | ||
|---|---|---|---|
| Ничего | Предупреждение | Ошибка | |
|
|
Используйте последний порт данных и не сообщайте о каких-либо предупреждениях или ошибках. |
Используйте последний порт данных и сообщите предупреждение. |
Сообщение об ошибке и остановка моделирования. |
|
|
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Сообщение об ошибке и остановка моделирования. |
Следующее поведение относится к созданию кода для модели.
| Порт данных для варианта по умолчанию | Диагностика для случая по умолчанию | ||
|---|---|---|---|
| Ничего | Предупреждение | Ошибка | |
|
|
Используйте последний порт данных. |
Используйте последний порт данных. |
Используйте последний порт данных. |
|
|
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Если два сигнала имеют разное количество размеров или разную длину размеров, можно использовать сигналы в качестве входных данных для блока мультипортового коммутатора. В диалоговом окне блока выберите параметр Разрешить различные размеры ввода данных. В этом случае выходной сигнал блока является сигналом переменного размера. Если этот параметр не выбран, блок генерирует ошибку.
Дополнительные сведения о параметре см. в разделе Разрешение различных размеров ввода данных (результаты в выходном сигнале переменного размера). Дополнительные сведения о сигналах переменного размера см. в разделе Основы сигналов переменного размера.
Количество входов данных задается с помощью параметра Количество портов данных.
Если для параметра Количество портов данных задано значение 1, блок будет работать как селектор индекса или вектор индекса, а не как мультипортовый коммутатор. Дополнительные сведения см. в разделе Многопортовый коммутатор, настроенный как блок вектора индекса.
Если для параметра Number of data ports установлено целое число больше 1, блок будет работать как многопортовый коммутатор. Блочный выход является входом данных, который соответствует значению управляющего входа. Если, по меньшей мере, один из входных данных является вектором, то блочный выход является вектором. В этом случае блок расширяет скалярные входы до векторов.
Если все входные данные являются скалярными, то выходные данные являются скалярными.
Если порт управления в блоке мультипортового коммутатора имеет перечисленный тип, следуйте следующим инструкциям:
| Сценарий | Что делать | Объяснение |
|---|---|---|
|
Перечисляемый тип содержит значение, представляющее недопустимые, неинициализированные значения или значения вне допустимого диапазона. |
|
Эта конфигурация блока обрабатывает недопустимые значения, которые явно представляет перечисляемый тип. |
|
Перечисляемый тип содержит только допустимые перечисляемые значения. Однако порт ввода данных может получить недопустимые значения перечисляемого типа. |
|
Эта конфигурация блока обрабатывает недопустимые значения, которые перечисляемый тип явно не представляет. |
|
Перечисляемый тип содержит только допустимые перечисляемые значения. Порты ввода данных не могут получить недопустимые значения перечисляемого типа. |
|
Такая конфигурация блока позволяет избежать ненужных диагностических действий. |
|
Блок не имеет порта ввода данных для каждого значения перечисляемого типа. |
|
Эта конфигурация блока обрабатывает перечисляемые значения, не имеющие порта ввода данных, а также недопустимые значения. |
Если входные данные блока многопортового коммутатора являются шинами, имена элементов обеих шин должны быть одинаковыми. Использование одинаковых имен элементов гарантирует, что выходная шина будет иметь одинаковые имена элементов независимо от того, какую входную шину выберет блок. Чтобы убедиться, что модель соответствует этому требованию, используйте объект шины для определения шин и установите диагностику несоответствия имен элементов в значение error. Дополнительные сведения см. в разделе Обзор диагностики подключения.
Для массивов шин в поле Number of data ports должно быть установлено значение 2 или больше.
Типы данных |
|
Прямой проход |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулей |
|