【问题标题】:Precision of Q31 and SP for FFT ARM Cortex-M7FFT ARM Cortex-M7 的 Q31 和 SP 精度
【发布时间】:2020-04-27 14:38:23
【问题描述】:
我想了解对于精度很重要的 DSP 应用,使用定点 Q31 是否优于浮点(单精度)。
更多详细信息,我目前正在使用 ARM Cortex-M7 微控制器,我需要使用 CMSIS 库以高精度执行 FFT。我知道 SP 有 24 位尾数,而 Q31 有 31 位,因此,Q31 的精度应该更好,但我到处读到,对于需要乘法等的算法,浮点表示应该是用过,不明白为什么。
提前致谢。
【问题讨论】:
标签:
signal-processing
cortex-m
fixed-point
fpu
cmsis
【解决方案1】:
从固定点中获取最大值(即额外的 6 或 7 位尾数精度),以及避免大量可能的下溢和溢出问题,需要准确了解 每个的边界(最小值和最大值) CMSIS 算法中针对每组有效输入数据的算术运算。
在实践中,一个完整的错误分析被证明是困难的,并且需要将所有中间值重新调整到最佳范围所需的附加操作会大大降低性能,以至于只有一小部分案例似乎值得付出努力,而不是使用任何一个IEEE 信号或双精度信号,M7 在硬件中支持,浮点指数范围隐藏了大量(但不是全部!!)中间结果数值缩放问题。
但对于一些更简单的 DSP 算法,有时分析和修复缩放不是问题。如果不分解所需算法中每个算术运算的数值范围,很难分辨出哪个。有时需要完成使用整数运算所需的工作,因为可用的处理器不能很好地或根本不支持浮点运算。