基于System Generator的Rife算法設(shè)計實現(xiàn)與仿真分析
摘 要: 在FPGA平臺上應(yīng)用System Generator工具實現(xiàn)了高精度頻率估計Rife算法。不同于傳統(tǒng)的基于HDL代碼和IP核的設(shè)計方法,采用System Generator工具可以使復(fù)雜算法在FPGA中更快、更準(zhǔn)確地實現(xiàn)。給出了Rife算法的描述和實現(xiàn)結(jié)構(gòu)框圖,并在System Generator和ISE環(huán)境中進行了仿真,驗證了設(shè)計的正確性。
頻率測量在電子偵察中扮演了重要的角色[1]。隨著電子技術(shù)的發(fā)展,傳統(tǒng)的偵察接收機向著數(shù)字化、軟件化方向發(fā)展[2]。傳統(tǒng)的基于模擬電路的測頻方法需要轉(zhuǎn)換為數(shù)字方法實現(xiàn)。模擬偵察接收機中通常采用基于相位差的頻率測量方法[3]。該方法在數(shù)字電路中同樣可以方便地實現(xiàn),但該方法對信噪比要求比較高[3]。基于數(shù)字電路的優(yōu)點,可采用先進的算法實現(xiàn)更高的性能。Rife算法[4]是一種常用的基于DFT頻譜的頻率測量算法,具有算法實現(xiàn)容易、精度高等優(yōu)點。而DFT運算可以通過FFT進行快速運算。
為保證截獲概率,偵察接收機帶寬不斷增大,現(xiàn)瞬時帶寬已達500 MHz[2]。傳統(tǒng)的基于DSP和GPP的系統(tǒng)已難以滿足實時處理的需求,采用基于FPGA的信號處理機已成為普遍的解決方法[5-7]。
FPGA設(shè)計中基于HDL和定點的設(shè)計方法不同于傳統(tǒng)的DSP和GPP平臺中基于C語言和浮點的設(shè)計方法。HDL語言語法和語言的可綜合性限制了算法的實現(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è)計者掃清了編程的障礙[8-9]。
2 System Generator
System Generator 是高性能、高效的DSP算法建模工具,是DSP算法與FPGA的橋梁[7-8]。其作用如圖1所示,可在Matlab/Simulink環(huán)境下對算法以及系統(tǒng)進行建模,并生成相應(yīng)的工程,再調(diào)用ISE進行仿真、綜合、實現(xiàn)。
Xilinx為System Generator提供了大量的信號處理模塊(如FIR濾波器、FFT)、糾錯算法、存儲器以及數(shù)字邏輯功能,可以在設(shè)計環(huán)境下直接調(diào)用,快速構(gòu)建DSP系統(tǒng)。同時還支持.m文件和HDL導(dǎo)入[7-8]。
雖然System Generator中只有Xilinx提供的模塊可以在FPGA中實現(xiàn),但利用Simulink中豐富的資源可方便地生成測試向量,同時快速對結(jié)果進行準(zhǔn)確直觀的分析??紤]到資源消耗,F(xiàn)PGA中實現(xiàn)的算法以定點算法為主,定點算法的精度和范圍很有限,容易發(fā)生溢出或者計算誤差過大,導(dǎo)致算法失敗[5-6]。采用傳統(tǒng)的基于HDL和IP核的設(shè)計方法,如果早期分析得不完全,在設(shè)計后期進行修改是一件費時費力的事情,而且極易發(fā)生錯誤。而在System Generator環(huán)境下,采用基于模型的設(shè)計方法可以方便地實現(xiàn)和驗證定點算法,發(fā)現(xiàn)問題后也容易進行修改。
3 Rife算法的FPGA設(shè)計從第1節(jié)的Rife算法介紹可知,Rife算法以FFT運算為核心,通過頻譜峰值與次峰值的插值運算計算頻率值。FFT算法是一種塊運算,逐幀進行,需要提供幀的起止邊界。本設(shè)計中采用恒虛警模塊提供幀的起止信號。FPGA中實現(xiàn)的Rife頻率測量算法主要包含如下功能模塊:快速傅里葉變換模塊(FFT)、取模模塊、峰值檢測與鎖存模塊、Rife計算模塊和控制模塊。系統(tǒng)整體框圖如圖2所示。
System Generator工具中提供了FFT模塊,其通過參數(shù)化配置,支持從8點到65 536點的基2、基4 FFT運算,其在FPGA中的實現(xiàn)對應(yīng)著LogicCORE中的FFT核。使用該模塊主要需要關(guān)心start信號、dv信號和輸入輸出信號。從恒虛警模塊來的start信號通過一個上升沿指示轉(zhuǎn)換開始,此時在時鐘的同步下逐點將待轉(zhuǎn)換數(shù)據(jù)輸入,當(dāng)輸入的信號點數(shù)達到設(shè)定的采樣點時開始FFT計算。恒虛警模塊在沒有檢測到信號的情況下會輸出0,故當(dāng)信號點數(shù)小于FFT所需的點數(shù)時會自動插0。
經(jīng)過一段時間的延時,dv輸出高電平,指示轉(zhuǎn)換完成。此時會逐點輸出轉(zhuǎn)換完成的頻譜信號,同時xk_index輸出頻譜點對應(yīng)的索引值。
Rife算法需要DFT頻譜的幅度信息,而FFT模塊輸出的為I、Q兩路復(fù)信號。|u|絕對值模塊完成頻譜的絕對值運算。在FPGA中實現(xiàn)諸如 的運算需要占用大量的資源,其中開根號運算可采用System Generator提供的CORDIC模塊進行近似運算,降低了資源的消耗。同時I2+Q2的運算可通過MCode模塊完成,MCode實現(xiàn)了Matlab函數(shù)的有限子集,用于快速開發(fā)DSP算法,同時可生成HDL代碼,用于FPGA工程應(yīng)用中。