历史上的今天
返回首页

历史上的今天

今天是:2025年04月25日(星期五)

正在发生

2019年04月25日 | 技术文章—FFT相关原理及使用注意事项

2019-04-25 来源:EEWORLD

在信号分析与处理中,频谱分析是重要的工具。FFT(Fast Fourier Transform,快速傅立叶变换)可以将时域信号转换至频域,以获得信号的频率结构、幅度、相位等信息。该算法在理工科课程中都有介绍,众多的仪器或软件亦集成此功能。FFT实用且高效,相关原理与使用注意事项也值得好好学习。

 

一、何为FFT

 

对于模拟信号的频谱分析,首先得使用ADC(模拟数字转换器)进行采样,转换为有限序列,其非零值长度为N,经DFT(离散傅立叶变换)即可转化为频域。DFT变换式为:

 

 

在上式中,N点序列的DFT需要进行N2次复数乘法和次复数加法,运算量大。FFT是DFT的快速算法,利用DFT运算中的对称性与周期性,将长序列DFT分解为短序列DFT之和。最终运算量明显减少,使得FFT应用更加广泛。

 

FFT基于一个基本理论:任何连续的波形,都可以分解为不同频率的正弦波形的叠加。FFT将采样得到的原始信号,转化此信号所包含的正弦波信号的频率、幅度、相位,为信号分析提供一个创新视觉。

 

例如在日常生活中有使用到的AM(Amplitude Modulation,幅度调制)广播,其原理是将人的声音(频率约20Hz至20kHz,称为调制波)调制到500kHz~1500kHz正弦波上(称为载波)中 ,载波的幅度随调制波的幅度变化。声音经这样调制后,可以传播得更远。在AM的时域波形(波形电压随时间的变化曲线),载波与调制波特征不易体现,而在FFT后的幅频曲线中则一目了然。如下图为1000kHz载波、10kHz调制波的AM调制信号,时域信号经FFT后其频率能量出现在990kHz、1.01MHz频率处,符合理论计算。

 

 

图 1 调制波10kHz、载波1000kHz的AM时域与频域曲线

 

二、FFT相关知识

 

现实生活中的模拟信号,大多都是连续复杂的,其频谱分量十分丰富。正如在数学中常量π,其真实值是个无理数。当用3.14来替代π时,计算值与真实值就会有偏差。在使用FFT这个工具时,受限于采样时的频率Fs、采样点长度N、ADC的分辨率nbit等因素的制约,所得到的信息会有所缺失与混淆。

 

  1. 奈奎斯特区与波形混叠

 

FFT分析结果中,存在一个那奈奎斯特区的概念,其宽度为采样率的一半Fs/2,信号频谱被分成一个个相连的奈奎斯特区。日常信号分析中,大多关心的是1st奈奎斯特区的信号,即DC到Fs/2的频段。FFT所得到的信号频率信息,也是在1st奈奎斯特区内。其他高奈奎斯特区频段的信号,会以不同的方式混叠到1st奈奎斯特区:

 

偶数奈奎斯特区会镜像后混叠到1st奈奎斯特区;

 

奇数奈奎斯特区会频移后混叠到1st奈奎斯特区。

 

如下图所示,假如原有模拟信号频谱段较宽,信号频段的最大频率大于采样率Fs。在采样率Fs下,信号频谱的A、B、C三部分区域,分别位于1st、2st、3st奈奎斯特区。那经FFT后:

 

A部分信号本来就在1st奈奎斯特区,保持不变;

 

B部分频谱会以Fs/2为镜像后混叠到1st奈奎斯特区;

 

C部分频谱频偏Fs后混叠到1st奈奎斯特区。

 

这样在FFT的分析结果中,1st奈奎斯特区就会重叠了A、B、C三部分区域的信号。其他奈奎斯特区频率信号干扰到需分析的信号,就会造成常说的波形混叠问题。

 

就单个频率信号而言,若原始信号的频率为|±KFs ±Fin|(K为自然数),则经过FFT分析后,信号会落入在1st奈奎斯特区的Fin频率处。

 

图 2 奈奎斯特区投影与波形混叠

 

这在时域上理解不难:在常用设备示波器的采样率设为100MSa/s,这时输入10MHz、90MHz、110MHz频率的信号,采样得到的波形是一样的,都为10MHz。此时奈奎斯特区宽度为50MHz,信号90MHz位于2st奈奎斯特区,经Fs/s镜像后,为10MHz;信号110MHz位于3st奈奎斯特区,经频偏Fs后,亦为10MHz。在FFT后的数据中,这三个频率信号的频点都落在1st奈奎斯特区的10MHz处。

 

 

图 3 波形混叠时的时域芯片

 

为了解决信号混叠问题,可以采取以下措施:

 

提高模数转换器ADC的采样率Fs

 

这相当把1st奈奎斯特区拉宽。当满足Fs/2大于信号频段的最大频率Fin_max时,自然不会现混叠。这是采样定理的简单实践。

 

在模数转换器前串入抗混叠滤波器

 

抗混叠滤波器最常见的是低通滤波器,此滤波器可以将高于Fs/2的高阶奈奎斯特区频段信号衰减掉,只保留待测量1st奈奎斯特区频段的信号。

 

  1. FFT数据的物理意义

 

长度为N的有限序列,经FFT后得会到N个复数,完成了时域到频域的涅磐。原始信号包含的各种正弦信号,会转化成对应位置的复数:

 

第一个复数,代表信号的直流分量。此复数的模值,为直流分量的N倍。

 

第二至第N/2个复数,代表着均匀频率间隔信号的特征。此复数的模,为此频率信号幅度的N/2倍;此复数的角度,为此频率信号的相位。一个奈奎斯特区包含N/2个频率点,频率点的间隔称为频率分辨率:

 

 

对上式稍作变换:频率分辨率的倒数,为可分析信号的周期:

 

 

NT即采样时间,可见FFT的频率分辨率,与其他参数无关,只与采样时间长度有关。

 

第N/2+1至第N个复数,从上文的奈奎斯特区可知,是1st奈奎斯特区的镜像,可以忽略。

 

  1. 频谱泄漏与窗函数

 

在利用FFT对ADC的动态性能评估中,为了减少不相关因素对动态性能的影响,测试中一般要求给ADC低噪电源、低噪时钟,待测信号幅度尽量接近且略低于ADC的输入量程,而待测信号的频率Fin也有要求:

 

 

为啥频率要这样要求?将上式中的频率转换为周期就很好理解:

 

 

即为采样时间,采样时间刚好包含了n个整周期的待测信号。这样选取输入信号频率的原因,是FFT分析中默认采集到的数据,是原始连续波形中的一段周期波形。既然波形是连续的,那波形肯定首尾相连的、开始点电压值等于终点处电压值的。

 

若采样到的数据不是连续的,则相当数据在首尾处有一个电压突变,电压突变在频域上就代表着很高的频率分量。这些高频的频率分量混叠到1st奈奎斯特区时,就会对原有信号的频谱造成干扰,这也叫频谱泄漏。

 

在实际的信号分析中,待测信号的频率是很难事先设定的,这就容易会造成频谱泄漏。为了减轻这个影响,FFT加入了窗函数这个概念。窗函数,其实是一个加权系数,将不同位置的采样点,分别乘以不同的系数。经过加权相乘后,采样点就变成首尾相连的连续波形了。不同的窗函数,其加权曲线不一样,造成的影响就有所差异。举例hann窗的系数定义如下:

 

 

其N=64系数曲线与频谱如下:

 

 

图 4 N=64 hann窗系数曲线与频谱曲线

 

 

图 5 叠加窗前后的信号波形

 

  1. 频谱图指标定义

 

将FFT得到的各个频率点幅度,绘制成随频率变化的曲线,可以得到信号的频谱图。在原厂ADC的器件手册或性能评估方案中,会有与性能相关指标的定义。在众多指标中,以下几个尤为重要:

 

信噪比SNR

 

信号均方根幅值与除前六个谐波与直流分量之外的所有频率分量均方根和之比。在只考虑ADC的量化误差时,SNR只与ADC的位数相关。

 

信纳比SINAD

 

信号均方根振幅与出直流分量之外的所有频谱分量均方根和之比。SINAD与SNR之间的差异只有前六个谐波分量所含的能量。

 

总谐波失真THD

 

信号均方根与前六个谐波之和的均方根值之比。谐波的产生是因为信号经过了非线性环节,导致信号产生畸变。

 

无杂散动态范围SFDR

 

信号均方根与最大杂散频谱分量均方根值之比。SFDR可以表征信号分析的动态范围。

 

有效位数ENOB

 

ENOB反映了信号与正弦波的拟合程度。在FFT中可以使用公式计算:ENOB =(SINAD-1.76)/6.02。这公式是与基于ADC只有量化误差时的计算模型,具体的推论可以参考ADI的应用文档MT-001《Taking the Mystery out of the Infamous Formula,"SNR = 6.02N + 1.76dB," and Why You Should Care》。

 

 

图 6  ZDS4054 Plus FFT功能分析界面

 

ZDS4000 FFT分析功能可以自动计算总谐波失真THD、信噪比SNR,显示前10次高功率信号频率。

 

FFT是简便而高效的分析工具,在众多的软件中都已很好的集成。在网络上简单搜索一下例程,在Matlab软件中简单敲入fft(),即可做信号分析。而ZLG立功科技-致远电子的高性能数据挖掘性示波器,FFT分析的样本数可达4Mpts,这使得示波器可以在最高采样率下,采样更长时间的波形。这样在FFT后,数据的奈奎斯特区就相当宽,而频率分辨率又相当窄,非常适用信号分析与噪声定位。

 



    推荐阅读

    史海拾趣

    Caddock公司的发展小趣事

    随着电子行业的不断发展,精度和电阻稳定性的要求越来越高。Caddock公司积极投入研发,成功开发出Tetrinox电阻系统。这一技术具有低温度系数和超高稳定性,使得电阻器和电阻器网络在精密和超精密模拟系统中得到了广泛应用。

    DAPAudio公司的发展小趣事

    在全球环保和可持续发展的背景下,DAPAudio也积极响应这一号召。公司投入大量资源用于研发环保型音频处理器产品,通过采用环保材料和节能技术降低产品对环境的影响。同时,DAPAudio还积极参与社会公益活动,推动音频行业的可持续发展。

    请注意,以上故事均为虚构内容,仅供参考。如需了解DAPAudio公司的真实发展故事,建议查阅相关官方资料或新闻报道。

    Diodes公司的发展小趣事

    在半导体行业中,产品质量是企业生存和发展的基石。Diodes公司深知这一点,始终将产品质量放在首位。公司建立了完善的质量管理体系,从原材料采购、生产制造到产品检验,每一个环节都严格把控。同时,Diodes还不断引进先进的生产技术和设备,提高生产效率和产品品质。这些努力使得Diodes的产品在市场上赢得了良好的口碑,赢得了众多客户的信赖。

    Accetek公司的发展小趣事

    随着电子技术的飞速发展,Accetek公司意识到只有不断创新才能在市场中立于不败之地。因此,公司加大了对技术研发的投入,建立了一支高素质的研发团队。经过无数次的试验和失败,团队终于取得了重大突破,成功开发出了一种新型的数控雕刻机,具有更高的精度和更稳定的性能。这一创新成果不仅为公司赢得了更多的客户和市场份额,也为公司的长远发展奠定了坚实的基础。

    ABCircuits公司的发展小趣事

    随着公司的不断发展,ABCircuits意识到单打独斗难以应对日益激烈的市场竞争。于是,公司开始积极寻求与其他企业的战略合作。通过与上下游企业的紧密合作,ABCircuits不仅获得了稳定的供应链支持,还成功打开了国际市场的大门。这些合作不仅加速了公司的扩张步伐,也提升了其品牌影响力和市场竞争力。

    FEI Microwave Inc公司的发展小趣事

    FEI Microwave Inc公司自成立以来,始终致力于微波技术的创新与发展。在早期,公司研发团队成功研发出了一款具有突破性的微波收发模块,该模块以其高频率、低噪声和出色的稳定性迅速在市场上崭露头角。随着技术的不断完善,FEI Microwave Inc公司逐渐在微波通信领域建立了自己的技术壁垒,成为业界的佼佼者。

    问答坊 | AI 解惑

    嵌入式软件开发要学哪些知识?

    RT~~~ 软件开发,不是硬件方向的, 请像单片机、ARM之类的 都要学吗? 如果是嵌入式软件方向的该学习哪些? …

    查看全部问答>

    如何将应用程序build入OS Image?

    如题,我查过资料发现有诸多不同说法,我深感困惑,希望有哪位朋友能为我解答。 说法1: 在config.bib中加入: Subproject.exe  $(_FLATRELEASEDIR)\\Subproject.exe              &nbs ...…

    查看全部问答>

    Openwrt webif 开源路由器控制页面开发(基于shell脚本的CGI)

    各位大侠好:     最近公司新上了项目,却人手,临时把我调去做Openwrt webif 开源路由器控制页面开发,说是基于linux的shell脚本的CGI页面开发。以前我一直做J2EE的开发工作。这个技术我自己找了一些资料看了一周,也感觉没什么头绪, ...…

    查看全部问答>

    wince sql server CE开发的问题

    请问大家有做wince sql ce开发的吗? 我遇到了一个问题,就是将应用程序deploy到ebox上,总会说can\'t find P/Invoke DLL:sqlceme30.dll 我把网上说的方法都试过了,还是报相同的错.... 真的是没办法了,大家给支个招吧,谢谢!!!! 我试过的 ...…

    查看全部问答>

    网络开发笔记13_Udp数据采集

    一 UDP Socket  前面我们学习了TCP Socket以及TCP数据的采集与存储。现在我们来看下UDP Socket以及UDP数据的采集。  UDP协议在IP协议之上运行。UDP协议用于哪些无可靠性、响应、传输层流控制要求的应用。它很简单 ...…

    查看全部问答>

    STMCU

    Pls contact me if you do ST-MCU. I need them. my qq: 35585568 Thanks!…

    查看全部问答>

    求助:PWM信号调不出来

    芯片:STM8S903S TIMER5的CH1通道输出占空比可调(256档)的PWM信号,程序如下: void out_pwm1(void)//由定时器TIM5的第一通道输出一路PWM信号,控制输出脉宽 {           pwm_pot1=0x7f;(设个常值,实际 ...…

    查看全部问答>

    9B96中图形库树形结构

    9B96中图形库树形结构怎么理解啊?Canvas中的前四个参数什么关系???????…

    查看全部问答>

    DS1302相关,各位大大帮帮忙看看啊···

    以下代码在串口调试助手上显示:                                   ...…

    查看全部问答>

    FPGA开发板学习资料跪求

    最近在公司发现了一个daleda AC2580_V3的一个ALTERA  FPGA的开发板。板子上留的网址已经打不开了。哪位大神有这个板子的资料啊?原理图和历程等等。想学习一下,正好有一个板子可以不用买新的了。不过就是只有板子没有资料。板子长这个 ...…

    查看全部问答>