《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于System Generator的Rife算法的FPGA實(shí)現(xiàn)
基于System Generator的Rife算法的FPGA實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2014年第4期
呂晨陽,,王 建
(南京船舶雷達(dá)研究所,,江蘇 南京210003)
摘要: 在FPGA平臺(tái)上應(yīng)用System Generator工具實(shí)現(xiàn)了高精度頻率估計(jì)Rife算法,。不同于傳統(tǒng)的基于HDL代碼和IP核的設(shè)計(jì)方法,,采用System Generator工具可以使復(fù)雜算法在FPGA中更快,、更準(zhǔn)確地實(shí)現(xiàn),。給出了Rife算法的描述和實(shí)現(xiàn)結(jié)構(gòu)框圖,,并在System Generator和ISE環(huán)境中進(jìn)行了仿真,驗(yàn)證了設(shè)計(jì)的正確性,。
中圖分類號(hào): TN47
文獻(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.
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)的偵察接收機(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.

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