Multiport Switch
基于控制信号选择输出信号
库:
Simulink /
Signal Routing
HDL Coder /
Signal Routing
描述
Multiport Switch 模块用于确定将多个模块输入中的哪一个传递给输出。此模块根据第一个输入的值来确定选择哪个输入。第一个输入是控制输入,其余输入是数据输入。控制输入的值确定将哪个数据输入传递给输出。
下表概述了此模块如何解释控制输入,以及如何确定传递给输出的数据输入。
控制输入 | 截断 | 数据端口顺序的设置 | 仿真过程中的模块行为 | |
---|---|---|---|---|
选择数据输入的索引方式 | 超出范围的情况 | |||
整数值 | 无 | 从 0 开始连续 | 从零开始进行索引 | 控制输入小于 |
从 1 开始连续 | 从一开始进行索引 | 控制输入小于 | ||
指定索引 | 按用户指定进行索引 | 控制输入与任何指定的数据端口索引均不对应。 | ||
非整数值 | 模块通过向零舍入将值截断为整数。 | 从 0 开始连续 | 从零开始进行索引 | 截断的控制输入小于 |
从 1 开始连续 | 从一开始进行索引 | 截断的控制输入小于 | ||
指定索引 | 按用户指定进行索引 | 截断的控制输入与任何指定的数据端口索引均不对应。 |
有关此模块如何处理超出范围的情况的信息,请参阅模块如何处理超出范围的控制输入。
配置为 Index Vector 模块的 Multiport Switch
Index Vector 是特殊配置的 Multiport Switch 模块,需要指定一个数据输入,控制输入从 0 开始。模块输出是其索引与控制输入匹配的输入向量的元素。例如,如果输入向量为 [18 15 17 10]
,控制输入为 3
,则与索引 3(从 0 开始)匹配的元素为 10,它将成为输出值。
要将 Multiport Switch 模块配置为 Index Vector 模块,请将数据端口数量设置为 1 且数据端口顺序设置为从 0 开始连续。
模块如何处理超出范围的控制输入
对于整数值小于 intmax(‘int32’)
的输入,当此值与任何数据端口索引均不匹配时,即说明输入超出了范围。对于非整数值控制输入,当截断的值与任何数据端口索引均不匹配时,即说明输入超出了范围。在这两种情况下,模块行为均取决于默认情况数据端口和默认情况诊断的设置。
注意
如果控制输入大于 intmax(‘int32’)
,模块会将输入值绕回为整数。
以下行为仅适用于模型仿真。
默认情况数据端口 | 默认情况诊断 | ||
---|---|---|---|
无 | 警告 | 错误 | |
最后一个数据端口 | 使用最后一个数据端口,不报告任何警告或错误。 | 使用最后一个数据端口并报告警告消息。 | 报告错误并停止仿真。 |
附加数据端口 | 使用带有 | 使用带有 | 报告错误并停止仿真。 |
以下行为适用于模型的代码生成。
默认情况数据端口 | 默认情况诊断 | ||
---|---|---|---|
无 | 警告 | 错误 | |
最后一个数据端口 | 使用最后一个数据端口。 | 使用最后一个数据端口。 | 使用最后一个数据端口。 |
附加数据端口 | 使用带有 | 使用带有 | 使用带有 |
使用具有不同维度的数据输入
如果两个信号具有不同数量的维度或不同的维度长度,您可以将这两个信号用作 Multiport Switch 模块的数据输入。在模块对话框中,选择参数允许不同数据输入大小。在此例中,模块的输出是大小可变信号。如果您不选择此参数,模块将生成错误。
有关该参数的详细信息,请参阅允许不同数据输入大小(产生可变大小的输出信号)。有关大小可变信号的详细信息,请参阅可变大小信号基础知识。
确定模块行为的规则
您可以使用数据端口数量指定数据输入的数目。
如果将数据端口数量设置为 1,则模块相当于一个索引选择器或索引向量,而不是一个 Multiport Switch 模块。有关详细信息,请参阅配置为 Index Vector 模块的 Multiport Switch。
如果将数据端口数量设置为大于 1 的整数,模块则相当于一个 Multiport Switch 模块。模块输出是与控制输入值对应的数据输入。如果数据输入中至少有一个是向量,模块输出即为向量。在这种情况下,模块会将任何标量输入都扩展为向量。
如果所有数据输入都为标量,则输出为标量。
枚举控制端口的参数设置原则
当 Multiport Switch 模块上的控制端口为枚举类型时,请遵循以下原则:
情况 | 操作 | 原理说明 |
---|---|---|
枚举类型包含的值代表无效、超出范围或未初始化的值。 |
| 此模块配置用于处理枚举类型显式表示的无效值。 |
枚举类型仅包含有效的枚举值。但是,数据输入端口可以获得无效的枚举类型值。 |
| 此模块配置用于处理枚举类型未显式表示的无效值。 |
枚举类型仅包含有效的枚举值。数据输入端口永远不会获得无效的枚举类型值。 |
| 此模块配置可避免不必要的诊断操作。 |
模块没有为枚举类型的每个值提供一个数据输入端口。 |
| 此模块配置用于处理没有数据输入端口的枚举值和无效值。 |
限制
如果 Multiport Switch 模块的数据输入是总线,两个总线的元素名称必须相同。使用相同的元素名称可以确保输出总线具有相同的元素名称,而不管模块选择了哪些输入总线。要确保您的模型满足此要求,请使用总线对象定义总线并将元素名称不匹配诊断设置为错误。有关详细信息,请参阅模型配置参数:连接诊断。
对于总线数组,数据端口数量必须设置为
2
或更大的值。
端口
输入
输出
参数
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
版本历史记录
在 R2006a 之前推出