5 FIR滤波器的应用及其DSP实现
5.1. FFT算法的实现
FFT是DFT的一个快速算法,是为减少DFT计算次数的一种快速有效的算法。它是将DFT分解开来进行运算,理论上是一致的,只是通过分解DFT运算来达到减少运算量的目的。其突出的优点在于能快速高效地和比较精确地完成DFT的计算。利用一定的运算结构变换,将N点的DFT 转化成多个小的点数 DFT 的运算,
knWN再利用的周期性和对称性,就能大大减少计算量。
DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数DSP芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。
用TMS3205410的汇编程序实现FFT算法主要分为四步:
1、实现输入数据的比特反转
输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。
2、实现N点复数FFT
N点复数FFT算法的实现可以分为三个功能模块,即第一级蝶形运算、第二级蝶形运算、第三级至log2N级蝶形运算。
3、功率谱的计算
用FFT计算x(n)的频谱,即计算
nk X k x n WN
n 0N 1
X(k)一般是由实部和虚部组成的复数,即
X k XR k jXI k
因此,计算功率谱时只需将FFT变换好的数据,按照实部和虚部求它们的平方和,然后对平方和进行开平方运算。
4、输出FFT结果