【STM32F407的DSP教程】第27章 FFT的示波器应用
完整版教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547
第27章?????? FFT的示波器應用
特別聲明:本章節內容整理自力科示波器基礎應用系列文檔,原名《FFT的前世今生》。
FFT(Fast Fourier Transform,快速傅立葉變換)是離散傅立葉變換的快速算法,也是我們在數字信號處理技術中經常會提到的一個概念。在大學的理工科課程中,完成高等數學的課程后,數字信號處理一般會作為通信電子類專業的專業基礎課程進行學習, 原因是其中涉及了大量的高等數學的理論推導,同時又是各類應用技術的理論基礎。關于傅立葉變換的經典著作和文章非常多,但是看到滿篇的復雜公式推導和羅列,我們還是很難從直觀上去理解這一復雜的概念, 對于普通的測試工程師來說,掌握 FFT的概念首先應該搞清楚這樣幾個問題(在這篇文章中嘗試用更加淺顯的講解,盡量不使用公式推導來說一說 FFT 的那些事兒):
目錄
第27章?????? FFT的示波器應用
27.1 初學者重要提示
27.2 傅里葉變換的物理意義
27.3 FFT變換是如何進行的
27.4 FFT變換前后有何種對應關系
27.5 使用示波器進行 FFT 的方法和需要注意的問題
27.6 力科示波器和Tek示波器的FFT計算方法的比較
27.7 柵欄現象
27.7.1??????? 頻率分辨率與時基設置(TimeBase)
27.7.2??????? 柵欄效應與頻率分辨率
27.8 窗函數對于FFT結果的影響
27.9 窗函數選擇指南
27.10?? 總結
27.1 初學者重要提示
27.2 傅里葉變換的物理意義
傅立葉原理表明:任何連續測量的時序或信號, 都可以表示為不同頻率的正弦波信號的無限疊加。 而根據該原理創立的傅立葉變換算法利用直接測量到的原始信號,以累加方式來計算該信號中不同正弦波信號的頻率、振幅和相位。當然這是從數學的角度去看傅立葉變換。
那么從物理的角度去看待傅立葉變換,它其實是幫助我們改變傳統的時間域分析信號的方法轉到從頻率域分析問題的思維,下面的一幅立體圖形可以幫助我們更好得理解這種角度的轉換:
所以,最前面的時域信號在經過傅立葉變換的分解之后,變為了不同正弦波信號的疊加,我們再去分析這些正弦波的頻率,可以將一個信號變換到頻域。有些信號在時域上是很難看出什么特征的,但是如果變換到頻域之后,就很容易看出特征了。這就是很多信號分析采用FFT變換的原因。另外,FFT可以將一個信號的頻譜提取出來,這在頻譜分析方面也是經常用的。
傅立葉變換提供給我們這種換一個角度看問題的工具,看問題的角度不同了,問題也許就迎刃而解!
27.3 FFT變換是如何進行的
首先,按照被變換的輸入信號類型不同,傅立葉變換可以分為 4 種類型:
1、 非周期性連續信號傅立葉變換(Fourier Transform)
2、 周期性連續信號傅立葉級數(Fourier Series)
3、 非周期性離散信號離散時域傅立葉變換(Discrete Time Fourier Transform)
4、 周期性離散信號離散傅立葉變換(Discrete Fourier Transform)
下面是四種原信號圖例:
?
這里我們要討論是離散信號, 對于連續信號我們不作討論, 因為計算機只能處理離散的數值信號,我們的最終目的是運用計算機來處理信號的。所以對于離散信號的變換只有離散傅立葉變換(DFT)才能被適用,對于計算機來說只有離散的和有限長度的數據才能被處理,對于其它的變換類型只有在數學演算中才能用到,在計算機面前我們只能用 DFT方法,我們要討論的 FFT 也只不過是 DFT 的一種快速的算法。DFT 的運算過程是這樣的:
?
X(k)—頻域值
X(n)—時域采樣點
n—時域采樣點的序列索引
k—頻域值的索引
N—進行轉換的采樣點數量
可見,在計算機或者示波器上進行的 DFT,使用的輸入值是數字示波器經過 ADC后采集到的采樣值,也就是時域的信號值,輸入采樣點的數量決定了轉換的計算規模。變換后的頻譜輸出包含同樣數量的采樣點, 但是其中有一半的值是冗余的, 通常不會顯示在頻譜中,所以真正有用的信息是 N/2+1 個點。FFT 的過程大大簡化了在計算機中進行 DFT 的過程,簡單來說, 如果原來計算 DFT的復雜度是N2次運算 (N 代表輸入采樣點的數量), 進行 FFT 的運算復雜度是:
因此,計算一個 1,000 采樣點的 DFT,使用 FFT 算法只需要計算 3,000 次,而常規的 DFT算法 需要計算 1,000,000 次!
我們以一個 4 個點的 DFT 變換為例來簡單說明 FFT 是怎樣實現快速算法的:
計算得出:
其中的紅色部分在FFT中是必須計算的分量,其它藍色部分不需要直接計算,可以由紅色的分量直接推導得到,比如:
這樣, 已經計算出的紅色分量只需要計算機將結果保存下來用于之后計算時調用即可, 因此大大減少了 DFT 的計算量。
27.4 FFT變換前后有何種對應關系
我們以一個實際的信號為例來說明:
示波器采樣得到的數字信號,就可以做 FFT 變換了。N 個采樣點,經過 FFT 之后,就可以得到 N 個點的 FFT 結果。為了方便進行 FFT 運算,通常 N 取 2 的整數次方。假設采樣頻率為 Fs, 信號頻率 F, 采樣點數為 N。 那么 FFT 之后結果就是一個為 N點的復數。每一個點就對應著一個頻率點。這個點的模值,就是該頻率值下的 幅度特性。具體跟原始信號的幅度有什么關系呢?假設原始信號的峰值為 A,那么 FFT 的結果的每個點(除了第一個點直流分量之外)的模值就是 A 的 N/2 倍。 而第一個點就是直流分量,它的模值就是直流分量的 N 倍。而每個點的相位呢,就是在該頻率下的信號的相位。第一個點表示直流分量(即 0Hz) ,而最后一個點 N 的再下一個點(實際上這個點是不存在的, 這里是假設的第 N+1 個點,也可以看做是將第一個點分做兩半分,另一半移到最后)則表示采樣頻率 Fs,這中間被 N-1 個點平均分成 N 等份,每個點的頻率依次增加。例如某點 n 所表示的頻率為:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn 所能分辨到頻率為 為 Fs/N,如果采樣頻率 Fs 為 1024Hz,采樣點數為 1024 點,則可以分辨到 1Hz。1024Hz 的采樣率采樣 1024 點,剛好是 1 秒,也就是說, 采樣 1 秒時間的信號并做 FFT,則結果可以分析精確到 1Hz,如果采樣 2 秒時間的信號并做 FFT,則結果可以分析精確到 0.5Hz。如果要提高頻率分辨率,則必須增加采樣點數,也即采樣時間。頻率分辨率和采樣時間是倒數關系。
下面這幅圖更能夠清晰地表示這種對應關系:
變換之后的頻譜的寬度(Frequency Span)與原始信號也存在一定的對應關系。根據 Nyquist 采樣定理,FFT 之后的頻譜寬度(Frequency Span)最大只能是原始信號采樣率的 1/2,如果原始信號采樣率是 4GS/s,那么 FFT 之后的頻寬最多只能是 2GHz。時域信號采樣周期 (Sample Period)的倒數,即采樣率(Sample Rate)乘上一個固定的系數即是變換之后頻譜的寬度,即 Frequency Span = K*(1/ΔT) ,其中ΔT 為采樣周期,K 值取決于我們在進行 FFT 之前是否對原始信號進行降采樣(抽點) ,因為這樣可以降低 FFT 的運算量。如下圖所示:
可見, 更高的頻譜分辨率要求有更長的采樣時間, 更寬的頻譜分布需要提高對于原始信號的采樣率,當然我們希望頻譜更寬,分辨率更精確,那么示波器的長存儲就 是必要的!它能提供您在高采樣率下采集更長時間信號的能力!值得強調的是,力科示波器可以支持計算 128Mpts 的 FFT,而其它某品牌則只有 3.2Mpts。
27.5 使用示波器進行 FFT 的方法和需要注意的問題
我們先來看一個簡單的例子:
Problem:在示波器上采集一個連續的,周期性的信號,我們希望在示波器上進行 FFT 計算之后, 觀察到信號中心頻率 (Center Frequency) 在 2.48GHz, 頻寬 (Frequency Span) 為 5MHz,頻譜分辨率(Bandwidth Resolution)為 10KHz 的頻譜圖,應該如何設置示波器的采集?
首先,根據頻譜分辨率(Bandwidth Resolution)10KHz 可以推算出,至少需要采集信號的時間長度為 1/10KHz=100us, 因此至少要設置示波器時基為 10us/Div; 為了盡量保證 FFT 之后頻譜圖在各個頻點的信號能量精度,測量時需要時域信號幅值占滿整個柵格的90%以上;采樣率設置應至少滿足 Nyquist 采樣率,即至少設置 >5GS/s 采樣率才能夠看到中心頻率在 2.48GHz 的頻率譜線;選擇合適的窗函數(Von Hann 漢寧窗)和頻譜顯示方式(power spectrum);使用 Zoom 工具,將頻譜移動到 Center 2.48GHz,Scale 500KHz/Div 位置,Zoom 設置方法如下圖所示:
?
在力科示波器中進行 FFT 的運算有幾種不同的輸出類型:
Linear Magnitude(Volts),
Phase(Degrees),
Power Spectrum(dBm),
Power Spectral Density(dBm)
這幾種輸出類型都是由 FFT 計算之后的結果換算而來,我們知道 FFT 計算之后的結果包含實部(Real)和虛部(Imaginary)成分,它們的單位都是 Volts。具體的換算方式如下:
其中ΔF為頻譜分辨率,ENBW為與所選加權函數(窗)相關的有效噪聲帶寬。
幾種典型周期函數的頻譜圖:
?
頻譜泄露:
所謂頻譜泄露,就是信號頻譜中各譜線之間相互干擾,使測量的結果偏離實際值,同時在真實譜線的兩側的其它頻率點上出現一些幅值較小的假譜。產生頻譜泄露的主要原因是采樣頻率和原始信號頻率不同步,造成周期的采樣信號的相位在始端和終端不連續。 簡單來說就是因為計算機的 FFT 運算能力有限,只能處理有限點數的FFT,所以在截取時域的周期信號時,沒有能夠截取整數倍的周期。信號分析時不可能取無限大的樣本。只要有截斷不同步就會有泄露。如下圖所示:
圖中被測信號的開始端相位和截止端相位相同, 表示在采集時間內有整數倍周期的信號被采集到,所以此時經行 FFT 運算后得出的頻譜不會出現泄露。
上圖的信號頻率為 2.1MHz,采集時間內沒有截取整數倍周期的信號,FFT 運算之后譜線的泄露現象嚴重,可以看到能量較低的譜線很容易被臨近的能量較高的譜線的泄露給淹沒住。
因此,避免頻譜泄露的方法除了盡量使采集速率與信號頻率同步之外,還可以采用適當的窗函數。
另外一個方法是采集信號時間足夠長,基本上可以覆蓋到整個有效信號的時間跨度。這種方法經常在瞬態捕捉中被使用到,比如說沖擊試驗,如果捕捉的時間夠長,捕捉到的信號可以一直包括了振動衰減為零的時刻。在這種情況下,可以不加窗函數。窗函數其實就是一個加權函數,它在截取的信號時間段內有值,時間段之外值為 0:,記為:
w(t)=g(t) -T/2<t<T/2
w(t)=0 其它
加窗在時域上表現的是點乘,因此在頻域上則表現為卷積。卷積可以被看成是一個平滑的過程。這個平滑過程可以被看出是由一組具有特定函數形狀的濾波器,因此,原始信號中在某一頻率點上的能量會結合濾波器的形狀表現出來,從而減小泄漏。基于這個原理,人們通常在時域上直接加窗。
大多數的信號分析儀一般使用矩形窗(rectangular),漢寧(hann),flattop 和其它的一些窗函數。
不同的窗函數對頻譜譜線的影響不同,基本形狀可以參看下圖:
?
可以看到,不同的窗函數的主瓣寬度和旁瓣的衰減速度都不一樣,所以對于不同信號的頻譜應該使用適當的窗函數進行處理。
矩形窗(Rectangular):加矩形窗等于不加窗,因為在截取時域信號時本身就是采用矩形截取,所以矩形窗適用于瞬態變化的信號,只要采集的時間足夠長,信號寬度基本可以覆蓋整個有效的瞬態部分。
漢寧窗(Von Hann):如果測試信號有多個頻率分量,頻譜表現的十分復雜,且測試的目的更多關注頻率點而非能量的大小。在這種情況下,需要選擇一個主瓣夠窄的窗函數,漢寧窗是一個很好的選擇。
flattop窗:如果測試的目的更多的關注某周期信號頻率點的能量值,比如,更關心其EUpeak, EUpeak-peak, EUrms,那么其幅度的準確性則更加的重要,可以選擇一個主瓣稍寬的窗,flattop窗在這樣的情況下經常被使用。
27.6 力科示波器和Tek示波器的FFT計算方法的比較
您可能也已經發現了這個問題:在示波器上進行 FFT 運算時,使用力科示波器和使用 Tek 示波器的計算結果似乎相差很大。產生這種差別的原因一方面可能是兩者有效運算的采樣點不一樣。另外一個重要原因是 LeCroy 和 Tek 所使用的 FFT 運算的參考值不同,LeCroy 使用 dBm 為單位(參考值是 1mW 的功 率值),而 Tek 使用 dB 為單位(參考值是1V rms 的電壓值),參考值不同產生的計算結果當然不一樣!
dB(Deci-bel, 分貝) 是一個純計數單位,本意是表示兩個量的比值大小,沒有單位。在工程應用中經常看到貌似不同的定義方式(僅僅是看上去不同)。對于功率,dB =10*lg(A/B)。對于電壓或電流,dB = 20*lg(A/B)。此處 A,B 代表參與比較的功率值或者電流、電壓值。dB 的意義其實再簡單不過了,就是把一個很大(后面跟一長串0的)或者很小(前面有一長串0 的)的數比較簡短地表示出來。dBm是一個考征功率絕對值的值,計算公式為:10lg(功率值/1mw) 。
此外,還有 dBV、dBuV、dBW 等等,僅僅是參考值選擇的不同而已。如下是一個實測的例子,使用同一信號分別用 LeCroy 和 Tek 示波器進行FFT運算,下圖是使用 LeCroy WaveRunner 64Xi 的測試結果:
下圖是使用 Tek DPO4104 的測試結果:
?
測試所使用的信號幅值是 6.55 mV rms , 信號頻率是 25 MHz
力科使用的計算方式如下:
dBm = 10 Log10 (((vrms^2)/50)/0.001)= 10Log10 ((4.29E-5/50)/0.001)=
10Log10(8.5E-7/0.001)=10Log10 (8.5e-4)=10 (-3.066)= -30.66dBm
Tek 使用的計算方式如下:
dB= 20Lg (6.61E-3)= 10(-4.3596)=-43.59
換算關系如下:
不僅僅只是 FFT 計算方式的差別,我們以力科的 WaveMaster 8Zi-A 和 Tek 的DPO70000 系列為例,在 WaveMaster 上您可以做最多 128M 個采樣點的 FFT 運算,而在DPO70000 上只能做 3.2M 個點的 FFT 運算,所以,這種差別才是本質上的!
27.7 柵欄現象
從直觀上講,時域分析清晰易見,示波器即是進行時域觀察的主要工具,可觀察波形形狀,測量脈寬,
相差等信息。但對于信號的進一步分析,比如測量各次諧波在所占的比重和能量分布,時域上的分析就力不從心了,但是利用從連續時間傅里葉變換發展而來的快速傅里葉變換FFT進行分析就很有意義了。通信系統中必不可少的要使用頻譜分析技術,例如頻分復用技術。頻譜分析一般利用快速傅里葉變換 FFT計算頻率譜和功率譜,可直接用來提取特征頻率和譜特征。因為計算機只能夠處理離散的數據點,但 FFT是傅里葉變換的一種近似,與傅里葉變換存在差別,且具有固有的局限:柵欄現象。本小節就是在上面小節的基礎上,從測試測量的角度,談一談在示波器的 FFT 運算中容易被大家忽略的一些問題。
27.7.1??????? 頻率分辨率與時基設置(TimeBase)
頻率分辨率的定義是:在使用 FFT 運算時,在頻率譜上所能得到的最小的兩個頻率點間的間隔。
ΔF=Fs/N=1/NT=1/Tp
稱ΔF 為頻率分辨率,即:采樣率/采樣點數,ΔF 越小說明頻率分辨率越高。?F 僅與信號的實際長度成反比,即待分析的信號持續時間越長,ΔF 越小,頻率分辨率越高。
27.7.2??????? 柵欄效應與頻率分辨率
示波器輸入的信號一般都為非周期的連續信號 ,它的頻譜也是連續的,但是示波器所做的工作是將 進行等間隔采樣并且截斷,然后進行 FFT 的運算得到一個離散的頻譜圖,相當于對連續的頻譜圖也進行了采樣。這樣有一部分頻譜分量將被“擋在”采樣點之外,就好像我們在通過一個柵欄觀察頻譜圖,這種現象稱為“柵欄效應”。這樣就有可能發生一些頻譜的峰點或谷點被柵欄所攔住,不可能被我們觀察到。
不管是時域采樣還是頻域采樣,都有相應的柵欄效應。只是當時域采樣滿足采樣定理時,柵欄效應不會有什么影響。而頻域采樣的柵欄效應則影響很大,“擋住”或丟失的頻率成分有可能是重要的或具有特征的成分,使信號處理失去意義。
柵欄效應是制約頻譜分析諧波分析精度的一個瓶頸。柵欄效應在非同步采樣的時候,影響尤為嚴重。
在非同步采樣時,由于各次諧波分量并未能正好落在頻率分辨點上,而是落在兩個頻率分辨點之間。這樣通過 FFT 不能直接得到各次諧波分量的準確值,而只能以臨近的頻率分辨點的值來近似代替,這就是柵欄效應降低頻譜分析精度的原因。
由此我們可以得出這樣的結論:減小柵欄效應可用通過提高頻譜采樣間隔也就是頻率分辨率的方法來解決。間隔小,頻率分辨率高,被“擋住”或丟失的頻率成分就會越少。但是頻率分辨率的提高會增加采樣點數,使計算工作量增加。
我們可以通過兩種方式增加頻率分辨率:
a:物理分辨率=采樣頻率/采樣點數。
物理分辨率的實際意義在于它可以衡量FFT實際上可以區分的頻率分量的間隔。提高物理分辨率的方法一般是通過增加數據的有效長度,這相當于在模擬域增加了矩形窗的寬度。從而在模擬域減小了sinc主旁瓣寬度,減小了相鄰頻率分量的混疊。
這種增加采樣點的方法主要針對無限長序列的FFT計算。對于無限長序列,不像有限長序列那樣必須補零來提高視在分辨率,無限長序列可以通過增加數據長度來提高物理分辨率。
b:視在分辨率=采樣頻率/分析點數
在序列尾部補零的方法可以使得分析點數增大,故補零的方法可以提高頻譜的視在分辨率。對序列的尾部補零的方法主要針對有限長序列。對于有限長序列,有時只能用補零或者插值來改善頻率分辨率。
通過補零處理,使得頻域采樣密度增大,得到高密度譜。補零的方法所得到的頻譜圖所改善的只是圖形
的視在分辨率,并不能得到頻譜的更多細節。增加采樣點數,增加了輸入序列的階次,從而提供頻譜的更多細節,這是真正的分辨率(物理分辨率)。對序列只補零而不增加數據,輸入序列和它的頻譜階次依舊沒有提高,只是把頻譜畫的密一些,所以改善的只是圖形的視在分辨率,并不能得到頻譜的更多細節。增加序列的長度能夠改善頻譜的真正分辨率,這是基本的規律。
上面的討論可知,改善分辨率的具體方法有如下兩種
(1)對有限長序列采取尾部補零的方法提高視在分辨率
(2)對無限長序列通過真正增加采樣點來提高物理分辨率
有限長序列和無限長序列是針對實際信號來說的,例如非周期的但是包含無限長信息的信號可以稱為無限長序列,嚴格的周期信號和脈沖信號(脈沖之前和之后無限長時間內都是無效信息)都可以稱為有限長序列,當然實際上嚴格的周期信號是不存在的。對于示波器來說,時間窗口內采集到的可以是有限長序列的全部信息或者是無限長序列的一部分信息。所以,如果采集到的是有限長序列的全部信息,那么只能通過補零的方式增加視在分辨率,如果采集到的是無限長序列的一部分信息,那么可以通過增加時間窗口的長度(不是采樣點)來增加物理頻率分辨率。
請看下面的實例:
圖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頻譜的情況下使用。
補零法雖然能增加頻譜圖的視在分辨率,但是由于補的都是無效數據,所以對于頻率分辨率真正的改善沒有幫助,但是補零有它的好處:
?
圖 4? 插值方式并不能改變頻率分辨率
左上方使用了較少的時域采樣點C1,右上方使用了較高的采樣率C2,但是采樣時間是相同的。左下是對 C1 進行 FFT 之后的頻譜F1,右中是對C2 進行FFT之后的頻譜F2,右下是對F2相同頻段進行了放大。可以看到 F2 比 F1 的頻寬增加了,但是對 F1 頻段放大之后的頻譜和 F1 一樣,沒有任頻率分辨率的改善。
由此我們可以得出結論,對 C1 進行插值后,額外的采樣點僅僅存在于較高頻段,會展寬頻譜的帶寬,但是插值方式對于增加我們感興趣頻段的頻譜分辨率沒有任何幫助。
那么如果我們只對對FFT之后的頻譜進行插值效果如何呢?如下圖 5 所示:
?
圖 5? 頻域插值方式是頻譜圖看起來更密
圖中展示了對頻域插值之后的效果,并沒有使頻譜看起來更“窄”(畢竟插值出來的點都是假點),但是我們注意到,頻域插值可以使頻譜的測量更加精確。圖中正弦波的頻率是 955MHz,插值之后頻譜的 Peak 頻率讀數 P2 是 955MHz,插值之前 P1 的讀數為 952MHz。
總之, FFT 是進行信號頻域分析的最廣泛使用的標準化方法,也是現代數字示波器中標配的數學運算函數, 我們更多了解 FFT 應用的細節,能更加有效地利用好這個工具, 從 FFT 中得到更多有價值的信息。
27.8 窗函數對于FFT結果的影響
所謂頻譜泄露,就是信號頻譜中各譜線之間相互干擾,使測量的結果偏離實際值,同時在真實譜線的兩側的其它頻率點上出現一些幅值較小的假譜。產生頻譜泄露的主要原因是采樣頻率和原始信號頻率不同步,造成周期的采樣信號的相位在始端和終端不連續。簡單來說就是因為計算機的FFT運算能力有限,只能處理有限點數的 FFT,所以在截取時域的周期信號時,沒有能夠截取整數倍的周期。信號分析時不可能取無限大的樣本。只要有截斷不同步就會有泄露。
在圖6和圖7中,為了最大化 FFT 運算之后的頻率分辨率,我們使用了矩形窗。圖中的時域信號是500MHz 正弦波信號,在頻譜上應該僅在 500MHz 頻點上看到譜線。FFT 運算研究的是整個時間域(-∞,+∞)與頻域的關系,所以對于矩形窗函數截取的波形應該認為是無窮延續的,因此,矩形窗 100ns 時間窗內,包含了 500MHz 正弦波整 50 個周期,所以波形的首尾能夠整周期得無縫連接,FFT 之后的頻譜會在 500MHz 頻點看到較為純凈的能量值。如下圖6所示
圖 6:矩形時間窗口內包含整數倍周期的信號,首尾可以“無縫”連接
事實上,大多數類型的信號都不滿足上面的這種特殊情況,絕大多數信號在時間窗口內都不是整周期的倍數,在這種情況下,FFT 之后的頻譜就不能看做連續的正弦波了。例如,如果該正弦波的頻率是495MHz,在 100ns 時間窗口內包含 49.5 個周期,因此在截取窗口的首尾部分就存在很大程度上的“不連續”,這種“不連續”會直接影響 FFT 之后的結果。“不連續”部分的能量會散落在整個頻譜范圍內,使用100ns 時間窗口,FFT 之后的頻率分辨率是 10MHz,495MHz 頻點即落在 490MHz 與 500MHz 之間,所以495MHz 正弦波信號的能量分成兩部分,所以從頻譜上看,峰值譜線明顯降低了,這被稱作是頻譜泄露(Leakage)。如下圖7所示:
?
圖 7:對于非整數倍周期信號進行 FFT 運算的效果
不同的窗函數對信號頻譜的影響是不一樣的,這主要是因為不同的窗函數,產生泄漏的大小不一樣,
頻率分辨能力也不一樣。信號的截短產生了能量泄漏,而用FFT算法計算頻譜又產生了柵欄效應,從原理上講這兩種誤差都是不能消除的,但是我們可以通過選擇不同的窗函數對它們的影響進行抑制。(矩形窗主瓣窄,旁瓣大,頻率識別精度最高,幅值識別精度最低;布萊克曼窗主瓣寬,旁瓣小,頻率識別精度最低,但幅值識別精度最高)
為了減少頻譜旁瓣和柵欄效應的影響, 我們在 FFT 運算中使用窗函數,圖8顯示了 Hanning (漢寧窗)使用后的效果。窗函數位于下圖中左上角的柵格中紅色的波形,疊加在黃色的時域信號上。窗函數與時域信號時域相乘。結果顯示在左下角的藍色波形。右下角的粉色波形顯示了進行 FFT 計算之后的頻譜圖,相對于右上角的使用窗函數之前的頻譜圖來說,旁瓣的幅度已經大大減低。
對于不同的應用需求還有多種不同的窗函數供工程師選擇,Hanning(漢寧窗)是使用最廣泛的一種窗函數,除此之外,Hamming(海明窗),Flat-top 窗和 Balckman-Harris 窗的效果,在下圖中做了對比,圖中的信號使用 500MHz 正弦波,矩形窗產生最窄的譜線,加 Flat-top 窗譜線最寬。
?
圖8: 500MHz 正弦波頻譜在不同窗函數下的對比
下圖9中顯示了同樣的窗函數對比,但是采用 495MHz 正弦波進行 FFT 運算,矩形窗顯示了最差旁瓣效果,Flat-top 窗函數基本上保持了與圖8一樣的旁瓣效果,所以我們看到旁瓣的影響和精確頻率分辨率有時候是不可兼得的。(矩形窗主瓣窄,旁瓣大,頻率識別精度最高,幅值識別精度最低;Flat-top 窗主瓣寬,旁瓣小,頻率識別精度最低,但幅值識別精度最高)。
?
圖 9:495MHz 正弦波頻譜在不同窗函數下的對比
圖 10 中顯示了不同的窗函數對于柵欄效應的抑制效果,圖中的正弦波頻率從 450MHz 增加到 550MHz,步進值為 500KHz,Flat-top 窗在整個頻段上基本保持相同的值,矩形窗函數有約 4dB 的差值。
?
圖10:從 500MHz 到 600MHz,不同窗函數的峰值變化
我們把關于窗函數的一些重要的結論總結如下:
1、 連續的 FFT 運算并沒有窗函數的概念,因為信號是充滿時間坐標軸的,FFT 之后的頻率分辨率是0,并不存在柵欄效應。但是,示波器采集和處理的信號全部是離散的采樣點,是非連續的,所以 DFT 之后的頻譜一定存在柵欄效應。
2、 如果能夠保證示波器時間窗口內的信號是整數倍周期的(并且在信號時間窗口之前和之后的信號都是嚴格周期重復的),或者采集信號時間足夠長,基本上可以覆蓋到整個有效信號的時間跨度。這種方法經常在瞬態捕捉中被使用到,比如說沖擊試驗,如果捕捉的時間夠長,捕捉到的信號可以一直包括了振動衰減為零的時刻。在這種情況下,可以不加窗函數。
3、 如果不滿足 1 和 2,那么 FFT 計算之后的頻譜就不可避免受到頻譜泄露(Leakage)的影響,如頻點分裂,幅值能量不精確等等,總之就是頻譜線比較難看,這時候就需要使用適當的窗函數,以滿足我們工程測量的需要。
4、示波器中的 FFT 運算,不加窗和加矩形窗是一回事。
5、窗函數會改變頻域波形,讓頻譜形成人們“喜歡”的形狀,但是不會本質上消除頻譜泄露,不同的窗函數都有其獨特的特性,我們只需要根據工程測試的需要,選擇一款合適的就可以了。
27.9 窗函數選擇指南
如果在測試中可以保證不會有泄露的發生,則不需要用任何的窗函數(在軟件中可選擇 uniform)。
但是如同剛剛討論的那樣,這種情況只是發生在時間足夠長的瞬態捕捉和一幀數據中正好包含信號整周期的情況。
如果測試信號有多個頻率分量,頻譜表現的十分復雜,且測試的目的更多關注頻率點而非能量的大小。在這種情況下,需要選擇一個主畔夠窄的窗函數,漢寧窗是一個很好的選擇。
如果測試的目的更多的關注某周期信號頻率點的能量值,比如,更關心其EUpeak,EUpeak-peak,EUrms或者 EUrms2,那么其幅度的準確性則更加的重要,可以選擇一個主畔稍寬的窗,flat -top 窗在這樣的情況下經常被使用。
如果被測信號是隨機或者未知的,選擇漢寧窗。
27.10?? 總結
本章節的內容非常值得初學者看,如果你是初學者的話,建議認真的多看幾遍。
?
總結
以上是生活随笔為你收集整理的【STM32F407的DSP教程】第27章 FFT的示波器应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加权平均滤波算法
- 下一篇: instagram 和不联网