问题描述
12bit输入数据位宽时,FFT运算结果异常。
现象及波形
分析过程
1、 与输入数据的处理方式有关系。
2、 与输出数据的处理方式有关系。
3、 与旋转因子的位数选择有关系。
4、 输入数据和输出数据padding方式的区别,输入数据用0来Padding,输出数据时sign padding。
5、 旋转因子位数太低,导致精度计算精度很低。
6、 输入数据位宽和输入数据位宽相同,FFT运算后输出数据溢出。
验证
1、 将FFT核的输入数据位宽和旋转因子设置成相同的值,均设为12bit。
2、输入数据位宽低时,旋转因子的精度被自动降低。
解决方案
1、若旋转因子的位数大于数据数据的位数,自动将旋转因子位数与输入数据保持一致,因为需要将输入数据宽度和旋转因子宽度设置成相同的值。
2、采用默认的Scale_Schedule时,输入满幅度信号,会导致FFT运算结果溢出。在FFT运算完毕后要对溢出进行检测,此外,要保证数据不溢出,把输入数据位数提高或者配置FFT的Scale_Schedule。
附图
不同位数下FFT运算结果精度比较
采用12bit输入位宽、12bit旋转因子宽度时的转换结果。
采用13bit输入位宽、13bit旋转因子宽度时的转换结果。
FFT核旋转因子位宽和输入数据位宽对FFT运算结果精度的影响
最新推荐文章于 2024-07-24 14:54:00 发布