主要内容

对算术和扩展的建议

算术运算和定点缩放

接下来的小节描述算术运算和定点比例之间的关系,并提供一些基本建议可能适合您的定点设计。对于每一个算术运算,

  • 一般(斜率偏见)描述的编码方案扩展使用。

  • 结果是自动选择的扩展基于扩展的两个输入。换句话说,比例是多少继承了

  • 基于扩展选择

    • 结果的算术运算的数量最小化

    • 最大限度地提高结果的精度

    此外,binary-point-only扩展作为通用编码模式的一个特例。

在嵌入式系统中,硬件接口的扩展变量(ADC和DAC)是固定的。然而对于大多数其他变量,比例是你可以选择最好的设计。缩放定点变量时,重要的是要记住

  • 你扩展的选择依赖于特定的设计模拟。

  • 没有最好的扩展方法。所有的选择都有相关的优点和缺点。本节的目的是揭露这些优点和缺点。

除了

考虑添加两个真实的值:

V 一个 = V b + V c

这些值代表的通用(斜率偏见)描述的编码方案扩展:

V = F 2 E + B

在定点系统中,结果找到该变量的值一个:

一个 = F b F 一个 2 E b E 一个 b + F c F 一个 2 E c E 一个 c + B b + B c B 一个 F 一个 2 E 一个

这个公式表明

  • 一般来说,一个不是通过一个简单的加法计算的bc

  • 一般来说,有两个乘法常数和变量,两个补充,一些额外的转移。

继承的扩展速度

的过程中发现之和的比例,一个合理的目标是简化计算。简化计算的数量应该减少操作,从而提高执行速度。下面的选择可以帮助减少算术运算的数量:

  • B一个=Bb+Bc。这就消除了一个加法。

  • F一个=FbF一个=Fc。要么选择消除乘法的两个常数乘以变量。

由此产生的公式是

一个 = 2 E b E 一个 b + F c F 一个 2 E c E 一个 c

一个 = F b F 一个 2 E b E 一个 b + 2 E c E 一个 c

似乎这些方程等价的。然而,你选择的舍入和精度可以站在另一个选择。为了进一步简化问题,你可以选择E一个=EcE一个=Eb。这将消除一些转变。

继承的扩展最大精度

的过程中发现之和的比例,一个合理的目标是最大的精度。你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围max (V一个)分钟(V一个)。对于一个求和,可以确定的范围

最小值 ( V ˜ 一个 ) = 最小值 ( V ˜ b ) + 最小值 ( V ˜ c ) , 马克斯 ( V ˜ 一个 ) = 马克斯 ( V ˜ b ) + 马克斯 ( V ˜ c )

你现在可以推导出斜率最大精度:

F 一个 2 E 一个 = 马克斯 ( V ˜ 一个 ) 最小值 ( V ˜ 一个 ) 2 w 年代 一个 1 = F 一个 2 E b ( 2 w 年代 b 1 ) + F c 2 E c ( 2 w 年代 c 1 ) 2 w 年代 一个 1

在大多数情况下,输入和输出文字大小要大于1,和斜率

F 一个 2 E 一个 F b 2 E b + w 年代 b w 年代 一个 + F c 2 E c + w 年代 c w 年代 一个 ,

这只取决于输入和输出的大小。相应的偏见

B 一个 = 最小值 ( V ˜ 一个 ) F 一个 2 E 一个 最小值 ( 一个 )

偏见的价值取决于输入和输出是否签署或无符号数。

如果输入和输出都是无符号,那么这些变量都是零和的最小值偏差降低到一个特别简单的表单:

B 一个 = B b + B c

如果输入和输出都签名,然后偏差

B 一个 B b + B c + F b 2 E b ( 2 w 年代 b 1 + 2 w 年代 b 1 ) + F c 2 E c ( 2 w 年代 c 1 + 2 w 年代 c 1 ) , B 一个 B b + B c

Binary-Point-Only扩展

binary-point-only缩放,发现一个结果在这个简单的表达式:

一个 = 2 E b E 一个 b + 2 E c E 一个 c

这个比例的选择的结果只有一个加法和移位。避免任何乘法binary-point-only缩放的一大优势。

请注意

的减法的价值观产生结果,类似于那些由添加值。

积累

的累积值与增加密切相关:

V 一个 _ n e w = V 一个 _ o l d + V b

发现a_new包括一个乘法常数和变量,两个补充,和一些变化:

一个 _ n e w = 一个 _ o l d + F b F 一个 2 E b E 一个 b + B b F 一个 2 E 一个

定点实现的重要区别是,输出的比例是相同的第一个输入的比例。

Binary-Point-Only扩展

binary-point-only缩放,发现a_new结果在这个简单的表达式:

一个 _ n e w = 一个 _ o l d + 2 E b E 一个 b

这个扩展选项只涉及一个加法和移位。

请注意

价值产生的负面累积的结果,类似于那些积累产生的值。

乘法

考虑两个真实值的乘积:

V 一个 = V b V c

这些值代表的通用(斜率偏见)描述的编码方案扩展:

V = F 2 E + B

在定点系统中,找到该变量值的乘法的结果一个:

一个 = F b F c F 一个 2 E b + E c E 一个 b c + F b B c F 一个 2 E b E 一个 b + F c B b F 一个 2 E c E 一个 c + B b B c B 一个 F 一个 2 E 一个

这个公式表明

  • 一般来说,一个不是通过一个简单的乘法计算的bc

  • 一般来说,有一个乘法的一个常数和两个变量,两个乘法常数和变量,三个增加,一些额外的转移。

继承的扩展速度

算术运算的数量可以减少与这些选择:

  • B一个=BbBc。这就消除了一个加法操作。

  • F一个=FbFc。这简化了三重multiplication-certainly最困难的部分方程来实现。

  • E一个=Eb+Ec。这就消除了一些转变。

由此产生的公式是

一个 = b c + B c F c 2 E c b + B b F b 2 E b c

继承的扩展最大精度

你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围

马克斯 ( V ˜ 一个 )

最小值 ( V ˜ 一个 )

对于乘法,可以确定的范围

最小值 ( V ˜ 一个 ) = 最小值 ( V l l , V l H , V H l , V H H ) , 马克斯 ( V ˜ 一个 ) = 马克斯 ( V l l , V l H , V H l , V H H ) ,

在哪里

V l l = 最小值 ( V ˜ b ) 最小值 ( V ˜ c ) , V l H = 最小值 ( V ˜ b ) 马克斯 ( V ˜ c ) , V H l = 马克斯 ( V ˜ b ) 最小值 ( V ˜ c ) , V H H = 马克斯 ( V ˜ b ) 马克斯 ( V ˜ c )

Binary-Point-Only扩展

binary-point-only缩放,发现一个结果在这个简单的表达式:

一个 = 2 E b + E c E 一个 b c

获得

考虑常数和变量的乘法

V 一个 = K V b ,

在哪里K是一个常数称为收益。自V一个乘法的结果一个常数和变量,发现一个是一个简化版的通用定点乘法公式:

一个 = ( K F b 2 E b F 一个 2 E 一个 ) b + ( K B b B 一个 F 一个 2 E 一个 )

注意括号中的词汇可以离线计算。因此,只有一个乘法的一个常数和变量。

实现上述方程不改变它一个更复杂的形式,常数需要使用binary-point-only格式编码。对于每个这些常数,只是微不足道的一个值范围。尽管微不足道的范围,二点公式最大精度仍然有效。最大精度表示是最有效的选择,除非有一个压倒一切的需要避免任何转移。常量的编码

( K F b 2 E b F 一个 2 E 一个 ) = 2 E X X ( K B b B 一个 F 一个 2 E 一个 ) = 2 E Y Y

导致公式

一个 = 2 E X X B + 2 E Y Y

继承的扩展速度

算术运算的数量可以减少与这些选择:

  • B一个=KBb。这就消除了一个常数项。

  • F一个=KFbE一个=Eb。这集其他常数项统一。

    由此产生的公式简单

    一个 = b

如果是不同的比特数,那么处理潜在的溢出或执行符号扩展是唯一可能的操作。

继承的扩展最大精度

比例最大精度不需要不同的扩展速度,除非输出比输入较少的比特。如果是这种情况,那么应该避免饱和斜率除以2为每个失去了一些。这可以防止饱和但使舍入。

部门

值是一个分工操作,应避免在定点的嵌入式系统,但它可以发生在的地方。因此,考虑两个真实值的划分:

V 一个 = V b / V c

这些值代表的通用(斜率偏见)描述的编码方案扩展:

V = F 2 E + B

在定点系统中,找到该变量值结果的部门一个:

一个 = F b 2 E b b + B b F c F 一个 2 E c + E 一个 c + B c F 一个 2 E 一个 B 一个 F 一个 2 E 一个

这个公式表明

  • 一般来说,一个不是通过一个简单的除法计算的b通过c

  • 一般来说,有两个乘法常数和变量,两个补充,由一个变量,变量的一个部门一个部门一个常数的变量,和一些额外的转移。

继承的扩展速度

算术运算的数量可以减少与这些选择:

  • B一个= 0。这就消除了一个加法操作。

  • 如果Bc= 0,然后设置部分的斜率F一个=Fb/Fc。这就消除了一个常数乘以变量乘法。

由此产生的公式是

一个 = b c 2 E b E c E 一个 + ( B b / F b ) c 2 E c E 一个

如果Bc≠0,然后没有明确的建议。

继承的扩展最大精度

你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围

马克斯 ( V ˜ 一个 )

最小值 ( V ˜ 一个 )

对于部门,您可以确定的范围

最小值 ( V ˜ 一个 ) = 最小值 ( V l l , V l H , V H l , V H H ) , 马克斯 ( V ˜ 一个 ) = 马克斯 ( V l l , V l H , V H l , V H H ) ,

在非零分母

V l l = 最小值 ( V ˜ b ) / 最小值 ( V ˜ c ) , V l H = 最小值 ( V ˜ b ) / 马克斯 ( V ˜ c ) , V H l = 马克斯 ( V ˜ b ) / 最小值 ( V ˜ c ) , V H H = 马克斯 ( V ˜ b ) / 马克斯 ( V ˜ c )

Binary-Point-Only扩展

binary-point-only缩放,发现一个结果在这个简单的表达式:

一个 = b c 2 E b E c E 一个

请注意

在过去的两个公式涉及一个除以零,零除以零是有可能的。在这些情况下,硬件会给一些默认的行为,但你必须确保这些默认响应为嵌入式系统提供有意义的结果。

总结

定点前面分析的变量中的比例一般(斜率偏见)编码方案,你可以得出结论

  • 加法,减法,乘法,除法可以积极参与,除非某些选择的偏见和斜坡。

  • Binary-point-only扩展保证简单数学,但通常会牺牲一些精度。

注意,前面的公式不显示如下:

  • 常量和变量使用有限数量的比特表示。

  • 签署或无符号变量。

  • 舍入和溢出处理方案。你必须做出这些决策之前实际的定点实现。

另请参阅