微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > FFT的前世今生

FFT的前世今生

时间:03-04 来源:互联网 点击:

有限长序列的全部信息,那么只能通过补零的方式增加视在分辨率,如果采集到的是无限长序列的一部分信息,那么可以通过增加时间窗口的长度(不是采样点)来增加物理频率分辨率。

请看下面的实例:

图1中正弦波测试使用的时基是5ns/div,波形时间长度是50ns,计算FFT之后的频谱分辨率是20MHz(1/50ns),

图1 捕获50ns的信号,频率分辨率是20MHz

如果改变时基设置,频谱分辨率会有变化。如图2所示:将时基设置为10ns/div,波形长度是100ns,频谱分辨率可以提高到10MHz。

对于通过补零的方法增加FFT频谱的视在分辨率,力科的示波器也有相应的解决方案。力科示波器使用了两种非常常用的FFT算法供用户选择:Cooley-Tukey算法和LeastPrime算法。Cooley-Tukey算法也称为Power2算法,它提供了计算机一种非常快速的FFT计算方式,计算的FFT点数规模是2的整数方次,因此它会在示波器时域采集的信号中截取2的N次方的整数来作为FFT计算的时域样本,该截取的整数是最接近于采样点的整数。如下图2所示:

图2 捕获100ns的信号,频率分辨率是10MHz

图中的正弦波频率为500MHz,时基设置为10ns/div,采样率为20GS/s,时域采样点数为2000points,使用Power2算法截取2000点中的1024点(210),如图中的蓝框所示(注意是从信号的中间部分截取),因此截取的时间窗口为1024×20ps=51.2ns,是500MHz信号的25.6个周期,由于截取的周期非整数倍,不可避免会产生频谱泄露,如图中FFT的旁瓣所示,此时的频率分辨率可以达到19.35125MHz。

如果采用另外一种FFT算法LeastPrime,可以将整个示波器时域采集的采样点进行FFT运算,LeastPrime算法计算的FFT点数规模是2N+5K,因此2000点=24+53,不需要截取原始数据就可以运算,但是代价是计算的速度可能会慢一些(尽管我们可能觉察不到),频率分辨率可以提高到10MHz。

使用Power2算法也可以不采用截取原始波形的方式,此时我们可以选择Zero Fill(补零)的方式,增加采样点数。比如,在2000点中补48个点,2048=211,如图3所示:

图3 补零的放出提高频率分辨率

这48个点补的方式是头尾各补一半,但是有可能补的不是0,头24个点与第一个采样点值相同,尾24个点与最后一个采样点值相同(所以称之为Zero Fill是不完全准确的)。这里我们推荐Zero Fill的方法只在分析冲击信号FFT频谱的情况下使用。

补零法虽然能增加频谱图的视在分辨率,但是由于补的都是无效数据,所以对于频率分辨率真正的改善没有帮助,但是补零有它的好处:1.补零后,其实是对FFT结果做了插值,克服“栅栏”效应,使谱外观平滑化;我把“栅栏”效应形象理解为,就像站在栅栏旁边透过栅栏看外面风景,肯定有被栅栏挡住比较多风景,此时就可能漏掉较大频域分量,但是补零以后,相当于你站远了,改变了栅栏密度,风景就看的越来越清楚了。2.由于对时域数据的截短必然造成频谱泄露,因此在频谱中可能出现难以辨认的谱峰,补零在一定程度上能消除这种现象。

除此之外,很多人都有这样的误区:认为通过增加待分析的计算点数而不是增加采样时间就可以使FFT之后的频谱更加“精细”(频率分辨率更高)。这样的误解一般来自于示波器的用户,因为当示波器采样点比较少时,FFT的计算出来的频谱图也会很少,频谱看起来非常粗糙。这时工程师会非常有冲动把时域的采样点增多(用示波器上的插值算法很容易实现),但是如果采集信号的时间长度是不变的,工程师会发现FFT计算之后的频谱并没有显得更加“精细”,频率分辨率并没有任何改善。实际上使用插值或者增加采样率的方式仅仅是展宽了FFT之后的频谱带宽。如下图4所示,

图4 插值方式并不能改变频率分辨率

左上方使用了较少的时域采样点C1,右上方使用了较高的采样率C2,但是采样时间是相同的。左下是对C1进行FFT之后的频谱F1,右中是对C2进行FFT之后的频谱F2,右下是对F2相同频段进行了放大。可以看到F2比F1的频宽增加了,但是对F1频段放大之后的频谱和F1一样,没有任何频率分辨率的改善。

由此我们可以得出结论,对C1进行插值后,额外的采样点仅仅存在于较高频段,会展宽频谱的带宽,但是插值方式对于增加我们感兴趣频段的频谱分辨率没有任何帮助。

那么如果我们只对对FFT之后的频谱进行插值效果如何呢?如下图5所示:

图5 频域插值方式是频谱图看起来更密

图中展示了对频域插值之后的效果,并没有使频谱看起来更“窄”(毕竟插值出来的点都是假点),但是我们注意到,频域插值可以使频谱的测量更加精确。图中正弦波的频率是955MHz,插值之后频谱的Peak频率读数P2是955MHz,插值之前P1的读数为952MH

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top