一、介绍
这里介绍一个不错的开源FFT IP,此IP的FFT点数可调,位宽可调。
此FFT IP是single-path pipeline FFT,也即时域离散点数据是挨个输入模块的,不是并行输入。此IP采用了流水线,一拍计算一个蝶形运算。
此FFT与通常的“基2 FFT算法”(
Radix
−
2
\text {Radix}-2
Radix−2 FFT)不同,其采用的是
Radix
−
2
2
\text {Radix}-2^2
Radix−22 FFT算法。
代码网址:https://github.com/nanamake/r22sdf
二、设计原理
(1)蝶形运算(按频率抽取的,与按时间抽取的不同)
与通常的“基2 FFT算法”(
Radix
−
2
\text {Radix}-2
Radix−2 FFT)不同,此代码采用的是
Radix
−
2
2
\text {Radix}-2^2
Radix−22 FFT算法。
这两种算法的蝶形运算方式不同,如下两张图:
(2)FFT算法流图
以16点FFT为例,此设计用的
Radix
−
2
2
\text {Radix}-2^2
Radix−22 FFT算法流图,如下图所示,是按频率抽取的。
通常的按频率抽取的16点
Radix
−
2
\text {Radix}-2
Radix−2(基2) FFT算法流图如下图所示:
(3)设计框图
此代码算一个16点 FFT的流程如下两张图:
(4)FFT流水线
以16点为例(可结合上面的
Radix
−
2
2
\text {Radix}-2^2
Radix−22 FFT算法流图来看)。