在信号分析与处理中,频谱分析是重要的工具。FFT可以将时域信号转换至频域,以获得信号的频率结构、幅度、相位等信息。该算法在理工科课程中都有介绍,众多的仪器或软件亦集成此功能。FFT实用且高效,相关原理与使用注意事项也值得好好学习。
01何为FFT
对于模拟信号的频谱分析,首先得使用ADC(模拟数字转换器)进行采样,转换为有限序列x(n),其非零值长度为N,经DFT(离散傅立叶变换)即可转化为频域。DFT变换式为:
在上式中,N点序列的DFT需要进行N2次复数乘法和N(N-1)次复数加法,运算量大。FFT是DFT的快速算法,利用DFT运算中的对称性与周期性,将长序列DFT分解为短序列DFT之和。最终运算量明显减少,使得FFT应用更加广泛。
1.1FFT基于的基本理论
FFT基于一个基本理论:任何连续的波形,都可以分解为不同频率的正弦波形的叠加。FFT将采样得到的原始信号,转化此信号所包含的正弦波信号的频率、幅度、相位,为信号分析提供一个创新视觉。
例如在日常生活中有使用到的AM(Amplitude Modulation,幅度调制)广播,其原理是将人的声音(频率约20Hz至20kHz,称为调制波)调制到500kHz~1500kHz正弦波上(称为载波)中 ,载波的幅度随调制波的幅度变化。声音经这样调制后,可以传播得更远。在AM的时域波形(波形电压随时间的变化曲线),载波与调制波特征不易体现,而在FFT后的幅频曲线中则一目了然。如下图为1000kHz载波、10kHz调制波的AM调制信号,时域信号经FFT后其频率能量出现在990kHz、1.01MHz频率处,符合理论计算。
图1 调制波10kHz、载波1000kHz的AM时域与频域曲线
02FFT相关知识
现实生活中的模拟信号,大多都是连续复杂的,其频谱分量十分丰富。正如在数学中常量π,其真实值是个无理数。当用3.14来替代π时,计算值与真实值就会有偏差。在使用FFT这个工具时,受限于采样时的频率Fs、采样点长度N、ADC的分辨率nbit等因素的制约,所得到的信息会有所缺失与混淆。
2.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奈奎斯特区频段的信号。
2.2FFT数据的物理意义
长度为N的有限序列x(n),经FFT后得会到N个复数,完成了时域到频域的涅磐。原始信号包含的各种正弦信号,会转化成对应位置的复数:
第一个复数,代表信号的直流分量。此复数的模值,为直流分量的N倍。
第二至第N/2个复数,代表着均匀频率间隔信号的特征。此复数的模,为此频率信号幅度的N/2倍;此复数的角度,为此频率信号的相位。一个奈奎斯特区包含N/2个频率点,频率点的间隔称为频率分辨率:
对上式稍作变换:频率分辨率的倒数,为可分析信号的周期:
NTs即采样时间,可见FFT的频率分辨率,与其他参数无关,只与采样时间长度有关。
第N/2+1至第N个复数,从上文的奈奎斯特区可知,是1st奈奎斯特区的镜像,可以忽略。
2.3频谱泄漏与窗函数
在利用FFT对ADC的动态性能评估中,为了减少不相关因素对动态性能的影响,测试中一般要求给ADC低噪电源、低噪时钟,待测信号幅度尽量接近且略低于ADC的输入量程,而待测信号的频率Fin也有要求:
为啥频率要这样要求?
将上式中的频率转换为周期就很好理解:
TS*N即为采样时间,采样时间刚好包含了n个整周期的待测信号。这样选取输入信号频率的原因,是FFT分析中默认采集到的数据,是原始连续波形中的一段周期波形。既然波形是连续的,那波形肯定首尾相连的、开始点电压值等于终点处电压值的。
若采样到的数据不是连续的,则相当数据在首尾处有一个电压突变,电压突变在频域上就代表着很高的频率分量。这些高频的频率分量混叠到1st奈奎斯特区时,就会对原有信号的频谱造成干扰,这也叫频谱泄漏。
在实际的信号分析中,待测信号的频率是很难事先设定的,这就容易会造成频谱泄漏。为了减轻这个影响,FFT加入了窗函数这个概念。窗函数,其实是一个加权系数,将不同位置的采样点,分别乘以不同的系数。经过加权相乘后,采样点就变成首尾相连的连续波形了。不同的窗函数,其加权曲线不一样,造成的影响就有所差异。举例hann窗的系数定义如下:
其N=64系数曲线与频谱如下:
图4 N=64 hann窗系数曲线与频谱曲线
图5 叠加窗前后的信号波形
2.41频谱图指标定义
将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次高功率信号频率。
03小结
FFT是简便而高效的分析工具,在众多的软件中都已很好的集成。在网络上简单搜索一下例程,在Matlab软件中简单敲入fft(),即可做信号分析。而致远电子推出的高性能数据挖掘性示波器,FFT分析的样本数可达4Mpts,这使得示波器可以在最高采样率下,采样更长时间的波形。这样在FFT后,数据的奈奎斯特区就相当宽,而频率分辨率又相当窄,非常适用信号分析与噪声定位。