Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Data Type Conversion

将输入信号转换为指定的数据类型

  • 库:
  • Simulink / Commonly Used Blocks

    Simulink / Signal Attributes

    HDL Coder / Commonly Used Blocks

    HDL Coder / HDL Floating Point Operations

    HDL Coder / Signal Attributes

  • Data Type Conversion block

说明

Data Type Conversion 模块可将任何 Simulink® 数据类型的输入信号转换为您指定的数据类型。

注意

要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,请使用 Data Type Conversion 模块。要从模型中的不同信号继承数据类型,请使用 Data Type Conversion Inherited 模块。

转换定点信号

在定点数据类型之间转换时,可以通过 Input and output to have equal 参数来控制模块的行为。在以下情况下,此参数不会更改模块的行为:

  • 输入和输出没有定点数据类型。

  • 输入或输出使用具有平凡定标的定点数据类型。

有关定点数的详细信息,请参阅 Fixed-Point Numbers in Simulink (Fixed-Point Designer)

要通过保留输入信号的真实值,将信号从一种数据类型转换为另一种数据类型,请选择默认值 “Real World Value (RWV)”。模块会解释由输入和输出的定标施加的限制,并尝试生成具有相等真实值的输出。

要通过对存储的整数值执行定标重新解释来更改输入信号的真实值,请选择 “Stored Integer (SI)”。在转换过程中,模块将尝试在指定的数据类型范围内保留为信号存储的整数值。最佳做法是使用相同的字长和符号指定输入和输出数据类型。这样做可确保模块仅更改信号的定标。为输入和输出指定不同的符号或字长可能会产生意外的结果,例如范围丢失或意外的符号扩展。有关示例,请参阅Convert Data Types in Simulink Models

如果选择 “Stored Integer (SI)”,则模块不会对浮点输入信号执行较低级别的位重新解释。例如,如果输入为 single 且值为 5,则内存中存储该输入的位将通过下列命令以十六进制方式给出。

num2hex(single(5))
40a00000

但是,Data Type Conversion 模块不会将存储的整数值视为 40a00000,而是视为真实值 5。转换后,输出的存储的整数值为 5

转换枚举信号

使用 Data Type Conversion 模块按如下所示转换枚举信号:

  1. 将枚举类型的信号转换为任意数值类型的信号。

    Data Type Conversion 模块的所有枚举值输入的基础整数都必须在该数值类型的范围内。否则,仿真过程中将发生错误。

  2. 将任意整数类型的信号转换为枚举类型的信号。

    Data Type Conversion 模块的值输入必须与枚举值的基础值匹配。否则,仿真过程中将发生错误。

    您可以启用 Saturate on integer overflow 参数,这样当模块的值输入与枚举值的基础值不匹配时,Simulink 将使用枚举类型的默认值。请参阅枚举的类型转换 (Simulink Coder)

在下列情况下,您不能使用 Data Type Conversion 模块:

  • 将非整数数值信号转换为枚举信号。

  • 将复信号转换为枚举信号,而不管复信号的实部和虚部的数据类型如何。

有关使用枚举类型的信息,请参阅Simulink 枚举

端口

输入

全部展开

输入信号,指定为标量、向量、矩阵或 N 维数组。输入可以是任何实数或复数值信号。如果输入为实数,则输出也是实数。如果输入为复数,则输出也是复数。该模块将输入信号转换为您指定的 Output data type

在转换定点数据类型时,使用 Input and output to have equal 参数确定是基于信号的 “Real World Value (RWV)” 还是 “Stored Integer (SI)” 值进行转换。有关详细信息,请参阅 转换定点信号

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

输出

全部展开

输出信号,转换为您指定的数据类型,具有与输入信号相同的维度。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

参数

全部展开

Simulink 检查的输出范围的下限值。

Simulink 使用最小值执行下列操作:

注意

Output minimum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMin
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

Simulink 检查的输出范围的上限值。

Simulink 使用最大值执行下列操作:

注意

Output maximum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMax
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType

编程用法

模块参数:OutDataTypeStr
类型:字符向量
值:'Inherit: Inherit via back propagation' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>''<data type expression>'
默认值:'Inherit: Inherit via back propagation'

选择此参数可防止定点工具覆盖您在模块上指定的 Output 数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数:LockScale
类型:字符向量
值:'off' | 'on'
默认值:'off'

在定点数据表示形式的上下文中,指定哪种类型的输入和输出必须相等。

  • Real World Value (RWV)” - 指定希望输入的 “Real World Value (RWV)” 等于输出的 “Real World Value (RWV)”。

  • Stored Integer (SI)” - 指定希望输入的 “Stored Integer (SI)” 值等于输出的 “Stored Integer (SI)” 值。

编程用法

模块参数ConvertRealWorld
类型:字符向量
值:'Real World Value (RWV)' | 'Stored Integer (SI)'
默认值'Real World Value (RWV)'

选择下列舍入模式之一。

Ceiling

将正值和负值朝正无穷方向舍入。等同于 MATLAB® ceil 函数。

Convergent

将数值舍入到最接近的可表示值。如果出现对等情况,则舍入到最接近的偶数整数。等同于 Fixed-Point Designer™ convergent 函数。

Floor

将正值和负值朝负无穷方向舍入。等同于 MATLAB floor 函数。

Nearest

将数值舍入到最接近的可表示值。如果出现对等情况,则朝正无穷方向舍入。等同于 Fixed-Point Designer nearest 函数。

Round

将数值舍入到最接近的可表示值。如果出现对等情况,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer round 函数。

Simplest

自动选择是向负无穷大方向舍入还是向零舍入,以生成尽可能有效的舍入代码。

Zero

将数值向零舍入。等同于 MATLAB fix 函数。

编程用法

模块参数RndMeth
类型:字符向量
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值'Floor'

另请参阅

有关详细信息,请参阅Rounding (Fixed-Point Designer)

指定对溢出是进行饱和处理还是绕回处理。

  • off - 溢出将绕回到数据类型可以表示的合适值。

    例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。

  • on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

    例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

提示

  • 如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。

  • 如果您希望优化生成的代码的效率,请考虑清除此复选框。

    清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

  • 如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

  • 一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

模块参数:SaturateOnIntegerOverflow
类型:字符向量
值:'off' | 'on'
默认值:'off'

将采样时间指定为 -1 以外的值。有关详细信息,请参阅指定采样时间

依存关系

此参数不可见,除非将其显式设置为 -1 以外的值。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

模块参数:SampleTime
类型:字符向量
值:标量或向量
默认值:'-1'

模块特性

数据类型

Boolean | double | enumerated | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

在 R2006a 之前推出