【3.3】FFT变换的FPGA实现整体概述以及模块划分

目录

1.FFT变换的FPGA实现概述

2.FFT变换的FPGA实现模块划分

[2.1 第一级16点FFT运算](#2.1 第一级16点FFT运算)

[2.2 旋转因子复数乘法](#2.2 旋转因子复数乘法)

[2.3 第二级16点FFT运算](#2.3 第二级16点FFT运算)

[2.4 模平方计算单元](#2.4 模平方计算单元)


1.FFT变换的FPGA实现概述

在本课题中,我们将实现256点的FFT变换。其中256点FFT采用二维分治策略进行。

即:

将256点输入拆分为16组×16点,先对每组做16点FFT→乘以旋转因子→再做16点FFT→输出结果。也就是通过2次16点FFT变换,来实现256点FFT,从而大大简化系统实现的复杂性。

其对应的数学公式可以表示为:

其中,中括号中的表达式

这一级做的就是内层16点FFT。

然后做蝶形运算,每个蝶形单元:

可以统一表示为:

其中,A、B为输入复数;W为旋转因子。

2.FFT变换的FPGA实现模块划分

根据上一个小节关于FFT变换实现的基本原理,我们给出如下的整体设计构架(大致的模块划分,后续课程,如果细微的调整,会做说明):

2.1 第一级16点FFT运算

第一级16点FFT蝶形运算,其内部由多级基16蝶形运算单元阵列构成,采用流水线结构,对每组16点数据执行蝶形计算X=A+W16p​⋅B 。该模块包含复数加法器与复数乘法器,调用内置旋转因子W16。这个模块运算完成,进入归一化阶段。通过这个模块可以完成256点分治FFT的内层16点变换,大幅降低FFT计算量。

2.2 旋转因子复数乘法

这个模块通过FPGA的内部ROM核预存储256点旋转因子W256的余弦、正弦值。根据当前数据组序号,查表取出对应旋转因子。执行复数乘法(a+jb)(c+jd)=(ac−bd)+j(ad+bc),最后将乘法结果直接输出。通过这个模块衔接两级16点FFT,完成分治FFT的跨级相位校正。

2.3 第二级16点FFT运算

与第一级FFT16完全一致,仅输入位宽更宽。对转置后的16点组再次执行基16蝶形运算。完成256点FFT的外层16点变换,得到完整频域复数结果。通过这个模块最终完成全部256点快速傅里叶变换,输出频域数据。

2.4 模平方计算单元

对复数实部、虚部进行补码绝对值运算,对绝对值后的实部、虚部分别做平方乘法。将两个平方结果相加,得到幅度平方:

∣X(k)∣^2=Xr^2​+Xi^2​

最终输出作为频谱能量结果。

相关推荐
坏孩子的诺亚方舟4 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐5 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐5 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH6 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡6 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安6 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐7 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯7 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客7 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA7 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发