Verilog:采用 32K 点变换长度的 FFT

author-image

作者

此示例描述了采用 FFT 英特尔® FPGA 知识产权 (IP) 内核的 32K 点快速傅立叶变换 (FFT)。FFT 是一种离散傅立叶变换 (DFT) 算法,通过分解将所需的计算量从 O(N2) 减少到 O(NlogN)。序列 x(N) 的 DFT 由以下公式给出:

适用于序列 x(n) 的 DFT 的公式当 k = 0、1、… N-1,N 是变换长度。

在此设计示例中,变换长度 N 是 32768。此设计使用时间抽取 (DIT) 方法,将输入序列分解为奇数和偶数采样,馈送到使用 FFT 英特尔 FPGA IP 内核并行实现的两个独立的 16K 点 FFT 模块。将来自 FFT 英特尔 FPGA IP 内核的结果重新组合和重新排序,以获得最终的 FFT 输出。如图 1 中显示。类似于 FFT 英特尔 FPGA IP 内核,此设计示例采用符合 Atlantic 的输入和输出接口。

下载本示例中使用的文件:

该设计的使用受英特尔® 硬件参考设计许可协议中条款和条件的管理和约束。

zip 下载中的文件包括:

  • fft_32K.v—顶层设计文件实现例如 32K 点 FFT
  • parse_fft_input.v—将输入采样重新排序为偶数和奇数样本,以馈送到两个较小的16K 点 FFT 模块
  • fft_small.v—由 FFT 英特尔 FPGA IP 生产 Wrapper 文件。内核配置为实现 16K 的变换长度,采用流式 I/O 数据流结构。
  • combine_fft.v—使用适当的旋转因子重新组合各个 16K 点 FFT 模块的输出
  • fft_32K_streaming_tb.v—用于 RTL 模拟的 Testbench
  • fft_32K_streaming_vo_msim.tcl—用于在 ModelSim - 英特尔 FPGA 软件中自动执行 RTL 模拟过程的 TCL 脚本
  • fft_32K_tb.m—MATLAB 模型用于验证 RTL 模拟结果

图 1 显示了 32K 点 FFT 设计示例的顶层图表。

图 1.32K 点 FFT 设计的顶层图表。

表 1 列出了端口以及每个端口的说明。

相关链接

有关您项目中此设计示例中使用的相关功能的更多信息,请访问: