洪 江, 何 勰, 張凱杰
(上海船舶運(yùn)輸科學(xué)研究所 航運(yùn)技術(shù)與安全國家重點(diǎn)實(shí)驗(yàn)室,上海 200135)
基于FPGA的FFT算法在船舶電站監(jiān)控中的實(shí)現(xiàn)
洪 江, 何 勰, 張凱杰
(上海船舶運(yùn)輸科學(xué)研究所 航運(yùn)技術(shù)與安全國家重點(diǎn)實(shí)驗(yàn)室,上海 200135)
針對船舶電站監(jiān)控系統(tǒng)的特點(diǎn)及其對參數(shù)實(shí)時(shí)監(jiān)控的要求,提出基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)的快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)算法,并將其應(yīng)用到船舶電站監(jiān)控系統(tǒng)中。為驗(yàn)證FFT算法在檢測識別船舶電壓信號方面的有效性,分別在FPGA和MATLAB平臺上對船舶電力系統(tǒng)中的電壓三次諧波函數(shù)信號進(jìn)行FFT計(jì)算。在FPGA中得到的運(yùn)算結(jié)果與MATLAB中得到的運(yùn)算結(jié)果基本一致,表明基于FPGA的FFT算法能有效識別出不同頻率的信號成分,在船舶電站監(jiān)控中對參數(shù)檢測具有較好的應(yīng)用價(jià)值。
FFT;FPGA;蝶形運(yùn)算;諧波分析
數(shù)字信號處理技術(shù)在實(shí)際工程中具有非常廣泛的應(yīng)用,數(shù)字信號的處理主要采用時(shí)域法(即數(shù)字濾波)和頻域法(即頻譜份分析)2種方法。離散傅里葉變換(Discrete Fourier Transform, DFT)是信號處理中最常用的算法之一,在信號處理領(lǐng)域起著核心作用?;贒FT優(yōu)化改進(jìn)的快速傅里葉變換算法(Fast Fourier Transform,F(xiàn)FT)已成為數(shù)字信號處理的最基本技術(shù)之一,已廣泛應(yīng)用于頻譜分析、數(shù)字濾波、圖像處理、語音識別和無線保密通信等領(lǐng)域中。
隨著船舶電站監(jiān)控系統(tǒng)逐漸向智能化方向發(fā)展,對電站監(jiān)控的快速性、實(shí)時(shí)性和可靠性提出了更高的要求。將基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)的FFT算法運(yùn)用到船舶電站監(jiān)控設(shè)備中能較好地滿足該要求,較好地提升整個船舶電站監(jiān)控的智能化水平。
在船舶電站監(jiān)控中,電壓參數(shù)是整個電力系統(tǒng)中的一個非常重要的性能指標(biāo),其品質(zhì)直接關(guān)系到整個電網(wǎng)的品質(zhì)和安全。因此,船舶電站監(jiān)控系統(tǒng)必須能快速檢測出該參數(shù)中的各次諧波,實(shí)時(shí)監(jiān)控該參數(shù)的數(shù)值和波動情況。這里研究如何在FPGA芯片中實(shí)現(xiàn)FFT算法,運(yùn)用在FPGA中設(shè)計(jì)好的FFT處理器對船舶電力系統(tǒng)中的電壓三次諧波函數(shù)信號進(jìn)行檢測分析,驗(yàn)證FFT算法的性能。
DFT是信號分析和處理中的一種重要變換,直接計(jì)算DFT的運(yùn)算量與變換區(qū)間長度N的平方成正比,當(dāng)N較大時(shí),運(yùn)算量成幾何級數(shù)增長,限制了DFT在實(shí)際工程中的應(yīng)用。在該背景下,基于DFT改進(jìn)的分裂基FFT算法可減少計(jì)算次數(shù),使FFT算法在工程應(yīng)用中發(fā)揮出巨大的優(yōu)勢。
長度為N的有限長序列x(n)的DFT為
(1)
式(1)中:x(n)為時(shí)域點(diǎn);X(k)為頻域點(diǎn);WN為旋轉(zhuǎn)因子。
FFT算法的核心是充分利用旋轉(zhuǎn)因子的周期性和對稱性,不斷把長序列的DFT分解成幾個短序列的DFT,減少DFT的運(yùn)算次數(shù)。FFT算法可按分解方式的不同分為時(shí)域抽取算法(DIT)和頻域抽取算法(DIF),2種分解方式本質(zhì)上完全一致,在運(yùn)算量和復(fù)雜性上也完全相同。
采用基-2時(shí)域抽取算法(基-2FFT),對其進(jìn)行簡要分析。基-2FFT是將x(n)按n的奇、偶分為x1(n)和x2(n),用2個N/2點(diǎn)DFT來完成一個N點(diǎn)的DFT計(jì)算。
(2)
基-2FFT運(yùn)算的基本單元是蝶形運(yùn)算單元(見圖1)。
由圖1可知,進(jìn)行一次蝶形運(yùn)算只需進(jìn)行2次復(fù)數(shù)乘法和2次加減法運(yùn)算,則N=2n個點(diǎn)的DFT復(fù)數(shù)乘法運(yùn)算量由N2降到N/2log2N次,復(fù)數(shù)加減法運(yùn)算量由N(N-1)次降到Nlog2N次。因此,當(dāng)N取值較大時(shí),運(yùn)算量會極大地降低,提高了運(yùn)算效率。
基-2FFT算法中的主要運(yùn)算參數(shù)解析如下。
1)原位計(jì)算:序列長為N=2M點(diǎn)的FFT有M級蝶形,每級有N/2個蝶形運(yùn)算。在同一級中,每個蝶形的2個輸入數(shù)據(jù)只對本蝶形有用,每個蝶形的輸入、輸出數(shù)據(jù)節(jié)點(diǎn)在同一水平線上。這樣,當(dāng)計(jì)算完一個蝶形后,所得的輸出數(shù)據(jù)可立即存入原輸入數(shù)據(jù)所占用的存儲單元內(nèi)。經(jīng)過M級運(yùn)算后,原來存放輸入序列數(shù)據(jù)的N個存儲單元中可一次存放X(k)的N個值。
3)在同一級中,第L級FFT運(yùn)算中同一旋轉(zhuǎn)因子用在2M-L個蝶形中,相同旋轉(zhuǎn)因子之間相隔的距離(蝶距)為D=2L。
4)在同一蝶形運(yùn)算中,第L級的每個蝶形的2個輸入數(shù)據(jù)相距B=2L-1。
5)碼位顛倒:輸入序列x(n)經(jīng)過M級時(shí)域奇、偶抽選后,輸出序列X(k)的順序和輸入序列的順序關(guān)系為倒位關(guān)系。
6)蝶形運(yùn)算的規(guī)律:序列經(jīng)過時(shí)域抽選后存入數(shù)組中,若蝶形運(yùn)算的2個輸入數(shù)據(jù)相距B個點(diǎn),則應(yīng)用原位計(jì)算,蝶形運(yùn)算可表示為圖2的形式。
N=8時(shí)的基-2FFT算法的運(yùn)算流程見圖3。
2.1FFT模塊的總體設(shè)計(jì)[3]
FPGA采用邏輯單元陣列LCA結(jié)構(gòu),主要包括可配置邏輯模塊、輸入輸出模塊和內(nèi)部連線模塊。FPGA可實(shí)現(xiàn)組合邏輯和時(shí)序邏輯功能,這些邏輯通過內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)實(shí)現(xiàn),且FPGA允許無限次編程。根據(jù)FPGA的結(jié)構(gòu)和功能實(shí)現(xiàn)特點(diǎn),在FPGA平臺上設(shè)計(jì)FFT模塊。
基-2FFT模塊主要由蝶形運(yùn)算單元、ROM單元、RAM單元、地址產(chǎn)生單元、時(shí)序控制單元和求模運(yùn)算單元等6部分組成(見圖4)。
FFT模塊的功能概述如下。
1)蝶形運(yùn)算單元:采用DIT方式完成基-2蝶形運(yùn)算,數(shù)據(jù)從RAM和ROM中讀出,1次蝶形運(yùn)算完成對輸入數(shù)據(jù)的復(fù)數(shù)乘法和加減法,輸出運(yùn)算結(jié)果。
2)RAM單元:在時(shí)序控制單元和地址產(chǎn)生單元的控制下,實(shí)現(xiàn)實(shí)時(shí)讀入和讀出運(yùn)算參數(shù)。
3)ROM單元:主要存放用于FFT運(yùn)算的旋轉(zhuǎn)因子參數(shù),在時(shí)序控制單元和地址產(chǎn)生單元的控制下讀出旋轉(zhuǎn)因子參數(shù)。
4)地址產(chǎn)生單元:產(chǎn)生RAM的讀、寫地址和ROM的讀地址。
5)時(shí)序控制單元:產(chǎn)生各模塊的時(shí)鐘控制信號,控制FFT運(yùn)算的過程。
2.2蝶形運(yùn)算單元的設(shè)計(jì)[4]
蝶形運(yùn)算單元是FFT模塊的核心單元,該單元模塊的運(yùn)算速度直接決定著整個FFT的速度,蝶形運(yùn)算單元的設(shè)計(jì)圖見圖5。
在圖5中,2個模塊分別為復(fù)數(shù)乘法運(yùn)算子單元和加減法運(yùn)算子單元。首先對輸入到蝶形運(yùn)算單元的信號數(shù)據(jù)線進(jìn)行復(fù)數(shù)的乘法運(yùn)算,將乘法子單元運(yùn)算得到的結(jié)果輸入到加減法運(yùn)算子單元中進(jìn)行運(yùn)算,整個運(yùn)算過程均在時(shí)鐘信號的控制下進(jìn)行。
蝶形運(yùn)算單元是整個FFT運(yùn)算的核心部分,下面詳細(xì)討論整個FFT算法在FPGA中實(shí)現(xiàn)的原理。
2.3FFT算法在FPGA中的實(shí)現(xiàn)[5]
FFT在FPGA中的實(shí)現(xiàn)見圖6,F(xiàn)FT模塊的工作原理描述如下。
1)在外部使能信號的控制下,F(xiàn)FT模塊開始工作;
2)旋轉(zhuǎn)因子參數(shù)已預(yù)存儲在ROM中,在第1個時(shí)鐘信號的控制下,初始的信號參數(shù)讀入到RAM中;
3)在第2個時(shí)鐘信號和地址控制信號的控制下,ROM的旋轉(zhuǎn)因子參數(shù)和RAM中的參數(shù)讀出,輸入到蝶形運(yùn)算單元中;
4)在第3個時(shí)鐘信號控制下,蝶形運(yùn)算單元開始對輸入?yún)?shù)進(jìn)行運(yùn)算,然后將得到的參數(shù)返回到RAM中;
5)繼續(xù)在時(shí)鐘信號和地址控制信號的控制下,不斷將參數(shù)寫入到蝶形運(yùn)算單元中進(jìn)行迭代,根據(jù)預(yù)先設(shè)置好的迭代次數(shù),當(dāng)完成最后一次蝶形運(yùn)算時(shí),將得到的參數(shù)寫入到求模運(yùn)算單元中;
6)經(jīng)過求模運(yùn)算之后,便得到信號的FFT運(yùn)算結(jié)果。
為驗(yàn)證FFT算法在FPGA中的實(shí)現(xiàn)中基于FPGA設(shè)計(jì)的FFT模塊的性能,對船舶電力系統(tǒng)電壓中的諧波函數(shù)信號進(jìn)行FFT運(yùn)算分析。
船舶發(fā)電機(jī)在產(chǎn)生正常的電壓時(shí),經(jīng)常會摻雜奇數(shù)次的諧波,這些諧波對于整個電網(wǎng)具有一定的危害,影響電源品質(zhì)。在實(shí)際應(yīng)用中,需提前識別出電壓中的諧波成分,然后對電壓進(jìn)行相關(guān)的濾波,從而保證輸出穩(wěn)定的電壓。
船舶發(fā)電機(jī)電壓的三次諧波函數(shù)為
y(t)=cos(2pif3t)+cos(2pifbt)+cos(2pi3f3t)
(3)
下面主要用FFT處理器識別電壓信號中的50 Hz,1 000 Hz和3 000 Hz的成分,則在電壓的三次諧波函數(shù)中,fb=50 Hz,f3=1 000 Hz,點(diǎn)數(shù)N=1 024,采樣頻率為51 200 Hz,即采樣間隔為0.02 s。
1)三次諧波函數(shù)信號在FPGA中運(yùn)算得到的結(jié)果見圖7。
2)三次諧波函數(shù)信號在MATLAB中的處理結(jié)果見圖8。
3)由圖7和圖8可知,頻率值約為50 Hz,1 000 Hz和3 000 Hz時(shí),F(xiàn)PGA的運(yùn)算結(jié)果和MATLAB中的仿真結(jié)果[6]基本一致,充分說明在“FFT算法在FPGA中的實(shí)現(xiàn)”中設(shè)計(jì)的FFT處理器比較合理,性能較好,符合設(shè)計(jì)要求,能實(shí)現(xiàn)對三次諧波函數(shù)信號中的不同頻率成分的識別。
本文詳細(xì)闡述了FFT算法的基本原理。蝶形運(yùn)算單元是FFT算法的核心,通過采用蝶形運(yùn)算,可大幅度減少運(yùn)算次數(shù),提高算法的運(yùn)算速度,非常適合處理大批量的信號,優(yōu)勢明顯。
根據(jù)FFT算法的基本原理,在FPGA中設(shè)計(jì)了FFT處理器,對船舶電力系統(tǒng)中的電壓諧波函數(shù)信號進(jìn)行了運(yùn)算,驗(yàn)證了FFT算法的性能。為驗(yàn)證FFT模塊對諧波函數(shù)信號識別的有效性,分別在FPGA和MATLAB中對50 Hz,1 000 Hz和3 000 Hz的信號成分進(jìn)行FFT運(yùn)算識別。得到的頻譜仿真結(jié)果顯示,在FPGA中運(yùn)算得到的結(jié)果與在MATLAB中得到的結(jié)果基本一致,說明設(shè)計(jì)的FFT模塊能有效地識別出不同頻率成分的信號。
該基于FPGA的FFT算法模塊未來可運(yùn)用到船舶電站監(jiān)控的的信號(電壓、電流和頻率等)諧波分析、電力系統(tǒng)綜合保護(hù)模塊、電力系統(tǒng)的故障診斷中,能較好地提升船舶電站監(jiān)控系統(tǒng)的快速性和實(shí)時(shí)性,有效提升整個船舶電力系統(tǒng)的自動化水平。
[1] 胡廣書.數(shù)字信號處理-理論、算法與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,1997.
[2] 程佩青.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社,2009.
[3] 王林泉,皮亦鳴,陳曉寧,等.基于FPGA的超高速FFT硬件實(shí)現(xiàn)[J].電子科技大學(xué)學(xué)報(bào),2005,34(2):152-155.
[4] 蔡可紅,基于FPGA的FFT設(shè)計(jì)與實(shí)現(xiàn)[D],南京:南京理工大學(xué),2006.
[5] 白德風(fēng).基于FPGA的FFT信號處理器的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京工業(yè)大學(xué),2008.
[6] 張志涌.精通MATLAB[M].北京:北京航空航天大學(xué)出版社,2011.
FFTAlgorithmProgrammedFPGAforShipPowerPlantMonitoring
HONGJiang,HEXie,ZHANGKaijie
(State Key Laboratory of Navigation and Safety Technology, Shanghai Ship & Shipping Research Institute, Shanghai 200135, China)
This paper puts forward an Field-Programmable Gate Array(FPGA) programmed with an Fast Fourier Transform(FFT) based Algorithm for the real time monitoring system of ship power station. The effectiveness of the design in the voltage signal detection and the third-harmonic analysis is checked in MATLAB environment and with programmed FPGA respectively. The results obtained with the FPGA are basically the same as those from the MATLAB, which proves that the design is successful.
FFT; FPGA; butterfly operation; harmonic analysis
U665.12
A
2017-06-07
洪 江(1988—),男,江西鷹譚人,研究實(shí)習(xí)員,碩士,主要從事電站自動化系統(tǒng)設(shè)計(jì)研究。
1674-5949(2017)03-0032-06