Data Type Support
Supported Data Types
The API for user-written fixed-point S-functions provides support for a variety of Simulink® and Fixed-Point Designer™ data types, including
Built-in Simulink data types
single
double
uint8
int8
uint16
int16
uint32
int32
uint64
int64
Fixed-point Simulink data types, such as
sfix16_En15
ufix32_En16
ufix128
sfix37_S3_B5
Data types resulting from a data type override with
Scaled double
, such asflts16
flts16_En15
fltu32_S3_B5
For more information, see Fixed-Point Data Type and Scaling Notation.
The Treatment of Integers
The API treats integers as fixed-point numbers with trivial scaling. In [Slope Bias] representation, fixed-point numbers are represented as
real-world value = (slope × integer) + bias.
In the trivial case, slope = 1 and bias = 0.
In terms of binary-point-only scaling, the binary point is to the right of the least significant bit for trivial scaling, meaning that the fraction length is zero:
real-world value = integer × 2-fraction length = integer × 20.
In either case, trivial scaling means that the real-world value is equal to the stored integer value:
real-world value = integer.
All integers, including Simulink built-in integers such as uint8
, are treated as
fixed-point numbers with trivial scaling by this API. However, Simulink built-in integers are different in that their use does not cause a
Fixed-Point Designer software license to be checked out.
Data Type Override
The Fixed-Point Tool enables you to perform various data type overrides on fixed-point signals in your simulations. This API can handle signals whose data types have been overridden in this way:
A signal that has been overridden with
Single
is treated as a Simulink built-insingle
.A signal that has been overridden with
Double
is treated as a Simulink built-indouble
.A signal that has been overridden with
Scaled double
is treated as being of data typeScaledDouble
.
ScaledDouble
signals are a hybrid between floating-point and
fixed-point signals, in that they are stored as doubles
with the
scaling, sign, and word length information retained. The value is stored as a
floating-point double
, but as with a fixed-point number, the
distinction between the stored integer value and the real-world value remains. The
scaling information is applied to the stored integer double
to
obtain the real-world value. By storing the value in a double
,
overflow and precision issues are almost always eliminated. Refer to any individual
API function reference page at the end of this appendix to learn how that function
treats ScaledDouble
signals.
For more information about the Fixed-Point Tool and data type override, see Fixed-Point Tool.