Fixed-Point Numbers
定点数及其数据类型的特征在于它们的字大小(以位为单位)、二进制点以及它们是有符号的还是无符号的。定点设计器™ 软件支持整数和定点数。这些数据类型之间的主要区别在于它们的二进制点。
注意:定点数字的字大小最多可达128位。
二进制定点数的常见表示形式,有符号或无符号,如下图所示。
bi 是二进制位。
ws是以位为单位的字长。
最高有效位(MSB)是最左边的位。
最低有效位(LSB)是最右边的位。
二进制点显示在LSB左侧的四个位置。
Signed Fixed-Point Numbers
计算机硬件通常以三种不同的方式表示二进制定点数的否定:符号、一的补码和二的补码。二的补码是有符号定点数的首选表示形式,并受定点设计器软件的支持。
使用二的补码的取反包括一个位反转(转换为一的补码),然后加一。例如,000101的二元补码是111011。
定点值是有符号的还是无符号的,通常不会在二进制字内显式编码;也就是说,没有符号位。相反,符号信息是在计算机体系结构中隐式定义的。
Binary Point
二进制点是对定点数字进行缩放的方法。通常是软件来确定二进制点。当执行诸如加法或减法之类的基本数学函数时,无论比例因子的值如何,硬件都使用相同的逻辑电路。本质上,逻辑电路不知道比例因子。他们正在执行有符号或无符号定点二进制代数,就好像二进制点在b0的右边一样。
定点设计器支持一般的二进制点缩放。V是真实世界的值,Q是存储的整数值,E等于-FractionLength。换句说,RealWorldValue=StoredInteger*2^-FractionLength。
FractionLength定义存储整数值的缩放比例。字长度限制存储的整数可以取的值,但不限制FractionLength可以取的数值。软件不会根据存储的整数Q的字长来限制指数E的值。因为E等于-FractionLength,所以没有必要将二进制点限制为与分数连续;分数长度可以是负的或者大于单词长度。
例如,一个由三个无符号位组成的字通常以以下方式之一用科学记数法表示。
如果指数大于0或小于-3,则表示将包含许多零。
然而,这些额外的零永远不会变为一,所以它们不会出现在硬件中。此外,与浮点指数不同,定点指数永远不会出现在硬件中,因此定点指数不受有限位数的限制。
RealWorldValue=存储整数2^-分数长度。在这种情况下,
RealWorldValue=52^-10=0.0048882125。因为分数长度比单词长度长2位,所以存储的整数的二进制值是x.xx00000101,其中x是隐式零的占位符。0.0000000101(二进制)相当于0.00488828125(十进制)。
Scaling
定点数字的动态范围远小于具有等效字大小的浮点数。为了避免溢出条件并最大限度地减少量化误差,必须缩放定点数。
使用定点设计器软件,您可以选择由其二进制点定义缩放比例的定点数据类型,也可以选择适合您需要的任意线性缩放比例。本节介绍可用于定点数据类型的缩放选项。
您可以通过一般的斜率和偏差编码方案来表示定点数
slope分为两部分:
2的E次方指定二进制点。E是两个指数的固定幂。
F是slope调整系数。1<=F<2.
注:S和B是常数,不会直接显示在计算机硬件中。只有量化值Q被存储在计算机存储器中。
Binary-Point-Only Scaling
仅二进制点或二次幂缩放涉及在定点字内移动二进制点。这种缩放模式的优点是最小化处理器算术运算的数量。
对于仅二进制点缩放,一般斜率和偏差公式的分量具有以下值:
量化的真实世界数字的缩放由斜率S定义,其被限制为2的幂。两个指数的幂的负值称为分数长度。小数长度是二进制点右侧的位数。对于仅二进制点缩放,将定点数据类型指定为
signed types — fixdt(1, WordLength, FractionLength)
unsigned types — fixdt(0, WordLength, FractionLength)
整数是定点数据类型的一种特殊情况。整数具有斜率为1、偏置为0的平标度,或者等于分数长度为0。将整数指定为
signed integer — fixdt(1, WordLength, 0)
unsigned integer — fixdt(0, WordLength, 0)
Slope and Bias Scaling
按斜率和偏移量缩放时,量化的真实世界数的斜率S和偏移量B可以取任何值。 Slope必须是正数。使用 Slope和Bias ,将定点数据类型指定为
fixdt(Signed, WordLength, Slope, Bias)
Unspecified Scaling
指定具有未指定缩放比例的定点数据类型为
fixdt(Signed, WordLength)
Simulink®信号、参数和状态不得具有未指定的缩放比例。如果未指定缩放比例,则必须使用其他机制(如自动最佳精度缩放)来确定Simulink软件使用的缩放比例。