基于高速定点FFT算法的FPGA设计方案
引 言
快速傅里叶变换(FFT)作为计算和分析工具,在众多学科领域(如信号处理、图像处理、生物信息学、计算物理、应用数学等)有着广泛的应用。在高速数字信号处理领域,如雷达信号处理,FFT的处理速度往往是整个系统设计性能的关键所在。
针对高速实时信号处理的要求,软件实现方法显然满足不了其需要。近年来现场可编程门阵列(FPGA)以其高性能、高灵活性、友好的开发环境、在线可编程等特点,使得基于FPGA的设计可以满足实时数字信号处理的要求,在市场竞争中具有很大的优势。
在FFT算法中,数据的宽度通常都是固定的宽度。然而,在FFT的运算过程中,特别是乘法运算中,运算的结果将不可避免地带来误差。因此,为了保证结果的准确性,采用定点分析是非常必要的。
1 FFT算法原理
FFT算法的基本思想就是利用权函数的周期性、对称性、特殊性及周期N的可互换性,将较长序列的DFT运算逐次分解为较短序列的DFT运算。针对N=2的整数次幂,FFT算法有基-2算法、基-4算法、实因子算法和分裂基算法等。这里,从处理速度和占用资源的角度考虑,选用基-4按时间抽取FFT算法 (DIT)。对于N=4γ,基-4 DIT具有log4N=γ次迭代运算,每次迭代包含N/4个蝶形单元。蝶形单元的运算表达式为:
其信号流如图1。式中:A,B,C,D和A′,B′,C′,D′均为复数据;W=e-j2π/N。进行1次蝶形运算共需3次复乘和8次复加运算。N=64 点的基-4DIT信号流其输入数据序列是按自然顺序排列的,输出结果需经过整序。64点数据只需进行3次迭代运算,每次迭代运算含有N/4=16个蝶形单元。
2 FFT算法的硬件实现
2.1 流水线方式FFT算法的实现
为了提高FFT工作频率和节省FPGA资源,采用3级流水线结构实现64点的FFT运算。流水线处理器的结构如图2所示。
每级均由延时单元、转接器(SW)、蝶形运算和旋转因子乘法4个模块组成,延时节拍由方框中的数字表示。各级转接器和延时单元起到对序列进行码位抽取并将数据拉齐的作用。每级延时在FPGA内部用FIFO实现,不需要对序列进行寻址即可实现延时功能。数据串行输入,经过3级流水处理后,串行输出。
转接器有一定的工作规律。例如,当第0级变换做完进入转接器SW1前,先对后三路数据进行一定节拍的延时,延迟节拍分别为4,8,12。为了说明规律,把输入转接器的四路数据按照前后次序进行分组,每4个时钟节拍为1组,共16组,如图3(左)所示。在数据流串行经过转接器SW1时,第0组中的数据保持不变,第1组中的数据与第4组中的数据交换;5不变,2和8交换,3和12交换,6和9交换;10不变,7和13交换,11和14交换,15不变。交换完毕后,前三路数据经过延迟节拍分别为12,8,4的FIFO存储器输出,位置关系如图3所示。
相关文章
- 2023-07-31扫描反射镜轻量拓扑优化设计
- 2022-08-07基于CAN总线的汽车内部网络系统研究
- 2023-09-05双基地声纳目标低频散射特性研究
- 2021-12-20适用于控制永磁无刷直流电机的嵌入式微控制器
- 2021-12-09基于ISO14443A协议的RFID芯片模拟前端设计
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。