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