对算术和扩展的建议
算术运算和定点缩放
接下来的小节描述算术运算和定点比例之间的关系,并提供一些基本建议可能适合您的定点设计。对于每一个算术运算,
一般(斜率偏见)描述的编码方案扩展使用。
结果是自动选择的扩展基于扩展的两个输入。换句话说,比例是多少继承了。
基于扩展选择
结果的算术运算的数量最小化
最大限度地提高结果的精度
此外,binary-point-only扩展作为通用编码模式的一个特例。
在嵌入式系统中,硬件接口的扩展变量(ADC和DAC)是固定的。然而对于大多数其他变量,比例是你可以选择最好的设计。缩放定点变量时,重要的是要记住
你扩展的选择依赖于特定的设计模拟。
没有最好的扩展方法。所有的选择都有相关的优点和缺点。本节的目的是揭露这些优点和缺点。
除了
考虑添加两个真实的值:
这些值代表的通用(斜率偏见)描述的编码方案扩展:
在定点系统中,结果找到该变量的值问一个:
这个公式表明
一般来说,问一个不是通过一个简单的加法计算的问b和问c。
一般来说,有两个乘法常数和变量,两个补充,一些额外的转移。
继承的扩展速度
的过程中发现之和的比例,一个合理的目标是简化计算。简化计算的数量应该减少操作,从而提高执行速度。下面的选择可以帮助减少算术运算的数量:
集B一个=Bb+Bc。这就消除了一个加法。
集F一个=Fb或F一个=Fc。要么选择消除乘法的两个常数乘以变量。
由此产生的公式是
或
似乎这些方程等价的。然而,你选择的舍入和精度可以站在另一个选择。为了进一步简化问题,你可以选择E一个=Ec或E一个=Eb。这将消除一些转变。
继承的扩展最大精度
的过程中发现之和的比例,一个合理的目标是最大的精度。你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围max (V一个)和分钟(V一个)。对于一个求和,可以确定的范围
你现在可以推导出斜率最大精度:
在大多数情况下,输入和输出文字大小要大于1,和斜率
这只取决于输入和输出的大小。相应的偏见
偏见的价值取决于输入和输出是否签署或无符号数。
如果输入和输出都是无符号,那么这些变量都是零和的最小值偏差降低到一个特别简单的表单:
如果输入和输出都签名,然后偏差
Binary-Point-Only扩展
binary-point-only缩放,发现问一个结果在这个简单的表达式:
这个比例的选择的结果只有一个加法和移位。避免任何乘法binary-point-only缩放的一大优势。
积累
的累积值与增加密切相关:
发现问a_new包括一个乘法常数和变量,两个补充,和一些变化:
定点实现的重要区别是,输出的比例是相同的第一个输入的比例。
Binary-Point-Only扩展
binary-point-only缩放,发现问a_new结果在这个简单的表达式:
这个扩展选项只涉及一个加法和移位。
请注意
价值产生的负面累积的结果,类似于那些积累产生的值。
乘法
考虑两个真实值的乘积:
这些值代表的通用(斜率偏见)描述的编码方案扩展:
在定点系统中,找到该变量值的乘法的结果问一个:
这个公式表明
一般来说,问一个不是通过一个简单的乘法计算的问b和问c。
一般来说,有一个乘法的一个常数和两个变量,两个乘法常数和变量,三个增加,一些额外的转移。
继承的扩展速度
算术运算的数量可以减少与这些选择:
集B一个=BbBc。这就消除了一个加法操作。
集F一个=FbFc。这简化了三重multiplication-certainly最困难的部分方程来实现。
集E一个=Eb+Ec。这就消除了一些转变。
由此产生的公式是
继承的扩展最大精度
你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围
和
对于乘法,可以确定的范围
在哪里
Binary-Point-Only扩展
binary-point-only缩放,发现问一个结果在这个简单的表达式:
获得
考虑常数和变量的乘法
在哪里K是一个常数称为收益。自V一个乘法的结果一个常数和变量,发现问一个是一个简化版的通用定点乘法公式:
注意括号中的词汇可以离线计算。因此,只有一个乘法的一个常数和变量。
实现上述方程不改变它一个更复杂的形式,常数需要使用binary-point-only格式编码。对于每个这些常数,只是微不足道的一个值范围。尽管微不足道的范围,二点公式最大精度仍然有效。最大精度表示是最有效的选择,除非有一个压倒一切的需要避免任何转移。常量的编码
导致公式
继承的扩展速度
算术运算的数量可以减少与这些选择:
集B一个=KBb。这就消除了一个常数项。
集F一个=KFb和E一个=Eb。这集其他常数项统一。
由此产生的公式简单
如果是不同的比特数,那么处理潜在的溢出或执行符号扩展是唯一可能的操作。
继承的扩展最大精度
比例最大精度不需要不同的扩展速度,除非输出比输入较少的比特。如果是这种情况,那么应该避免饱和斜率除以2为每个失去了一些。这可以防止饱和但使舍入。
部门
值是一个分工操作,应避免在定点的嵌入式系统,但它可以发生在的地方。因此,考虑两个真实值的划分:
这些值代表的通用(斜率偏见)描述的编码方案扩展:
在定点系统中,找到该变量值结果的部门问一个:
这个公式表明
一般来说,问一个不是通过一个简单的除法计算的问b通过问c。
一般来说,有两个乘法常数和变量,两个补充,由一个变量,变量的一个部门一个部门一个常数的变量,和一些额外的转移。
继承的扩展速度
算术运算的数量可以减少与这些选择:
集B一个= 0。这就消除了一个加法操作。
如果Bc= 0,然后设置部分的斜率F一个=Fb/Fc。这就消除了一个常数乘以变量乘法。
由此产生的公式是
如果Bc≠0,然后没有明确的建议。
继承的扩展最大精度
你可以确定最大精度缩放是否已知变量的范围。最大化精度显示,您可以确定定点操作的范围
和
对于部门,您可以确定的范围
在非零分母
Binary-Point-Only扩展
binary-point-only缩放,发现问一个结果在这个简单的表达式:
请注意
在过去的两个公式涉及问一个除以零,零除以零是有可能的。在这些情况下,硬件会给一些默认的行为,但你必须确保这些默认响应为嵌入式系统提供有意义的结果。
总结
定点前面分析的变量中的比例一般(斜率偏见)编码方案,你可以得出结论
加法,减法,乘法,除法可以积极参与,除非某些选择的偏见和斜坡。
Binary-point-only扩展保证简单数学,但通常会牺牲一些精度。
注意,前面的公式不显示如下:
常量和变量使用有限数量的比特表示。
签署或无符号变量。
舍入和溢出处理方案。你必须做出这些决策之前实际的定点实现。