FFT ARM Cortex-M7的Q31和SP精度



对于精度很重要的DSP应用程序,我想了解使用定点Q31是否比浮点(单精度(更好。更多细节,我目前正在使用ARM Cortex-M7微控制器,我需要使用CMSIS库执行高精度的FFT。我知道SP的尾数有24位,而Q31有31位,因此,Q31的精度应该更好,但我到处都读到,对于需要乘法等运算的算法,应该使用浮点表示,我不明白为什么。

提前谢谢。

要获得不动点的最大值(尾数精度的额外6或7位(,以及避免大量可能的下溢和上溢问题,需要精确了解CMSIS算法中针对每个有效输入数据集的每个算术运算的界限(最小和最大(。

在实践中,完整的误差分析被证明是困难的,并且将所有中间值重新缩放到最佳范围所需的额外操作大大降低了性能,以至于只有更窄的一组情况似乎值得付出努力,而不是使用M7在硬件中支持的IEEE信号或双信号,并且浮点指数范围隐藏了大量(但不是全部!!(的中间结果数值缩放问题。

但对于一些更简单的DSP算法,有时分析和修复缩放并不是问题。如果不分解所需算法中每个算术运算的数值范围,很难判断是哪一个。有时需要完成使用整数运算所需的工作,因为可用的处理器不能很好地或根本不支持浮点运算。

最新更新