《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應用 > 基于System Generator的Rife算法的FPGA實現(xiàn)
基于System Generator的Rife算法的FPGA實現(xiàn)
來源:電子技術(shù)應用2014年第4期
呂晨陽,王 建
(南京船舶雷達研究所,江蘇 南京210003)
摘要: 在FPGA平臺上應用System Generator工具實現(xiàn)了高精度頻率估計Rife算法。不同于傳統(tǒng)的基于HDL代碼和IP核的設(shè)計方法,采用System Generator工具可以使復雜算法在FPGA中更快、更準確地實現(xiàn)。給出了Rife算法的描述和實現(xiàn)結(jié)構(gòu)框圖,并在System Generator和ISE環(huán)境中進行了仿真,驗證了設(shè)計的正確性。
中圖分類號: TN47
文獻標識碼: B
文章編號: 0258-7998(2014)04-0042-03
中文引用格式:呂晨陽,王建.基于System Generator的Rife算法的FPGA實現(xiàn)[J].電子技術(shù)應用,2014,40(04):42-44.
Realization of Rife method in FPGA based on system generator
Lv Chenyang,Wang Jian
Nanjing Marine Radar Institute,Nanjing 210003,China
Abstract: The high performance frequency estimation algorithm(Rife method) is established in FPGA by using System Generator. Unlike traditional design method based on HDL code and IP core, using System Generator tool,the complex algorithms can be faster and more accurately implemented in the FPGA. The design methods of every main function module in the system are described. The simulation was both done in System Generator and ISE. Finally, the correctness of the design is verified.
Key words : System Generator;frequency estimation;Rife method;FPGA

    頻率測量在電子偵察中扮演了重要的角色[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)進行建模,并生成相應的工程,再調(diào)用ISE進行仿真、綜合、實現(xiàn)。

    Xilinx為System Generator提供了大量的信號處理模塊(如FIR濾波器、FFT)、糾錯算法、存儲器以及數(shù)字邏輯功能,可以在設(shè)計環(huán)境下直接調(diào)用,快速構(gòu)建DSP系統(tǒng)。同時還支持.m文件和HDL導入[7-8]。
    雖然System Generator中只有Xilinx提供的模塊可以在FPGA中實現(xiàn),但利用Simulink中豐富的資源可方便地生成測試向量,同時快速對結(jié)果進行準確直觀的分析??紤]到資源消耗,F(xiàn)PGA中實現(xiàn)的算法以定點算法為主,定點算法的精度和范圍很有限,容易發(fā)生溢出或者計算誤差過大,導致算法失敗[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)對應著LogicCORE中的FFT核。使用該模塊主要需要關(guān)心start信號、dv信號和輸入輸出信號。從恒虛警模塊來的start信號通過一個上升沿指示轉(zhuǎn)換開始,此時在時鐘的同步下逐點將待轉(zhuǎn)換數(shù)據(jù)輸入,當輸入的信號點數(shù)達到設(shè)定的采樣點時開始FFT計算。恒虛警模塊在沒有檢測到信號的情況下會輸出0,故當信號點數(shù)小于FFT所需的點數(shù)時會自動插0。
    經(jīng)過一段時間的延時,dv輸出高電平,指示轉(zhuǎn)換完成。此時會逐點輸出轉(zhuǎn)換完成的頻譜信號,同時xk_index輸出頻譜點對應的索引值。
    Rife算法需要DFT頻譜的幅度信息,而FFT模塊輸出的為I、Q兩路復信號。|u|絕對值模塊完成頻譜的絕對值運算。在FPGA中實現(xiàn)諸如的運算需要占用大量的資源,其中開根號運算可采用System Generator提供的CORDIC模塊進行近似運算,降低了資源的消耗。同時I2+Q2的運算可通過MCode模塊完成,MCode實現(xiàn)了Matlab函數(shù)的有限子集,用于快速開發(fā)DSP算法,同時可生成HDL代碼,用于FPGA工程應用中。
    Rife算法中的峰值提取對時序要求很嚴格,它需要在記錄下頻譜峰值的同時記錄下峰值對應的系數(shù)。System Generator在進行高層設(shè)計的同時還保留了底層的基本邏輯單元,可通過其構(gòu)建對時序要求嚴格的邏輯。峰值提取模塊主要包括移位寄存器、鎖存器和比較器,比較器比較當前值和鎖存器中的值,當發(fā)現(xiàn)當前值大于鎖存器的值時,輸出鎖存使能信號,鎖存當前的幅度和系數(shù)值。鎖存的幅度和系數(shù)值必須對應,F(xiàn)FT模塊輸出的I、Q數(shù)據(jù)和系數(shù)是準確對應的,而當I、Q信號經(jīng)過幅值計算模塊后會產(chǎn)生時延,需要延時單元補償時延。本設(shè)計中通過Simulink提供的多通道示波器測量了幅值測量模塊的時延值,然后通過延時模塊進行了補償。具體結(jié)構(gòu)如圖3所示。
      圖4中的Rife計算模塊是本設(shè)計的核心,用于實現(xiàn)式(2)中的計算。圖3中的峰值檢測與鎖存電路在鎖存峰值的同時還會鎖存峰值前后點的值,圖4中的結(jié)構(gòu)與式(2)對應,通過比較器比較峰值前后點的大小來選擇插值對象。對于式中r的正負,本設(shè)計中通過可控加減法器進行實現(xiàn)。當r=-1時,進行減法運算;r=1時,進行加法運算。

4 實現(xiàn)結(jié)果
    本設(shè)計硬件平臺選用Xilinx公司Virtex系列中的XC6VLXT550T,系統(tǒng)的采樣點為128點。在System Generator/Simulink環(huán)境中按照圖2的框圖進行設(shè)計,得到圖5所示的算法實現(xiàn)圖。圖5中,In與Out邊界內(nèi)部的模塊為由System Generator提供,可用硬件實現(xiàn),邊界之外的模塊由Simulink提供。利用Simulink中的信號源產(chǎn)生一個疊加高斯白噪聲的正弦信號,作為系統(tǒng)的測試激勵信號,采用Simulink中的示波器觀察各點信號,用Display模塊顯示頻率值。從圖5中可以看出測量的頻率值為64.84。

    System Generator中設(shè)計的系統(tǒng)可用于更高層設(shè)計中,其支持生成HDL網(wǎng)表、NGC網(wǎng)表,甚至直接生成.bit文件用于FPGA的配置。其在生成網(wǎng)表的同時可以選擇生成testbench,用于第三方的軟件仿真。本設(shè)計中選擇生成NGC網(wǎng)表。生成結(jié)果資源消耗如表1所示,綜合后系統(tǒng)的最大運行頻率為121.087 MHz。
    將System Generator中生成的模塊導入到ISE設(shè)計環(huán)境中。運用ISE集成的仿真軟件Isim進行仿真分析,仿真結(jié)果如圖6所示,圖中高亮部分為頻率測量值,可見其值與System Generator環(huán)境中的仿真結(jié)果相同,從而驗證了設(shè)計的正確性。

 

 

    本文中利用System Generator工具的便利性,在FPGA中實現(xiàn)了高精度頻率估計Rife算法。省去了繁瑣的HDL編程,從而可將更多精力集中于算法本身,同時利用Simulink環(huán)境的資源快速對設(shè)計進行驗證,最后在ISE環(huán)境中完成設(shè)計并進行了驗證。
參考文獻
[1] 胡來招,電信.雷達偵察接收機設(shè)計[M].北京:國防工業(yè)出版社,2000.
[2] 宋民,張琦,高梅國.一種大帶寬高分辨力數(shù)字信道化接收機[J].電子信息對抗技術(shù),2006,21(1):14-17.
[3] 胡來招.瞬時測頻[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] 楊小牛,樓才義,徐建良.軟件無線電原理與應用[M].北京:電子工業(yè)出版社,2001.
[6] TSUI J.Digital techniques for wideband receivers(Second edition)[M].楊小牛,譯.北京:電子工業(yè)出版社,2002.
[7] 田耘,徐文波.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學出版社,2008.
[8] Xilinx System Generator for DSP user guider v14.3[Z].USA:Xilinx Inc,2012.
[9] 郝小江,黃昆.FIR數(shù)字濾波器設(shè)計及其FPGA實現(xiàn)[J].微型機與應用,2013,32(19):22-24.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。