一、前言

  FFT运算是目前最常用的信号频谱分析算法。在本科学习数字信号处理这门课时一直在想:学这些东西有啥用?公式推来推去的,有实用价值么?到了研究生后期才知道,广义上的数字信号处理无处不在:手机等各种通信设备和WIFI的物理层信号处理、摄像头内的ISP、音频信号的去噪等。各种算法中,FFT是查看信号本质,也就是频谱的重要手段。之前仅直接调用FFT/IFFT IP核,今天深入探讨下算法本身和实现方案。

二、FFT运算原理及结构

  本文仅对FFT的核心思想、作用和算法结构进行介绍,FFT具体原理和公式推导详见参考文献。FFT是DFT的快速算法,旨在降低计算复杂度以减小处理延迟和占用的软硬件资源,核心思想是将大点数的DFT运算拆分成多个小点数的DFT运算。因此FFT核心公式与DFT相同。

  DFT运算把原始信号采样点与不同的旋转因子做乘累加运算,而旋转因子经过欧拉公式展开后就是角度成倍数关系的正余弦函数。现在DFT在干什么以及怎么干的一目了然:把一段原始信号采样点与不同频率的正余弦信号做“相关运算”,从而找出信号的频率分量。通俗点说就是通过查看信号与不同频率值正余弦信号的相似程度分析信号本身的频率成分。工程应用时,了解到这一点就足够了。

  有了上述理解,再来看FFT算法。公式推导部分只要知道它是根据旋转因子的对称性和周期性把大点数的DFT运算拆分成多个小点数DFT运算就行了,真正要掌握的是推导过后的表达式以及算法结构。以时间抽取(DIT)的基2算法为例,它是根据采样点奇偶序号,不断对N点DFT运算进行两两拆分直到两点DFT运算为止的快速算法。其中的蝶形运算表达式即为这种拆分思想的精华:

  其中,k=0,1,...,N/2-1.X1(k)和X2(k)分别是信号x(n)的偶数序号采样点x(2r)和基数序号采样点x(2r+1)的DFT运算结果。通过上述公式,N点DFT运算拆分成了两个N/2点的DFT运算。信号流图表达为:

  我们以8点FFT运算为例,拆分过程如下。具体讲解见参考文献2.

  FFT运算点数 N=2^L。L则为运算级数,每级有N/2个蝶形。如果是频率抽取(DIF)的基2算法,整体结构和蝶形单元都会有区别。

三、FFT运算的FPGA实现探讨

  从X家FFT/IFFT IP Core的接口信号以及网络上的资源可以看出,为了使接口与FFT运算点数无关,采用串行输入-->并行计算-->并串转换的顶层架构实现FFT功能。并行计算过程中需要求取旋转因子,常见的做法是使用CORDIC算法计算特定角度的正余弦值。如8点FFT要计算0°、-45°、-90°和-135°的正余弦值。正余弦值应该可以直接查表获得,但点数较多时会占用大量的存储资源,如点数为1024,正余弦值位宽为16bit,则存储容量=1024/2*2*16bit= 16Kbit。除了三角函数,运算过程中还包括复数乘法、复数加减法,都是比较简单的操作。后续本人会尝试具体设计FFT运算的迭代和流水线硬件架构及对应的VerilogHDL代码。

参考文献:

1 [图文]第4章快速傅里叶变换 - 百度文库 https://wenku.baidu.com/view/3818bb913c1ec5da50e270df.html

数字信号处理--FFT与蝶形算法 - yu_jianchi - 博客园 https://www.cnblogs.com/luoqingyu/p/5930181.html

FFT算法8点12位硬件实现 (verilog) - 清风醉明月 slp_art - 博客园 https://www.cnblogs.com/sleepy/archive/2011/07/20/2112079.html

数字信号处理专题(3)——FFT运算初探的更多相关文章

  1. 数字信号处理专题(1)——DDS函数发生器环路Demo

    一.前言 会FPGA硬件描述语言.设计思想和接口协议,掌握些基本的算法是非常重要的,因此开设本专题探讨些基于AD DA数字信号处理系统的一些简单算法,在数字通信 信号分析与检测等领域都会或多或少有应用 ...

  2. 数字信号处理专题(2)——利用FPGA进行基本运算及特殊函数定点运算

    一.前言 FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积.滤波.变换等基本的数学运算.但由于FPGA的硬件结构和开发特性使得其对 ...

  3. 数字信号处理--FFT与蝶形算法

    在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征.尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理.因此至DFT被发现以来, ...

  4. FS,FT,DFS,DTFT,DFT,FFT的联系和区别 数字信号处理

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  5. 《数字信号处理》课程实验1 – FFT的实现

    一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2⁡N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...

  6. 数字信号处理--FFT

    FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因.另外,FFT可以将 ...

  7. FPGA与数字信号处理

    过去十几年,通信与多媒体技术的快速发展极大地扩展了数字信号处理(DSP)的应用范围.眼下正在发生的是,以更高的速度和更低的成本实现越来越复杂的算法,这是针对高级信息服更高带宽以及增强的多媒体处理能力等 ...

  8. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理

    原址:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

  9. 数字信号处理与音频处理(使用Audition)

    前一阵子由于考博学习须要,看了<数字信号处理>,之前一直不清除这门课的理论在哪里应用比較广泛. 这次正巧用Audition处理了一段音频,猛然发现<数字信号处理>这门课还是很实 ...

随机推荐

  1. sql语句查询执行顺序

    http://blog.csdn.net/bitcarmanlee/article/details/51004767

  2. [ Java面试题 ]持久层篇

    1.什么是ORM?  对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术: 简单的说,ORM是通过使用描 ...

  3. PyCharm 专题

    pycharm常用设置 pycharm中的设置是可以导入和导出的,file>export settings可以保存当前pycharm中的设置为jar文件,重装时可以直接import settin ...

  4. python多线程(一)

    ---恢复内容开始--- 首先先来看个单线程的例子: from time import ctime,sleep def music(): ): print("I was listening ...

  5. windows命令中的cd

    cd命令的作用为改变文件夹,也就是跳转目录.切换路径的意思.它后面可以接驱动器符号.完整路径和相对路径. 打开命令行窗口的时候,默认的目录位于当前用户所在的路径下,比如:C:\Users\koi\De ...

  6. BZOJ_1369_[Baltic2003]Gem_树形DP

    BZOJ_1369_[Baltic2003]Gem_树形DP Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值, ...

  7. 虚拟机console基础环境配置——安装VMware Tools

    1. 虚拟机设置中点击安装2. 虚拟机中挂载VMware Tools镜像3. 解压安装4. 配置共享目录5. 有关VMware Tools 1. 虚拟机设置中点击安装 VMware workstati ...

  8. 一个优秀团队leader应该具备的几点素质

    首先,技术要过硬.毕竟一个团队是在靠技术为别人创造价值的,一定程度上,团队leader的技术能力决定了整个团队的技术上限.leader对技术的坚持和追求很可能会影响团队成员对技术的坚持和追求,至少le ...

  9. 机器学习web服务化实战:一次吐血的服务化之路

    背景 在公司内部,我负责帮助研究院的小伙伴搭建机器学习web服务,研究院的小伙伴提供一个机器学习本地接口,我负责提供一个对外服务的HTTP接口. 说起人工智能和机器学习,python是最擅长的,其以开 ...

  10. ReentrantLock之公平锁源码分析

    本文分析的ReentrantLock所对应的Java版本为JDK8. 在阅读本文前,读者应该知道什么是CAS.自旋. 本文大纲 1.ReentrantLock公平锁简介 2.AQS 3.lock方法 ...