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 模块的数据端口索引的非连续值
此示例说明如何使用 Multiport Switch 模块为数据端口指定非连续的整数值。索引值在数据端口标签上可见。您不必打开模块对话框来确定每个数据端口映射的具体对应值。
当您将默认情况数据端口设置为 Additional data port
时,会出现具有 *
标签的一个额外端口。此端口对应于默认情况,当控制输入与数据端口索引 3、5、0 或 18 不匹配时适用。在此示例中发生这种情况时,Multiport Switch 模块输出值 1
。
Multiport Switch 数据端口的从 0 开始的索引
此示例说明一个 Multiport Switch 模块,它使用从 0 开始的索引对三个数据端口进行连续排序。
索引在数据端口标签上可见。您不必打开模块对话框来确定数据端口使用从 0 开始还从 1 开始的索引。
当您将默认情况数据端口设置为 Last data port
时,最后一个数据端口的标签上包括 *
(在本例中,标签为 *,2
)。*
后面的逗号表示数据端口索引有值。此端口对应于默认情况,当控制输入与数据端口索引不匹配时适用。在此示例中,当控制输入与数据端口索引 0、1 或 2 不匹配时,Multiport Switch 模块输出值 -0.1
。
Multiport Switch 数据端口的从 1 开始的索引
sf_semantics_hotel_checkin 模型使用 Multiport Switch 模块。此模块使用从 1 开始的索引对三个数据端口进行连续排序。
当您增大模块图标的大小时,索引在数据端口标签上可见。您不必打开模块对话框来确定数据端口使用从 0 开始还从 1 开始的索引。
Multiport Switch 模块的数据端口索引的枚举名称
sldemo_fuelsys 模型在 fuel_rate_control/fuel_calc/feedforward_fuel_rate
子系统中使用 Multiport Switch 模块。此模块使用枚举类型 sld_FuelModes
来指定三个数据端口索引:LOW
、RICH
和 DISABLED
。
当您将默认情况数据端口设置为 Last data port
时,最后一个数据端口的标签上包括 *
。*
后面的逗号和省略号表示数据端口索引有一个值。此端口对应于默认情况,当控制输入与数据端口索引 LOW
、RICH
或 DISABLED
不匹配时适用。在这种情况下,Multiport Switch 模块输出值 0
。
扩展示例
限制
如果 Multiport Switch 模块的数据输入是总线,两个总线的元素名称必须相同。使用相同的元素名称可以确保输出总线具有相同的元素名称,而不管模块选择了哪些输入总线。要确保您的模型满足此要求,请使用总线对象定义总线并将元素名称不匹配诊断设置为错误。
对于总线数组,数据端口数量必须设置为
2
或更大的值。
端口
输入
Port_1 — 控制信号
标量
控制信号可以是 Simulink® 支持的任何数据类型,包括定点和枚举类型。当控制输入不是整数值时,模块通过向零舍入将值截断为整数。
有关枚举类型的控制信号的信息,请参阅枚举控制端口的参数设置原则。
有关此模块如何处理超出范围的情况的信息,请参阅模块如何处理超出范围的控制输入。
限制
如果控制信号为数值,则控制信号不能为复数。
如果控制信号为枚举信号,模块将使用基础整数值来选择数据端口。
如果基础整数没有对应的数据端口,将出现错误。
如果控制输入是超出整数数据类型范围的浮点值,Multiport Switch 模块将发出运行时错误。此范围包括
Inf
和NaN
。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| image
1 — 第一个数据输入
标量 | 向量 | 矩阵 | N 维数组
第一个数据输入,指定为标量、向量、矩阵或 N 维数组。所有数据信号可以是 Simulink 支持的任何数据类型。
如果所有数据输入都为标量,则输出为标量
如果数据输入中至少有一个是向量,模块输出即为向量。在这种情况下,模块会将任何标量输入都扩展为向量。
如果任何两个非标量信号具有不同维数量或不同维度长度,请选中允许不同数据输入大小复选框。有关详细信息,请参阅使用具有不同维度的数据输入。
如果有任何数据信号为枚举类型,则所有其他信号也必须为相同的枚举类型。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| string
| image
2 — 第二个数据输入
标量 | 向量 | 矩阵 | N 维数组
第二个数据输入,指定为标量、向量、矩阵或 N 维数组。所有数据信号可以是 Simulink 支持的任何数据类型。
如果所有数据输入都为标量,则输出为标量
如果数据输入中至少有一个是向量,模块输出即为向量。在这种情况下,模块会将任何标量输入都扩展为向量。
如果任何两个非标量信号具有不同维数量或不同维度长度,请选中允许不同数据输入大小复选框。有关详细信息,请参阅使用具有不同维度的数据输入。
如果有任何数据信号为枚举类型,则所有其他信号也必须为相同的枚举类型。
依存关系
要启用此端口,请将数据端口数量设置为大于 1 的整数。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| string
| image
N — 第 N 个数据输入
标量 | 向量 | 矩阵 | N 维数组
第 N 个数据输入,指定为标量、向量、矩阵或 N 维数组。所有数据信号可以是 Simulink 支持的任何数据类型。
如果所有数据输入都为标量,则输出为标量
如果数据输入中至少有一个是向量,模块输出即为向量。在这种情况下,模块会将任何标量输入都扩展为向量。
如果任何两个非标量信号具有不同维数量或不同维度长度,请选中允许不同数据输入大小复选框。有关详细信息,请参阅使用具有不同维度的数据输入。
如果有任何数据信号为枚举类型,则所有其他信号也必须为相同的枚举类型。
依存关系
要启用第 N 个输入端口,请将数据端口数量设置为大于或等于 N 的整数值。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| string
| image
* — 用于超出范围的输入的数据端口
标量 | 向量 | 矩阵 | N 维数组
用于超出范围的控制信号输入的输入数据端口,指定为标量、向量、矩阵或 N 维数组。所有数据信号可以是 Simulink 支持的任何数据类型。如果有任何数据信号为枚举类型,则所有其他信号也必须为相同的枚举类型。如果任何两个信号具有不同维数量或不同维度长度,请选中允许不同数据输入大小复选框。有关详细信息,请参阅使用具有不同维度的数据输入。
依存关系
要为超出范围的控制信号输入创建一个附加数据端口,请将默认情况数据端口设置为附加数据端口。如果将默认情况数据端口设置为最后一个数据端口,则当控制信号值与任何数据端口索引都不匹配时,模块将使用最后一个数据端口进行输出。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
输出
Port_1 — 所选数据输入,基于控制信号值
标量 | 向量 | 矩阵 | N 维数组
模块输出根据控制信号值选择的数据输入之一。输出的维度与对应的数据输入相同。输出数据类型是需要最大内存空间的输入端口的数据类型。当您选中允许不同数据输入大小复选框时,模块的输出是可变大小信号。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
| enumerated
| string
| image
参数
常设
数据端口顺序 — 数据输入端口的排序类型
从 1 开始连续 | 从 0 开始连续 | 指定索引
指定数据输入端口的排序类型。
从 0 开始连续 - 模块使用从 0 开始的索引方式为连续数据端口排序。这是 Index Vector 模块的默认值。
从 1 开始连续 - 模块使用从 1 开始的索引方式为连续数据端口排序。这是 Multiport Switch 模块的默认值
指定索引 - 模块使用不连续的索引方式为数据端口排序。
提示
当控制端口为枚举类型时,请选择指定索引。
如果选择从 0 开始连续或从 1 开始连续,请确认控制端口不是枚举类型。此配置已弃用,如果使用将会生成错误。您可以在模型上运行升级顾问,将此配置中的每个 Multiport Switch 模块替换为显式指定数据端口索引的模块。请参阅模型升级。
在仿真或代码生成中,应避免出现模块包含未使用的数据端口的情况。当控制端口为定点或内置数据类型时,请确认所有数据端口索引都可用该类型表示。否则,将发生以下模块行为:
如果模块具有未使用的数据端口且数据端口顺序为: 该模块产生: 从 0 开始连续或从 1 开始连续 警告 指定索引 错误
依存关系
选择从 0 开始连续或从 1 开始连续将启用数据端口数量参数。
选择指定索引将启用数据端口索引参数。
编程用法
模块参数:DataPortOrder
|
类型:字符向量 |
值:'Zero-based contiguous' | 'One-based contiguous' | 'Specify indices' |
默认值:'One-based contiguous' (Multiport Switch) 'Zero-based contiguous' (Index Vector) |
数据端口数量 — 数据输入端口的个数
1
| 3
| 在 1 和 65535 之间的整数
指定模块的数据输入端口数。输入端口的总数是您指定的数量加 1(用于控制信号输入端口);如果您将默认情况数据端口设置为附加数据端口,则还要再加 1(用于额外的输入端口)。
依存关系
要启用此参数,请将数据端口顺序设置为从 0 开始连续或从 1 开始连续。
编程用法
模块参数:Inputs
|
类型:字符向量 |
值:1 和 65536 之间的整数 |
默认值:'3' (Multiport Switch) '1' (Index Vector) |
数据端口索引 — 数据端口的索引数组
{1,2,3}
(默认) | 索引数组
为数据端口指定索引数组。模块图标将发生变化以匹配您指定的数据端口索引。
提示
要指定与枚举类型的所有值对应的索引数组,请输入
enumeration('name of the type')
。例如,如果
enumeration('MyColors')
是枚举类型的名称,则MyColors
是有效条目。要输入枚举类型的特定值,请使用
type_name.enumerated_name
格式。请不要输入基础整数值。例如,
enumeration({MyColors.Red, MyColors.Green, MyColors.Blue})
就是有效的输入。要指示多个值映射到一个数据端口,请使用方括号。
例如,以下两个输入均有效:
enumeration({MyColors.Red, MyColors.Green, [MyColors.Blue, MyColors.Yellow]})
enumeration({[3,5],0,18})
如果控制端口为定点或内置数据类型,数据端口索引的值必须能用该类型表示。否则,编译时将出现错误,提醒您存在未使用的数据端口。
如果控制端口为枚举数据类型,数据端口索引的值必须为该类型的枚举值。
如果数据端口索引包含枚举类型的值,控制端口必须为该数据类型。
依存关系
要启用此参数,请将数据端口顺序设置为指定索引。
编程用法
模块参数:DataPortIndices
|
类型:字符向量 |
值:索引数组 |
默认值:'{1,2,3}'
|
默认情况数据端口 — 用于超出范围的输入的端口
最后一个数据端口 (默认) | 附加数据端口
指定对于超出范围的输入,是使用最后一个数据端口还是使用其他端口。端口名称旁的星号 (*) 表示控制端口值不匹配任何数据端口索引时模块将使用的端口。
最后一个数据端口 - 当控制端口值与任何数据端口索引均不匹配时,模块将使用最后一个数据端口进行输出。
附加数据端口 - 当控制端口值与任何数据端口索引均不匹配时,模块将使用其他数据端口进行输出。
提示
如果将此参数设置为附加数据端口且数据端口数量为 3,则模块上的输入端口数为 5。第一个输入是控制端口,后面三个输入为数据端口,第五个输入是用于超出范围的输入的默认端口。
编程用法
模块参数:DataPortForDefault
|
类型:字符向量 |
值:'Last data port' | 'Additional data port' |
默认值:'Last data port'
|
默认情况诊断 — 控制端口值与数据端口索引不匹配时的诊断操作
错误 (默认) | 警告 | 无
指定当控制端口值与任何端口索引均不匹配时要采取的诊断操作。
无 - 不产生任何响应。
警告 - 显示警告并继续进行仿真。
错误 - 终止仿真并显示错误。在这种情况下,默认情况数据端口只用于代码生成,而不用于仿真。
有关详细信息,请参阅模块如何处理超出范围的控制输入。
编程用法
模块参数:DiagnosticForDefault |
类型:字符向量 |
值:'None' | 'Warning' | 'Error' |
默认值:'Error' |
采样时间(-1 表示继承) — 采样之间的时间间隔
-1
(默认) | 标量 | 向量
指定采样时间间隔。要继承采样时间,请将此参数设置为 -1
。有关详细信息,请参阅指定采样时间。
依存关系
仅当您将此参数设置为 -1
以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块。
编程用法
模块参数:SampleTime |
类型:字符串标量或字符向量 |
默认值:"-1" |
信号属性
要求所有数据端口输入具有相同的数据类型 — 要求所有输入具有相同的数据类型
off
(默认) | on
选中此复选框将要求所有数据输入端口具有相同的数据类型。清除此复选框时,模块允许数据端口输入具有不同数据类型。
编程用法
模块参数:InputSameDT |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
输出最小值 — 范围检查的最小输出值
[]
(默认) | 标量
Simulink 检查的输出范围的下限值。
Simulink 使用最小值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
注意
输出最小值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。
编程用法
模块参数:OutMin |
类型:字符向量 |
值:'[ ]' | 标量 |
默认值:'[ ]' |
输出最大值 — 范围检查的最大输出值
[]
(默认) | 标量
Simulink 检查的输出范围的上限值。
Simulink 使用最大值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
注意
输出最大值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。
编程用法
模块参数:OutMax |
类型:字符向量 |
值:'[ ]' | 标量 |
默认值:'[ ]' |
输出数据类型 — 指定输出数据类型
继承: 从内部规则继承 (默认) | 继承: 通过反向传播继承 | 继承: 与第一个数据输入相同 | double | single | half | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | fixdt(1,16) | fixdt(1,16,0) | fixdt(1,16,2^0,0) | 字符串 | Simulink.ImageType(480,640,3) | <数据类型表达式>
为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType
。
当您选择继承的选项时,模块的行为如下所示:
继承: 从内部规则继承 - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:
显式指定输出数据类型。
显式指定默认数据类型(例如
fixdt(1,32,16)
),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅fxptdlg
(Fixed-Point Designer)。要指定您自己的继承规则,请使用继承: 通过反向传播继承,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。
继承: 通过反向传播继承 - 使用驱动模块的数据类型。
继承: 与第一个数据输入相同 - 使用第一个数据输入端口的数据类型。
编程用法
模块参数:OutDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'string' | Simulink.ImageType(480,640,3) | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
锁定输出数据类型设置以防止被定点工具更改 — 防止定点工具覆盖数据类型
off
(默认) | on
选中此选项将锁定此模块的输出数据类型设置,从而防止通过定点工具和定点顾问进行更改。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
整数舍入模式 — 指定定点运算的舍入模式
向下 (默认) | 向上 | 收敛 | 最邻近值 | 舍入 | 最简 | 零
选择下列舍入模式之一。
- 向上
将正值和负值朝正无穷方向舍入。等同于 MATLAB®
ceil
函数。- 收敛
将数值舍入到最邻近的可表示值。如果出现结值,则舍入到最邻近的偶数整数。等同于 Fixed-Point Designer™
convergent
函数。- 向下
将正值和负值朝负无穷方向舍入。等同于 MATLAB
floor
函数。- 最邻近值
将数值舍入到最邻近的可表示值。如果出现结值,则朝正无穷方向舍入。等同于 Fixed-Point Designer
nearest
函数。- 舍入
将数值舍入到最邻近的可表示值。如果出现结值,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer
round
函数。- 最简
自动选择是向负无穷大方向舍入还是向零舍入,以生成尽可能有效的舍入代码。
- 零
将数值向零舍入。等同于 MATLAB
fix
函数。
编程用法
模块参数:RndMeth |
类型:字符向量 |
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
默认值:'Floor' |
另请参阅
有关详细信息,请参阅舍入 (Fixed-Point Designer)。
对整数溢出进行饱和处理 — 溢出操作的方法
off
(默认) | on
指定对溢出是进行饱和处理还是绕回处理。
off
- 溢出将绕回到数据类型可以表示的合适值。例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。
on
- 将溢出饱和处理为数据类型能够表示的最小值或最大值。例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。
提示
如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。
如果您希望优化生成的代码的效率,请考虑清除此复选框。
清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除。
如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。
一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。
编程用法
模块参数:SaturateOnIntegerOverflow |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
允许不同数据输入大小(产生可变大小的输出信号) — 允许不同大小的输入信号
off
(默认) | on
选中此复选框将允许输入信号具有不同大小。
On
- 允许输入信号具有不同大小,并将输入信号的大小传播给输出信号。在此模式下,模块产生可变大小的输出信号。Off
- 要求所有非标量数据输入信号的大小相同。
编程用法
参数:AllowDiffInputSizes |
类型:字符向量 |
值:'on' | 'off' |
默认值:'off' |
模式 — 选择数据类型模式
Inherit
(默认) | Built in
| Fixed Point
选择要指定的数据类别。
继承 - 数据类型的继承规则。选择
Inherit
将在右侧启用另一个菜单/文本框,您可以在其中选择继承模式。内置 - 内置数据类型。选择
Built in
将在右侧启用另一个菜单/文本框,您可以在其中选择内置数据类型。定点 - 定点数据类型。选择定点将启用可用于指定定点数据类型的其他参数。
表达式 - 计算结果为数据类型的表达式。选择
Expression
将在右侧启用另一个菜单/文本框,您可以在其中输入表达式。
有关详细信息,请参阅使用数据类型助手指定数据类型。
依存关系
要启用此参数,请点击显示数据类型助手按钮。
数据类型覆盖 — 为此信号指定数据类型覆盖模式
Inherit
| Off
为此信号选择数据类型覆盖模式。
当您选择 inherit 时,Simulink 从信号的上下文(即:从 Simulink 中使用该信号的模块、
Simulink.Signal
对象或 Stateflow® 图)中继承数据类型覆盖设置。当您选择 off 时,Simulink 忽略信号上下文的数据类型覆盖设置,并使用为信号指定的定点数据类型。
有关详细信息,请参阅 Simulink 文档中的使用数据类型助手指定数据类型。
依存关系
要启用此参数,请将模式设置为内置或定点。
提示
由于能够关闭单个数据类型的数据类型覆盖,您可以在应用数据类型覆盖时更好地控制模型中的数据类型。例如,您可以使用此选项确保数据类型满足下游模块的要求,而忽略数据类型覆盖设置。
符号性 — 指定有符号或无符号
Signed
(默认) | Unsigned
指定定点数据是有符号还是无符号。有符号数据可以表示正值和负值,无符号数据只表示正值。
有符号,将定点数据指定为有符号数据。
无符号,将定点数据指定为无符号数据。
有关详细信息,请参阅使用数据类型助手指定数据类型。
依存关系
要启用此参数,请将模式设置为 Fixed point
。
定标 — 定标定点数据的方法
最佳精度 (默认) | 二进制小数点 | 斜率和偏置
字长 — 存储量化整数的字的位大小
16
(默认) | 从 0 到 32 的整数
小数长度 — 指定定点数据类型的小数长度
0
(默认) | 标量整数
斜率 — 指定定点数据类型的斜率。
2^0
(默认) | 正实数值标量
偏置 — 指定定点数据类型的偏置。
0
(默认) | 实数值标量
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
此模块具有一个默认 HDL 架构。
通用 | |
---|---|
CodingStyle | 指定是用 case 语句还是 if-else 语句生成 HDL 代码。默认情况下,HDL Coder 会生成 if-else 语句。另请参阅CodingStyle (HDL Coder)。 |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
本机浮点 | |
---|---|
LatencyStrategy | 指定对于浮点运算符是否将设计中的模块映射到 |
此模块支持复信号的代码生成。
您可以使用指定索引模式指定输入端口的数据端口索引。要使用指定索引模式配置 Multiport Switch 模块,请将数据端口顺序模块参数设置为指定索引。然后,在数据端口索引模块参数中输入端口索引。对于以 HDL 代码生成为目标的模型,您可以在指定索引模式下将这些输入数据类型用于控制输入:
定点和浮点类型
有符号和无符号整数类型
枚举类型
向量、矩阵和总线类型
您可以将数据端口顺序设置为指定索引,并为数据端口索引输入枚举值。例如,您可以将 Enumerated Constant 模块连接到 Multiport Switch 控制端口,并将枚举类型用作数据端口索引。
您必须避免在控制端口上使用 NaN
或超出范围的值。它会导致在验证模型中的仿真不匹配。
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2006a 之前推出R2024a: 当输入具有浮点值时,Multiport Switch 模块出现运行时错误
当第一个端口中的控制信号的浮点值超出整数的数据类型范围时,Multiport Switch 模块现在会发出运行时错误。此范围包括 Inf
和 NaN
。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)