主要内容

算术和缩放的建议

算术运算和定点缩放

接下来的章节描述了算术运算和定点缩放之间的关系,并提供了一些适合于定点设计的基本建议。对于每一个算术运算,

  • 中描述的一般[斜率偏差]编码方案扩展使用。

  • 根据两个输入的缩放,自动选择结果的缩放。换句话说,缩放是继承了

  • 缩放的选择是基于

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

    • 最大化结果的精度

    此外,仅二值点缩放被作为一般编码方案的特例提出。

在嵌入式系统中,硬件接口(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 一个

这个公式表明

  • 一般来说,一个不是通过简单的加法计算的吗b而且c

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

继承缩放速度

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

  • 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扩展

对于二进制点的缩放,求一个结果在这个简单的表达式中:

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

这种缩放选择只导致一次添加和一些位移位。避免任何乘法是二进制点缩放的一大优势。

请注意

的减法的值产生的结果与值相加产生的结果类似。

积累

价值的积累与加法密切相关:

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扩展

对于二进制点的缩放,求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 一个

这个公式表明

  • 一般来说,一个不是通过简单的乘法计算的吗b而且c

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

继承缩放速度

可以通过以下选项来减少算术运算的数量:

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

  • F一个FbFc.这简化了三重乘法——这当然是方程中最难实现的部分。

  • 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扩展

对于二进制点的缩放,求一个结果在这个简单的表达式中:

一个 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 一个

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

为了实现上面的等式而不将其更改为更复杂的形式,常数需要使用二进制点格式进行编码。对于这些常量中的每一个,范围都是只有一个值的简单情况。尽管范围很小,但求最大精度的二值点公式仍然有效。最大精度表示是最有用的选择,除非有避免任何移动的压倒性需要。常数的编码是

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一个KFb而且E一个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扩展

对于二进制点的缩放,求一个结果在这个简单的表达式中:

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

请注意

最后两个公式涉及到一个,除以0和0除以0是可能的。在这些情况下,硬件将给出一些默认行为,但您必须确保这些默认响应为嵌入式系统提供有意义的结果。

总结

从之前对一般[斜率偏差]编码方案中缩放的定点变量的分析中,可以得出这样的结论

  • 加法、减法、乘法和除法都非常复杂,除非对偏差和斜率做出一定的选择。

  • 只使用二进制点的缩放可以保证更简单的数学计算,但通常会牺牲一些精度。

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

  • 常量和变量用有限的位数表示。

  • 变量要么是有符号的,要么是无符号的。

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

另请参阅