馬 可,張遠安,張開生
(西安電子工程研究所,西安 710100)
?
CZT和ZFFT頻譜細化性能分析及FPGA實現(xiàn)
馬可,張遠安,張開生
(西安電子工程研究所,西安710100)
摘要:快速傅里葉變換在信號的頻譜分析中應用廣泛,而在工程實際中往往只對信號頻譜中一段區(qū)間感興趣,需要對頻譜進行細化分析;常用的頻譜細化方法有線性調(diào)頻Z變換(Chirp-Z Transform, CZT)算法和基于復調(diào)制的細化(Zoom-FFT, ZFFT)算法,在給出了兩種頻譜細化方法的計算流程后,通過MATLAB仿真說明兩種算法都能提高信號頻率的測量精度,最后給出了這兩種算法在FPGA具體工程實現(xiàn)中的實現(xiàn)步驟。
關鍵詞:線性調(diào)頻Z變換;復調(diào)制細化;頻譜細化
0引言
在信號處理中,經(jīng)常需要分析信號的頻譜,傳統(tǒng)的頻譜分析方法一般采用快速傅里葉變換(fast fourier transform, FFT)算法,F(xiàn)FT算法得到的是整個采樣頻率上的粗略的“全景頻譜”,而在實際的應用中,往往只需要對感興趣的某一段頻譜區(qū)間進行細微觀察和分析,這就需要提高所選區(qū)間的頻率分辨率[1]。
頻率分辨率表示頻譜中能夠分辨的兩個頻率分量的最小間隔[2],用頻率間隔△f來表示。而頻率間隔等于采用頻率fs除以采樣點數(shù)N。為了提高頻率分辨率,可以采用的方法:一是降低采樣頻率,這會使頻率分析范圍縮小,并且采樣頻率還受采樣定律限制,不可能太??;二是增加分析的采樣點數(shù),這意味著計算機的存儲量和計算量大大增加,由于實際系統(tǒng)軟件、硬件方面的限制,這樣做在工程實踐中并不總是可能的。
為了對窄帶頻譜區(qū)間進行細致觀察,提出了頻譜細化的概念,其基本思路就是對信號頻譜中需要分析的頻段進行局部放大,也即在某一頻率附近局部增加譜線密度,實現(xiàn)選帶分析。常用的頻譜細化方法有線性調(diào)頻Z變換(Chirp-Z Transform, CZT)算法和基于復調(diào)制的細化(Zoom-FFT, ZFFT)算法。文獻[3-6]中都介紹了這兩種算法的原理和性能,不過對于ZFFT算法的具體現(xiàn)場可編程門陣列(field programmable gate array, FPGA)實現(xiàn),并沒有太多介紹。本文首先簡單介紹這兩種算法原理并對比分析它們的性能,然后給出了這兩種算法在FPGA中的具體實現(xiàn)步驟。
1算法分析
1.1CZT算法
CZT可以對感興趣的某一段頻譜區(qū)間進行細化,它通過對單位圓上任意一段曲線上的Z變換進行計算。對有限長序列x(n)做CZT,主要是確定需要細化頻譜區(qū)間的起始頻率、細化頻率間隔以及取樣點數(shù),其線性濾波計算步驟如圖1所示[7-8]。
圖1 CZT的線性濾波計算步驟
對于長度為M的有限長序列x(n)的CZT是:
(1)
其中:θ0為初始幅角,φ0為單位圓等間隔增量。當A0=W0=1時,即在單位圓上進行采樣時,式(2)變?yōu)椋?/p>
(2)
式中,θ0=2πf0/fs,φ0=2πfL/(Mfs),其中f0為分析頻譜的起始頻率,fL為分析頻譜的長度,fs為采樣頻率。這樣,CZT算法頻率分辨率為△f=fL/M。
1.2ZFFT算法
ZFFT算法通過指定的采樣頻率分析整個頻譜上感興趣的一段區(qū)間。對有限長序列x(n)進行ZFFT,主要需要確定需要細化頻帶的頻率中心fe,細化倍數(shù)D,其主要的運算流程如圖2所示[9]。
圖2 ZFFT運算流程
圖4 多頻率下的仿真結果
在確定了細化頻帶的中心頻率fe、細化倍數(shù)D以及采樣頻率fs之后,就可以確定細化頻帶的下限頻率fl=fe-fs/(2D)以及上限頻率fh=fe+fs/(2D)。重采樣之后如果進行N點FFT處理,則頻率分辨率為△f=fs/(DN)。FFT處理之后,對結果進行頻率翻轉,得到最后的處理結果。
2CZT和ZFFT頻譜仿真
針對上述CZT算法和ZFFT算法,我們進行計算機仿真。在仿真分析CZT和ZFFT算法對信號頻譜的細化情況時,先分析單頻率成分的測量精度,再分析多頻率成分的測量精度。
本文仿真中,假定信號頻率f為110.55 kHz,采樣頻率fs為500 kHz,信號幅度A=4,噪聲為服從正態(tài)分布的隨機噪聲,方差為1.6,信噪比SNR為10 dB。用CZT算法進行分析時,細化的頻率區(qū)間也設定為85 kHz~135 kHz,細化點數(shù)為512。用ZFFT算法分析時,細化頻譜區(qū)間的中心頻率fe為110 kHz,細化倍數(shù)D=10,則細化的頻率區(qū)間也為85 kHz~135 kHz。用功率加權求平均的方法進行頻譜校正,做100次Monte Carlo實驗得到仿真結果如圖3所示。
(a) 3種算法頻譜分析圖
(b) 3種算法頻譜分析局部放大圖圖3 仿真結果圖
由圖3可以得出,F(xiàn)FT方法仿真估計出的結果fFFT=110.60 kHz,誤差σFFT=0.05 kHz;CZT方法仿真估計出的結果fCZT=110.59 kHz,誤差σCZT=0.04 kHz;ZFFT方法仿真估計出的結果fZFFT=110.56 kHz,誤差σZFFT=0.01 kHz。從圖3的仿真結果可以看出,CZT算法和ZFFT算法比傳統(tǒng)的FFT算法在頻譜測量精度上,要提高很多。
除了分析單頻信號,這里假設一個多頻率成分的信號,頻率分別為110.16 kHz,110.55 kHz,110.93 kHz,幅度分別為3,5,4,其他參數(shù)同上面仿真設計,其頻譜細化的仿真結果如圖4所示。
從圖4中可以看到,在多頻率成分時,當信號的多個頻率成分很接近,F(xiàn)FT算法無法區(qū)分信號的3個頻率,而CZT以及ZFFT算法可以區(qū)分3個頻率成分的譜峰,具體的測量結果如下表1所示。
表1 3種算法頻譜譜峰測量值
從仿真中可以看到,ZFFT算法在頻譜細化中,比FFT算法和CZT算法精度要高很多。從頻率分辨率上分析,F(xiàn)FT算法的頻率分辨率△fFFT=fs/N=0.24 kHz,CZT算法的頻率分辨率△fCZT=50/M=0.10 kHz,ZFFT算法的頻率分辨率△fZFFT=fs/(ND)=0.02 kHz。所以從這一點上也可以看出ZFFT算法的頻率分辨率要高些。
3CZT和ZFFT的FPGA實現(xiàn)
圖1中介紹了CZT算法的流程,其中比較復雜的計算步驟是y(n)和h(n)的卷積,在FPGA中具體實現(xiàn)CZT算法時,常采用圖5中的計算過程。
實現(xiàn)時,首先利用MATLAB產(chǎn)生圖5中三組系數(shù)的coe文件,通過設定所需分析頻譜的起始頻率和分析頻段的長度,細化點數(shù),產(chǎn)生三組浮點型的系數(shù),換算成16 bit的整型有符號數(shù),存入Xilinx的Block RAM IP核中。運算時,通過設計FPGA內(nèi)部程序,使得系數(shù)1讀出時,與輸入信號x(n)對齊,調(diào)用復數(shù)乘法器IP核進行運算,對輸出結果y’(n)調(diào)用FFT
圖5 CZT算法具體實現(xiàn)流程
運算的IP核對其進行FFT運算,結果同系數(shù)2進行復數(shù)乘法,對該結果G’(r)進行IFFT運算,其結果同系數(shù)3進行復數(shù)乘法,截取該結果的前面M點。由于FPGA內(nèi)部運算時,信號位數(shù)會增加,考慮資源的情況,必須對結果進行截位。所以在設計中,必須對每一步計算結果的信號進行截位以及時序的對齊。
對于圖2中ZFFT的計算過程,在FPGA中實現(xiàn)時,具體的流程如圖6所示。
圖6 ZFFT算法具體實現(xiàn)流程
對于ZFFT算法的實現(xiàn)過程,主要也是將相應的系數(shù)存入Block RAM中,實現(xiàn)過程中也調(diào)用的FPGA IP核中自帶的運算算法,在頻率調(diào)整時,由于在MATLAB中采用fftshift函數(shù)對頻譜進行翻轉,而在FPGA中,可以通過把FFT后的數(shù)據(jù)存入Block RAM中,然后讀取時,先讀取后半部分的數(shù)據(jù),再讀取前半部分的數(shù)據(jù)來實現(xiàn)。對于這些設計方法,在FPGA中實現(xiàn)起來都比較簡單、方便。而且FPGA運算速度高,也能很好地滿足工程需求。
4結束語
本文主要比較分析了CZT算法和ZFFT算法在頻譜細化中的性能,通過MATLAB仿真分析得到這兩種算法在頻譜細化性能中相比較傳統(tǒng)的FFT算法有很大的提高,并且ZFFT算法性能也稍優(yōu)于CZT算法,最后給出了在FPGA中實現(xiàn)這兩種算法的具體步驟。這種實現(xiàn)方法已經(jīng)在工程上得到一定應用[9-10]。
參考文獻:
[1] 李天昀, 葛臨東. 兩種快速頻域細化分析方法的研究[J]. 系統(tǒng)工程與電子技術, 2004, 26(9): 1192-1194.
[2] 胡廣書. 數(shù)字信號處理理論算法與實現(xiàn)[M]. 北京: 清華大學出版社, 2003.
[3] 丁康, 潘成灝, 李巍華. ZFFT與Chirp-Z變換細化選帶的頻譜分析對比[J]. 振動與沖擊, 2006, 25(6): 9-12.
[4] 謝明, 丁康. 基于復解析帶通濾波器的復調(diào)制細化譜分析的算法研究[J]. 振動工程學報, 2002, 15(4): 479-483.
[5] 王力, 張冰, 徐偉. 基于MATLAB復調(diào)制ZOOM-FFT算法的分析與實現(xiàn)[J]. 艦船電子工程, 2006, 26(4): 119-121.
[6] 趙宏強. 頻譜細化算法分析[J]. 四川兵工學報, 2013, 34(5): 105-109.
[7] 張軍團, 程德福, 林君. 儲油罐液位監(jiān)測雷達設計與實現(xiàn)[J]. 計算機測量與控制, 2004, 12(11): 1040-1042.
[8] 張紅, 王曉紅, 郭昕. 提高線性調(diào)頻連續(xù)波雷達測距精度的ZFFT算法[J]. 航天電子對抗, 2006, 22(1): 48-51.
[9] 王向輝, 高天德, 郭秀焱,等. 基于LabVIEW的吸聲系數(shù)測試系統(tǒng)設計[J]. 計算機測量與控制, 2011, 19(5): 1014-1016.
[10] 馬可, 來晉峰, 李慧敏,等. CZT在雙頻連續(xù)波雷達信號處理中的應用分析[J]. 火控雷達技術, 2014, 43(3): 46-49.
Performance Analysis for CZT and ZFFT Spectrum Zoom and Its FPGA Realization
Ma Ke, Zhang Yuanan, Zhang Kaisheng
(Xi’an Electronic Engineering Research Institute, Xi’an710100,China)
Abstract:Fast Fourier Transform is widely used in the signal spectrum analysis. However, it usually gets interesting in a part of the whole signal spectrum in engineering, so it needs spectrum zoom analysis. It is the common method for spectrum zoom which including complex modulation Zoom-FFT (ZFFT) and Chirp-Z Transform (CZT). After the calculating methods of two kinds spectrum zoom are given, both ZFFT and CZT can improve the measurement accuracy by simulation in MATLAB. Lastly, this paper gives the realization steps of the two methods in FPGA engineering.
Keywords:Chirp-Z transform; zoom-FFT; spectrum zoom
文章編號:1671-4598(2016)02-0288-02
DOI:10.16526/j.cnki.11-4762/tp.2016.02.079
中圖分類號:TN911.7
文獻標識碼:A
作者簡介:馬可(1988-)男,陜西西安人,工程師,主要從事雷達總體工程與雷達信號處理方向的研究。
基金項目:武器裝備預先研究基金資助項目(40405040201)。
收稿日期:2015-09-08;修回日期:2015-09-29。