Skip to content
This repository was archived by the owner on May 9, 2026. It is now read-only.

zhangzw0170/FPGA_Fixed_FFT

Repository files navigation

FPGA Fixed-Point FFT

基于 Verilog 的多架构定点 FFT 处理器实现,覆盖 32/128 点,支持仿真验证与 FPGA 上板。目标平台 Xilinx Artix-7 (XC7A100T),纯手写 RTL,未使用任何厂商 FFT IP。

架构总览

目录 架构 点数 吞吐率 DSP 特点
F4T_Legacy Radix-2 DIF (原位) 32 / 128 1 samp/clk ~16 入门实现,教学用
F4T_SDF / F4T_SDF_2 SDF 单路延迟反馈 128 1 samp/clk ~8 低资源、流水线
F4T_MDF MDF 4 路并行 32 / 128 4 samp/clk ~32 高吞吐、上板验证
F4T_FullPar32 全并行 32 32 samp/clk ~144 最低延迟 (15 clk)
F4T_FullPar128 全并行 128 128 samp/clk >800 仿真验证 (超 DSP 容量)

共通设计规格

  • 数据格式: Q3.12 定点 (16-bit, [-8, 7.9997])
  • 旋转因子: Q1.15 定点 (16-bit)
  • 缩放策略: 每级右移 1 bit,输出幅度 = 真实幅度 / N
  • 输出顺序: 位反转序 (Bit-Reversed Order)
  • 复数乘法: 伪 IP 核优化,特殊旋转因子零 DSP 消耗

快速上手

环境要求

  • Vivado 2020.2+
  • MATLAB (用于重新生成测试向量,可选)

仿真 (以 MDF 为例)

  1. fixed_pkg.vh 中的 DATA_ROOT 修改为本机 data/ 目录的绝对路径
  2. 在 Vivado Tcl Console 中:
cd <repo_path>/F4T_MDF/scripts
source create_vivado_projects.tcl
  1. 或直接使用 Tcl 脚本运行 CLI 仿真:
cd <repo_path>/F4T_MDF/sim
source run_xsim_128_all.tcl   ;# 128 点全模式回归

上板 (以 FullPar32 为例)

cd <repo_path>/F4T_FullPar32/src/scripts
source create_project_32.tcl

生成 Bitstream 后下载到开发板,ILA 触发条件设为 start_btn

目录结构

FPGA_Fixed_FFT/
├── F4T_Legacy/          # Radix-2 DIF 原位 FFT
│   ├── src/verilog/     # RTL 源码
│   ├── tb/              # 测试平台
│   ├── scripts/         # 自动验证脚本
│   └── sim_data/        # 仿真数据
├── F4T_SDF/             # SDF v1 (含 Vivado 工程)
├── F4T_SDF_2/           # SDF v2 (重构版)
│   ├── src/rtl/         # RTL 源码
│   ├── src/tb/          # 测试平台
│   ├── src/constraint/  # FPGA 约束
│   └── data/            # 仿真数据
├── F4T_MDF/             # MDF 4 路并行
│   ├── rtl/             # RTL 源码
│   ├── tb/              # 测试平台
│   ├── scripts/         # 工程创建脚本
│   └── data/            # 仿真数据
├── F4T_FullPar32/       # 32 点全并行
├── F4T_FullPar128/      # 128 点全并行
├── F4T_FullPar/         # 全并行 (合并工程)
└── doc/                 # 设计文档

综合结果 (XC7A100T, 100 MHz)

架构 点数 LUT FF DSP WNS (ns) 功耗 (W)
FullPar 32 7,549 5,408 144 +0.119 0.614
MDF 32 3,682 2,944 32 - -
MDF 128 14,296 11,776 128 - -
SDF 128 1,802 1,472 8 - -

128 点全并行所需 DSP (>800) 超出 XC7A100T 容量 (240),仅仿真验证。

验证方法

每个架构均包含 MATLAB 参考数据生成器和自动对比测试平台:

  1. MATLAB 脚本生成激励和参考结果 (.hex)
  2. Testbench 读取数据驱动 DUT
  3. 自动将 FFT 输出与 MATLAB 参考逐点对比
  4. Tcl Console 输出 PASSED / FAILED 及误差统计

合作者

skyswordx (circLΣMoon)Triwalt

License

MIT

About

Verilog 多架构定点 FFT 处理器 | Radix-2 DIF / SDF / MDF / 全并行 | 32/128 点 | Xilinx Artix-7

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors