基于FPGA的FFT算法优化及其在磁共振谱仪中的应用
如果用一般的定点计算,信噪比下降,噪声会将产生的镜像峰湮灭,因此必须采取一定的措施减小由定点化产生的误差。考虑到在64点FFT并行模块里点数是固定的,进行蝶形运算时旋转因子是常数,因此可以根据系数的特点对定点化时的阶码做动态调整,在保证无溢出的条件下最大程度的减小噪声。
如图5所示,对比在Matlab中的仿真结果,在没有采取动态调整措施前进行定点化的噪声量级达到±1(见图5(a)),进行动态调整后下降到10-3(见图5(b)),可见采用动态调整进行定点化可以有效地降低由于有限字长效应引起的噪声。
图6为进行动态调整后在FPGA硬件运行的仿真结果,与软件自带的FFT IP相比误差很小,在输入正弦波的时候可以明显地观察到尖峰,这样的结果足以满足NMR谱仪的信号检测要求。
2.2 64点FFT并行模块资源优化
由于64点FFT模块并行实现,所占用的FPGA逻辑资源太多,在一般的FPGA中难以实现,因此有必要对其进行优化减少所占用的资源。该设计中N是确定的,旋转因子都是常数,蝶形运算中的复数乘法为常系数乘法,根据这个特点,可对使用资源进行优化。
如式(9)所示,64点FFT可分解为384个蝶形运算单元。
n=Nlog N (9)
式中:N为FFT点数;n为所需的蝶形运算单元的个数。
式(5)和(6)各包含1个复数加法运算和1个复数乘法运算,需要2个加法器和4个乘法器实现。但经过如式(10)所示的运算后的复数乘法可用三乘法器实现,因此综合后的资源先比四乘法器架构优化了25%,
(A1+B1i)(A2+B2i)=(A1A2-B1B2)(A1B2-A2B1)i=A1(A2+B2)=B2(A1+B1)+[A1(A2+B2)-A2(A1+B1)] (10)
评论