Выберите выходной сигнал на основе управляющего сигнала
Simulink/Маршрутизация сигнала
HDL-кодер/сигнальная маршрутизация
Блок Multiport Switch определяет, какой из нескольких входов в блок переходит к выходу. Блок основывает это решение на значении первого входа. Первый вход является управляющим входом, а остальные входы являются входами данных. Значение входа управления определяет, какой вход данных переходит к выходу.
Таблица суммирует, как блок интерпретирует вход управления и определяет вход данных, который передается в выход.
Управляйте входом | Усечение | Настройка порядка портов данных | Поведение блоков во время симуляции | |
---|---|---|---|---|
Индексация для выбора входных данных | Условие вне области допустимого | |||
Целое число значения | Ничего | Zero-based contiguous | Нулевая индексация | Вход управления меньше |
One-based contiguous | Одноуровневая индексация | Вход управления меньше | ||
Specify indices | Индексы, которые вы задаете | Вход управления не соответствует ни одному указанному индексу порта данных. | ||
Не целочисленное значение | Блок обрезает значение до целого числа путем округления до нуля. | Zero-based contiguous | Нулевая индексация | Усеченный вход управления меньше |
One-based contiguous | Одноуровневая индексация | Усеченный вход управления меньше | ||
Specify indices | Индексы, которые вы задаете | Усеченный вход управления не соответствует ни одному указанному индексу порта данных. |
Для получения информации о том, как блок обрабатывает условие вне области допустимого, смотрите, Как блок обрабатывает вход управления вне области допустимого.
Index Vector является специальным строением блока Multiport Switch, в которой вы задаете один вход данных, и вход управления основан на нуле. Выход блока является элементом входного вектора, индекс которого соответствует входу управления. Для примера, если вектор входа [18 15 17 10]
и вход управления 3
элемент, который соответствует индексу 3 (на нуле), равен 10, и это становится выходом значением.
Чтобы сконфигурировать блок Multiport Switch для работы в качестве блока Index Vector, установите Number of data ports равным 1
и Data port order к Zero-based contiguous
.
Для входа с целым числом значения менее intmax(‘int32’)
вход находится вне области значений, если значение не соответствует никаким индексам портов данных. Для управляющего входа, который не является целым значением, вход находится вне области значений, когда усеченное значение не соответствует никаким индексам порта данных. В обоих случаях поведение блоков зависит от настроек для Data port for default case и Diagnostic for default case.
Примечание
Если вход управления больше intmax(‘int32’)
блок переносит вход значение в целое число.
Следующее поведение относится только к симуляции для вашей модели.
Порт данных для случая по умолчанию | Диагностика для случая по умолчанию | ||
---|---|---|---|
Ничего | Предупреждение | Ошибка | |
|
Используйте последний порт данных и не сообщайте никаких предупреждений или ошибок. |
Используйте последний порт данных и сообщите о предупреждении. |
Сообщите об ошибке и остановите симуляцию. |
|
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Сообщите об ошибке и остановите симуляцию. |
Следующее поведение относится к генерации кода для вашей модели.
Порт данных для случая по умолчанию | Диагностика для случая по умолчанию | ||
---|---|---|---|
Ничего | Предупреждение | Ошибка | |
|
Используйте последний порт данных. |
Используйте последний порт данных. |
Используйте последний порт данных. |
|
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Используйте дополнительный порт данных с |
Если два сигнала имеют разное количество размерностей или разных длин размерности, можно использовать сигналы как данные, входы к блоку Multiport Switch. В диалоговом окне блока выберите Allow different data input sizes параметра. В этом случае выход блока является сигналом переменного размера. Если вы не выбираете этот параметр, блок генерирует ошибку.
Для получения дополнительной информации о параметре, смотрите Разрешить различные размеры входных данных (Результаты в выходном сигнале переменного размера). Для получения дополнительной информации о сигналах переменного размера см. «Основы сигнала переменного размера».
Вы задаете количество входов данных с Number of data ports.
Если для Number of data ports задано значение 1, блок ведет себя как селектор индекса или вектор индекса, а не как мультипортовый переключатель. Для получения дополнительной информации смотрите Multiport Switch Configured as a Index Vector Block.
Если вы задаете Number of data ports целое число, больше 1, блок ведет себя как мультипортовый переключатель. Блок выхода является входом данных, которая соответствует значению входа управления. Если хотя бы один из входов данных является вектором, выход блока является вектором. В этом случае блок расширяет все скалярные входы до векторов.
Если все входы данных скаляры, выход является скаляром.
Когда порт управления на блоке Multiport Switch имеет перечисленный тип, следуйте следующим рекомендациям:
Сценарий | Что делать | Объяснение |
---|---|---|
Перечисленный тип содержит значение, которое представляет недопустимые, вне области допустимого или неинициализированные значения. |
|
Это строение блока обрабатывает недопустимые значения, которые явным образом представляет перечисленный тип. |
Перечисленный тип содержит только допустимые перечисленные значения. Однако входной порт данных может получить недопустимые значения перечисляемого типа. |
|
Это строение блока обрабатывает недопустимые значения, которые явным образом не представляют перечисляемый тип. |
Перечисленный тип содержит только допустимые перечисленные значения. Входные порты данных никогда не могут получить недопустимые значения перечисляемого типа. |
|
Это строение блока избегает ненужных диагностических действий. |
Блок не имеет входного порта данных для каждого значения перечисляемого типа. |
|
Это строение блока обрабатывает перечисленные значения, которые не имеют входного порта данных, вместе с недопустимыми значениями. |
Если входы данных в блок Multiport Switch являются шинами, имена элементов обеих шин должны быть одинаковыми. Использование тех же имен элементов гарантирует, что шина выхода имеет те же имена элементов независимо от того, какую входную шину выбирает блок. Чтобы убедиться, что ваша модель соответствует этому требованию, используйте объект шины, чтобы задать шины и установить диагностику Element name mismatch равной error
. Для получения дополнительной информации см. Обзор диагностики подключений.
Для массивов шин Number of data ports должно быть установлено значение 2
или выше.
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|