【FPGA】FFT测量信号频率(Quartus IP核)_quartus fft
文章目录
一、前言
二、FFT是什么(原理)?
三、FFT IP核参数介绍
四、仿真
0、文件完整结构
1、设置IP核
2、例化FFT,并完善顶层文件
3、利用matlab生成正弦波信号
4、导出变量x生成的正弦波数据
5、编写testbench
6、RTL Simulation
五、上板
1、matlab生成正弦波信号并导出mif文件
2、ram ip核设置及相关模块
ram_ip例化(简单驱动)
ram_rw(读写控制)
fft_ram(连接fft和ram)
3、fft ip核
4、计算频谱下标
5、上板验证(signaltap)
六、IP核破解
参考文献及资料
总结
一、前言
注意:笔者使用的是Quartus Standard 17.1版本,高版本的Quartus需要先破解IP核才能调用FFT,不然在编译仿真时会在EDA Netlist Writer报错说没有相应的license,同时打开simulation tool也会报错。板子用的是小梅哥的AC620V2开发板,型号是cyclone IV E : EP4CE10F17C8。
二、FFT是什么(原理)?
FFT(快速傅里叶变换)是数字信号处理中一种重要的算法,用于将一个信号从时域转化为频域。其原理基于傅里叶变换,但相比传统的傅里叶变换,FFT算法具有更高的计算效率。
FFT算法的原理是将一个N点的离散信号通过递归分治的方式分解成多个小规模的离散信号,然后通过频域旋转因子的运算将其合并成最终的频域结果。具体而言,FFT算法通过将信号分解为偶数点和奇数点,然后再对这些小规模的子问题进行傅里叶变换,最终将结果合并得到信号的频域表示。
FFT算法在数字信号处理中具有重要的意义。首先,FFT算法可以将信号从时域转换为频域,这使得我们可以了解信号的频谱特征,例如信号的频率成分、幅度和相位信息等。这对于信号处理、频谱分析和滤波等应用非常重要。
其次,FFT算法具有高效的计算速度。传统的傅里叶变换算法的计算复杂度为O(N^2),而FFT算法的计算复杂度为O(NlogN)。这意味着FFT算法能够在较短的时间内进行大规模信号的频域变换,对于实时信号处理和大数据处理具有重要意义。
此外,FFT算法还有其他一些重要的应用,例如信号滤波、频谱估计、相关性分析和频谱乘法等。这些应用使得FFT成为数字信号处理中必不可少的工具。
快速傅里叶变换的基本思想是将时域序列逐次分解为一组子序列,利用旋转因子的特性,由子序列的DFT来实现整个序列的DFT。
三、FFT IP核参数介绍
按以下步骤可以打开官方对于FFT IP核的解释文档
双击FFT可以进入IP核设置界面
Transform:Length是指转换序列长度或者在可变数据流模式下的最大转换长度;Direction可选FFT或者逆快速傅里叶变换IFFT。同时可以在端口信号inverse处设置变换方向,0为FFT,1为IFFT。
.inverse (inverse), // .inverse
I/O:Data Flow可以选择四种模式Variable Streaming、Streaming、Buffered Burst、Burst。可以根据自己的需求选择具体的模式。Streaming模式允许对于输入数据的持续处理并且持续输出处理后的数据流,不需要暂停输入输出数据流。Variable Streaming模式和Streaming模式很相似,但Variable Streaming在FFT运行过程中可以处理不同长度的序列。Buffered Burst模式进行FFT的处理时间会相对久一点,但对于内存资源的需求会比Streaming模式少。Burst模式和Buffered Burst模式也很相似,但Burst会消耗更少的内存资源,同时平均吞吐量会更低。
Data and Twiddle:设置数据类型和旋转因子。和之前设置的IO模式有对应关系,否则会显示报错。可以再具体翻一翻手册。
Basic Parameters
2048, 4096, 8192,
16384, 32768, or 65536.
Variable streaming also
allows 8, 16, 32,
131072, and 262144
maximum FFT length.
Forward,reverse,
bidirectional
Streaming
Variable Streaming
Buffered Burst
Burst
Reverse Order, Natural
Order, N/2 to N/2
floating point, or block
floating point
only), either fixed point with natural bit-growth or single precision floating point. Floating-point bidirectional IP cores expect input inThe internal data representation type (variable streaming FFT only), either fixed point with natural bit-growth or single precision floating point. Floating-point bidirectional IP cores expect input in
variable streaming only.
variable streaming only. Twiddle factor precision must be less
than or equal to data precision.
Basic Parameters
在Burst模式下还需要配置Advanced Parameters,但只需要配置FFT Engine Architecture和Number of Parallel FFT Engines。