对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的,真的不允许自己留一点疑惑,必须深挖到底,一点含糊都不留给自己,其实,不知道大家有没有这样的疑惑,现在不懂的,懒得去研究的,估计过不了多久这个知识点又会兜回来找你的。我有时候也会侥幸自己能逃过不会做的任务,但是真的过不了多久,我越是不会的东西就越是会来找我,感觉今天的话有点多,赶紧回到正题上来。FFT是什么?我也曾经花了大半个月的时间去研究过它的原理,还手写代码不调用IP核去实现它的计算,这个实现过程还是挺复杂的,所以最简单易上手的还是好好学会调用IP核吧,这个IP核真的忒好用呢。

FFT其实本质上就是用来做频谱分析的,我给你一堆混杂的频谱,你知道里面有哪些频率吗?你不知道,但是FFT知道,它能帮你分析混杂频谱中有哪些频率成分。说得官方一点就是:FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域,有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了,这就是很多信号分析采用FFT变换的原因。简单来说,FFT的作用就是对信号进行频谱分析

我们首先结合MATALB这个强大的数学分析软件来生动阐释下FFT这个概念,它可以拿来做什么?它是如何实现频谱分析的?一个模拟信号,经过ADC采样之后,就变成了数字信号,我们就可以拿采样得到的数字信号,做FFT变换。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。 例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由这条公式可以看出,Fn所能分辨到的频率为Fs/N,举例来说如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,那这个对应的时间序列点数就是2048,则结果可以分析到0.5Hz。所以如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。

  假设我们有一个信号,它含有2V的直流分量,里面包含频率为5MHz、相位为-30度、幅度为3V的交流信号,以及一个频率为7.5MHz、相位为90度、幅度为1.5V的交流信号。用数学表达式就是如下:    S1=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);%它含有2V的直流分量,频率为5MHz、相位为-30度、幅度为3V的交流信号,以及一个频率为75Hz、相位为90度、幅度为1.5V的交流信号,这里式中的cos参数为弧度,所以-30度和90度要分别换算成弧度。我们以25.6MHz的采样率对这个信号进行采样,总共采样256点。根据公式:Fn=(n-1)*Fs/N,我们可以知道,每两个点之间的间距就是0.1MHz,也就是它的分辨率是0.1MHZ,第n个点的频率就是n-1。我们的信号有3个频率:0MHz、5MHz、7.5MHz,根据公式,n分别在1、51、76,也就是应该分别在第1个点、第51个点、第76个点上出现峰值,其它各点应该接近0。
实际情况如何呢?我们把S1这个交流信号灌进去MATLAB看看计算结果:
   1)峰值出现位置:我们可以看到在第1个点、第51个点、第76个点上分别出现峰值:

2)信号幅值对比:

预测猜想:按照我们的原始频率输入,第1个点、第51个点、第76个点的幅度值分别是2、3、1.5;

Matlab输出结果:

3)相位输出验证:

预测猜想:第1个点直流分量没有相位输出,不管,第51个点、第76个点的幅度值分别是-30,90;

Matlab输出结果:

   以上就是FFT结合Matlab的数学分析,这个例子是我们预先知道了频率的成分,然后利用FFT对原始信号作FFT运算,最后根据运算结果提取到的频谱来验证是否是我们灌进来的那些频率信号。在实际的频谱分析中,我们往往是不知道频率成分的,但是基于合适的采样率,经过了FFT运算后,可以提取到信号所对应的幅度值、相位、频率,从而我们就可以还原出原始信号所携带的一些频谱成分。
  基于Matlab的FFT数学分析就讲到这里,接下来会详细学习下FFT这个IP核。

FFT IP核调用与仿真之FFT数学分析的更多相关文章

  1. FFT IP核调用与仿真之SCALE压缩因子设置

    关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的 ...

  2. 从Xilinx FFT IP核到OFDM

    笔者在校的科研任务,需要用FPGA搭建OFDM通信系统,而OFDM的核心即是IFFT和FFT运算,因此本文通过Xilinx FFT IP核的使用总结给大家开个头,详细内容可查看官方文档PG109.关于 ...

  3. Quartus FFT IP核简介

    为了突出重点,仅对I/O数据流为steaming的情况作简要说明,以便快速上手,有关FFT ip核模型及每种设置详细介绍请参考官方手册FFT MegaCore Function User Guide. ...

  4. 实测—fft IP核使用(包括ifft的配置使用)

    Vivado xilinx fft9.0 使用笔记: ****注 仿真实测1024点的转换需要经过1148个时钟周期才能得到转换结果: 模块配置信号含义请参考pg109文档手册(写的贼烂会看晕),不详 ...

  5. FPGA基础学习(1) -- FFT IP核(Quartus)

    为了突出重点,仅对I/O数据流为steaming的情况作简要说明,以便快速上手,有关FFT ip核模型及每种设置详细介绍请参考官方手册FFT MegaCore Function User Guide. ...

  6. QuartusII 13.0 PLL IP Core调用及仿真

    有一个多月没用用Quartus II了,都快忘了IP 是怎么用调用的了,还好有之前做的笔记,现在整理出来,终于体会到做笔记的好处. 一.  QuartusII的pll的调用 打开软件界面 Tool—— ...

  7. Xilinx FFT IP核缩放因子说明

    以1024点FFT为例, reg [9:0] scale_sch = 10'b11_10_01_01_01; 流水线结构中,将每个基 2 的蝶形处理单元视为一个阶段. 每个阶段进行一次数据的缩减,缩减 ...

  8. Xilinx FFT IP v9.0 使用(一)

    reference:https://blog.csdn.net/shichaog/article/details/51189711 https://blog.csdn.net/qq_36375505/ ...

  9. Xilinx FFT IP v9.0 使用

    该ip用于实现N=2**m(m=3~16)点FFT的变换, 实现的数学类型包含: A)      定点全精度 B)      定点缩减位宽 C)      块浮点 每一级蝶型运算后舍入或者取整.对于N ...

随机推荐

  1. Linux_SquidProxyServer代理服务器

    目录 目录 Squid proxy server Web proxy server operating principle Squid features Setup squid server Setu ...

  2. pthon之mock应用

    研发过程中常见分工合作开发接口,但互相之间接口有依赖,这时候便可以使用mock 目录 1.安装 2.使用mock调试自己写的方法 3.使用mock解除依赖关系 1.安装 由于我的是python2.7, ...

  3. js-禁止长页面滚动

    标题的需求问题其实我经常遇到.尤其是在碰到页面同时出现有视频及弹层的情况. 当然我说的问题皆是针对微信H5开发的哈 IOS中,视频播放,弹层出现时,视频在弹层的下面,不会出现问题: 安卓手机中,完了, ...

  4. Reinforcement Learning Index Page

    Reinforcement Learning Posts Step-by-step from Markov Property to Markov Decision Process Markov Dec ...

  5. Java 位运算符和移位运算符

    一,运算的位运算符: &  ~ |  ^     主要是对二进制的位计算 :   &  : 两个操作数中位都为1 结果才为1   其他结果为0      forExample: 128 ...

  6. layer.msg()自动关闭后刷新页面

    layer.msg("2秒就消失哦", { time: 2000 }, function () {                    window.location.href ...

  7. python+selenium链接对象操作

    对于链接对象常见的操作有:单击.获取链接文字.获取链接地址等: from selenium import webdriverfrom time import sleep driver = webdri ...

  8. Nacos 配置中心原理分析

    我们从原生SDK代码中入手,可以发现最核心的两行代码: ConfigService configService=); 首先我们先来看 NacosFactory.createConfigService ...

  9. 【CF321E】+【bzoj5311】

    决策单调性 + WQS二分 贴个代码先... //by Judge #pragma GCC optimize("Ofast") #include<bits/stdc++.h& ...

  10. 什么是服务端伪造(SSRF)

    什么是服务端伪造(SSRF) 原文:GitHub Pages and Single-Page Apps 译者:neal1991 welcome to star my articles-translat ...