文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2014)04-0042-03
中文引用格式:呂晨陽(yáng),王建.基于System Generator的Rife算法的FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(04):42-44.
頻率測(cè)量在電子偵察中扮演了重要的角色[1]。隨著電子技術(shù)的發(fā)展,傳統(tǒng)的偵察接收機(jī)向著數(shù)字化、軟件化方向發(fā)展[2]。傳統(tǒng)的基于模擬電路的測(cè)頻方法需要轉(zhuǎn)換為數(shù)字方法實(shí)現(xiàn)。模擬偵察接收機(jī)中通常采用基于相位差的頻率測(cè)量方法[3]。該方法在數(shù)字電路中同樣可以方便地實(shí)現(xiàn),但該方法對(duì)信噪比要求比較高[3]。基于數(shù)字電路的優(yōu)點(diǎn),可采用先進(jìn)的算法實(shí)現(xiàn)更高的性能。Rife算法[4]是一種常用的基于DFT頻譜的頻率測(cè)量算法,具有算法實(shí)現(xiàn)容易、精度高等優(yōu)點(diǎn)。而DFT運(yùn)算可以通過(guò)FFT進(jìn)行快速運(yùn)算。
為保證截獲概率,偵察接收機(jī)帶寬不斷增大,現(xiàn)瞬時(shí)帶寬已達(dá)500 MHz[2]。傳統(tǒng)的基于DSP和GPP的系統(tǒng)已難以滿(mǎn)足實(shí)時(shí)處理的需求,采用基于FPGA的信號(hào)處理機(jī)已成為普遍的解決方法[5-7]。
FPGA設(shè)計(jì)中基于HDL和定點(diǎn)的設(shè)計(jì)方法不同于傳統(tǒng)的DSP和GPP平臺(tái)中基于C語(yǔ)言和浮點(diǎn)的設(shè)計(jì)方法。HDL語(yǔ)言語(yǔ)法和語(yǔ)言的可綜合性限制了算法的實(shí)現(xiàn)[7-8]?;诖?,Xilinx和Altera公司分別推出了簡(jiǎn)化FPGA數(shù)字處理系統(tǒng)的集成開(kāi)發(fā)工具System Generator for DSP和DSP Builder[9],快速、簡(jiǎn)易地將DSP系統(tǒng)的抽象算法轉(zhuǎn)化成可綜合的、可靠的硬件系統(tǒng),為DSP設(shè)計(jì)者掃清了編程的障礙[8-9]。
2 System Generator
System Generator 是高性能、高效的DSP算法建模工具,是DSP算法與FPGA的橋梁[7-8]。其作用如圖1所示,可在Matlab/Simulink環(huán)境下對(duì)算法以及系統(tǒng)進(jìn)行建模,并生成相應(yīng)的工程,再調(diào)用ISE進(jìn)行仿真、綜合、實(shí)現(xiàn)。
Xilinx為System Generator提供了大量的信號(hào)處理模塊(如FIR濾波器、FFT)、糾錯(cuò)算法、存儲(chǔ)器以及數(shù)字邏輯功能,可以在設(shè)計(jì)環(huán)境下直接調(diào)用,快速構(gòu)建DSP系統(tǒng)。同時(shí)還支持.m文件和HDL導(dǎo)入[7-8]。
雖然System Generator中只有Xilinx提供的模塊可以在FPGA中實(shí)現(xiàn),但利用Simulink中豐富的資源可方便地生成測(cè)試向量,同時(shí)快速對(duì)結(jié)果進(jìn)行準(zhǔn)確直觀的分析??紤]到資源消耗,F(xiàn)PGA中實(shí)現(xiàn)的算法以定點(diǎn)算法為主,定點(diǎn)算法的精度和范圍很有限,容易發(fā)生溢出或者計(jì)算誤差過(guò)大,導(dǎo)致算法失敗[5-6]。采用傳統(tǒng)的基于HDL和IP核的設(shè)計(jì)方法,如果早期分析得不完全,在設(shè)計(jì)后期進(jìn)行修改是一件費(fèi)時(shí)費(fèi)力的事情,而且極易發(fā)生錯(cuò)誤。而在System Generator環(huán)境下,采用基于模型的設(shè)計(jì)方法可以方便地實(shí)現(xiàn)和驗(yàn)證定點(diǎn)算法,發(fā)現(xiàn)問(wèn)題后也容易進(jìn)行修改。
3 Rife算法的FPGA設(shè)計(jì)
從第1節(jié)的Rife算法介紹可知,Rife算法以FFT運(yùn)算為核心,通過(guò)頻譜峰值與次峰值的插值運(yùn)算計(jì)算頻率值。FFT算法是一種塊運(yùn)算,逐幀進(jìn)行,需要提供幀的起止邊界。本設(shè)計(jì)中采用恒虛警模塊提供幀的起止信號(hào)。FPGA中實(shí)現(xiàn)的Rife頻率測(cè)量算法主要包含如下功能模塊:快速傅里葉變換模塊(FFT)、取模模塊、峰值檢測(cè)與鎖存模塊、Rife計(jì)算模塊和控制模塊。系統(tǒng)整體框圖如圖2所示。
System Generator工具中提供了FFT模塊,其通過(guò)參數(shù)化配置,支持從8點(diǎn)到65 536點(diǎn)的基2、基4 FFT運(yùn)算,其在FPGA中的實(shí)現(xiàn)對(duì)應(yīng)著LogicCORE中的FFT核。使用該模塊主要需要關(guān)心start信號(hào)、dv信號(hào)和輸入輸出信號(hào)。從恒虛警模塊來(lái)的start信號(hào)通過(guò)一個(gè)上升沿指示轉(zhuǎn)換開(kāi)始,此時(shí)在時(shí)鐘的同步下逐點(diǎn)將待轉(zhuǎn)換數(shù)據(jù)輸入,當(dāng)輸入的信號(hào)點(diǎn)數(shù)達(dá)到設(shè)定的采樣點(diǎn)時(shí)開(kāi)始FFT計(jì)算。恒虛警模塊在沒(méi)有檢測(cè)到信號(hào)的情況下會(huì)輸出0,故當(dāng)信號(hào)點(diǎn)數(shù)小于FFT所需的點(diǎn)數(shù)時(shí)會(huì)自動(dòng)插0。
經(jīng)過(guò)一段時(shí)間的延時(shí),dv輸出高電平,指示轉(zhuǎn)換完成。此時(shí)會(huì)逐點(diǎn)輸出轉(zhuǎn)換完成的頻譜信號(hào),同時(shí)xk_index輸出頻譜點(diǎn)對(duì)應(yīng)的索引值。
Rife算法需要DFT頻譜的幅度信息,而FFT模塊輸出的為I、Q兩路復(fù)信號(hào)。|u|絕對(duì)值模塊完成頻譜的絕對(duì)值運(yùn)算。在FPGA中實(shí)現(xiàn)諸如的運(yùn)算需要占用大量的資源,其中開(kāi)根號(hào)運(yùn)算可采用System Generator提供的CORDIC模塊進(jìn)行近似運(yùn)算,降低了資源的消耗。同時(shí)I2+Q2的運(yùn)算可通過(guò)MCode模塊完成,MCode實(shí)現(xiàn)了Matlab函數(shù)的有限子集,用于快速開(kāi)發(fā)DSP算法,同時(shí)可生成HDL代碼,用于FPGA工程應(yīng)用中。
Rife算法中的峰值提取對(duì)時(shí)序要求很?chē)?yán)格,它需要在記錄下頻譜峰值的同時(shí)記錄下峰值對(duì)應(yīng)的系數(shù)。System Generator在進(jìn)行高層設(shè)計(jì)的同時(shí)還保留了底層的基本邏輯單元,可通過(guò)其構(gòu)建對(duì)時(shí)序要求嚴(yán)格的邏輯。峰值提取模塊主要包括移位寄存器、鎖存器和比較器,比較器比較當(dāng)前值和鎖存器中的值,當(dāng)發(fā)現(xiàn)當(dāng)前值大于鎖存器的值時(shí),輸出鎖存使能信號(hào),鎖存當(dāng)前的幅度和系數(shù)值。鎖存的幅度和系數(shù)值必須對(duì)應(yīng),F(xiàn)FT模塊輸出的I、Q數(shù)據(jù)和系數(shù)是準(zhǔn)確對(duì)應(yīng)的,而當(dāng)I、Q信號(hào)經(jīng)過(guò)幅值計(jì)算模塊后會(huì)產(chǎn)生時(shí)延,需要延時(shí)單元補(bǔ)償時(shí)延。本設(shè)計(jì)中通過(guò)Simulink提供的多通道示波器測(cè)量了幅值測(cè)量模塊的時(shí)延值,然后通過(guò)延時(shí)模塊進(jìn)行了補(bǔ)償。具體結(jié)構(gòu)如圖3所示。
圖4中的Rife計(jì)算模塊是本設(shè)計(jì)的核心,用于實(shí)現(xiàn)式(2)中的計(jì)算。圖3中的峰值檢測(cè)與鎖存電路在鎖存峰值的同時(shí)還會(huì)鎖存峰值前后點(diǎn)的值,圖4中的結(jié)構(gòu)與式(2)對(duì)應(yīng),通過(guò)比較器比較峰值前后點(diǎn)的大小來(lái)選擇插值對(duì)象。對(duì)于式中r的正負(fù),本設(shè)計(jì)中通過(guò)可控加減法器進(jìn)行實(shí)現(xiàn)。當(dāng)r=-1時(shí),進(jìn)行減法運(yùn)算;r=1時(shí),進(jìn)行加法運(yùn)算。
4 實(shí)現(xiàn)結(jié)果
本設(shè)計(jì)硬件平臺(tái)選用Xilinx公司Virtex系列中的XC6VLXT550T,系統(tǒng)的采樣點(diǎn)為128點(diǎn)。在System Generator/Simulink環(huán)境中按照?qǐng)D2的框圖進(jìn)行設(shè)計(jì),得到圖5所示的算法實(shí)現(xiàn)圖。圖5中,In與Out邊界內(nèi)部的模塊為由System Generator提供,可用硬件實(shí)現(xiàn),邊界之外的模塊由Simulink提供。利用Simulink中的信號(hào)源產(chǎn)生一個(gè)疊加高斯白噪聲的正弦信號(hào),作為系統(tǒng)的測(cè)試激勵(lì)信號(hào),采用Simulink中的示波器觀察各點(diǎn)信號(hào),用Display模塊顯示頻率值。從圖5中可以看出測(cè)量的頻率值為64.84。
System Generator中設(shè)計(jì)的系統(tǒng)可用于更高層設(shè)計(jì)中,其支持生成HDL網(wǎng)表、NGC網(wǎng)表,甚至直接生成.bit文件用于FPGA的配置。其在生成網(wǎng)表的同時(shí)可以選擇生成testbench,用于第三方的軟件仿真。本設(shè)計(jì)中選擇生成NGC網(wǎng)表。生成結(jié)果資源消耗如表1所示,綜合后系統(tǒng)的最大運(yùn)行頻率為121.087 MHz。
將System Generator中生成的模塊導(dǎo)入到ISE設(shè)計(jì)環(huán)境中。運(yùn)用ISE集成的仿真軟件Isim進(jìn)行仿真分析,仿真結(jié)果如圖6所示,圖中高亮部分為頻率測(cè)量值,可見(jiàn)其值與System Generator環(huán)境中的仿真結(jié)果相同,從而驗(yàn)證了設(shè)計(jì)的正確性。
本文中利用System Generator工具的便利性,在FPGA中實(shí)現(xiàn)了高精度頻率估計(jì)Rife算法。省去了繁瑣的HDL編程,從而可將更多精力集中于算法本身,同時(shí)利用Simulink環(huán)境的資源快速對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證,最后在ISE環(huán)境中完成設(shè)計(jì)并進(jìn)行了驗(yàn)證。
參考文獻(xiàn)
[1] 胡來(lái)招,電信.雷達(dá)偵察接收機(jī)設(shè)計(jì)[M].北京:國(guó)防工業(yè)出版社,2000.
[2] 宋民,張琦,高梅國(guó).一種大帶寬高分辨力數(shù)字信道化接收機(jī)[J].電子信息對(duì)抗技術(shù),2006,21(1):14-17.
[3] 胡來(lái)招.瞬時(shí)測(cè)頻[M].北京:國(guó)防工業(yè)出版社,2002.
[4] RIFE D C,VINCENT G A.Use of the discrete Fourier transform in the measurement of frequencies and levels of tones[J].Bell Syst.Tech.J,1970,49(2):197-228.
[5] 楊小牛,樓才義,徐建良.軟件無(wú)線(xiàn)電原理與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[6] TSUI J.Digital techniques for wideband receivers(Second edition)[M].楊小牛,譯.北京:電子工業(yè)出版社,2002.
[7] 田耘,徐文波.Xilinx FPGA開(kāi)發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[8] Xilinx System Generator for DSP user guider v14.3[Z].USA:Xilinx Inc,2012.
[9] 郝小江,黃昆.FIR數(shù)字濾波器設(shè)計(jì)及其FPGA實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2013,32(19):22-24.