宋炳勇,宋茂忠,屈豫威
(南京航空航天大學,江蘇 南京 210016)
摘要:在通信系統中,希爾伯特變換是被廣泛應用的重要的變換。為了節約頻譜資源,實現射頻單邊譜,通常需要借助希爾伯特變換器對信號進行分解。利用MATLAB設計希爾伯特變換濾波器的系數參數,將計算好的系數導入FPGA中,由FPGA調用IP Core實現。通過Modelsim對程序進行仿真,得到了理想的90°移相波形。仿真結果表明,100階的FIR濾波器可以理想地逼近希爾伯特變換。
關鍵詞:FPGA;FIR濾波器;希爾伯特變換器
中圖分類號:TN713文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.008
引用格式:宋炳勇,宋茂忠,屈豫威.希爾伯特變換濾波器的FPGA設計[J].微型機與應用,2017,36(2):22-24,27.
0引言
隨著通信系統的發展,有限的頻譜資源日益緊張,為此大多數通信系統采用單邊帶信號,同時還可以降低發射功率和占用帶寬。在單邊帶調制系統中需要對信號進行正交分解,在信號解析中通常采用希爾伯特變換法,因此希爾伯特變換得到了廣泛的應用。
在傳統的設計中,希爾伯特變換濾波器采用一個全通型的FIR濾波器來逼近,FIR濾波器具有嚴格的線性相位和穩定性等優點,可以使信號實現90°相移。文獻[1]中對希爾伯特變換算法在信號處理中做了分析,文獻[2]中對希爾伯特變換做了詳盡的理論分析,文獻[3]中采用加法器實現乘法器的功能,設計了希爾伯特變換器。文獻[3]中的方案實現起來較為復雜且耗用資源較多。本文通過FPGA中的IP Core設計實現希爾伯特變換濾波器,可以節省寶貴資源。FPGA調用MATLAB計算出的希爾伯特變換濾波器系數參數,進而調用IP核設計出希爾伯特變換濾波器。而且FPGA采用并行處理技術,這樣就大大提高了系統的運行速度和處理速度,FPGA芯片內部的邏輯模塊和I/O端口可以自主配置,設計更加靈活,因此,FPGA在高速的實時信號處理中得到了廣泛的應用[1]。
1希爾伯特變換濾波器原理
希爾伯特變換器是基于FIR型濾波器設計實現希爾伯特變換算法,希爾伯波特變換是分析和處理信號的一個重要的理論工具,在通信系統中希爾伯特變換通常用來構造解析信號[2]。希爾伯特變換器可以提供90°的相位變換而不影響頻譜分量的幅度,即對信號進行希爾伯特變換就相當于對信號進行正交移相,使之成為自身的正交對[3]。設連續時間信號f(t)的希爾伯特變換為f︿(t)[4]
式(1)稱為希爾伯特變換式,式中,*為卷積。f︿(t)可以看成是f(t)通過一濾波器的輸出,濾波器的沖擊響應為h(t)=1πt。由j1πt的傅里葉變換為符號函數sgn(ω),所以,希爾伯特變換濾波器的頻率響應為
式(1)的頻譜密度函數為:
式中F(jω)為原信號f(t)的頻譜密度函數。式(4)說明一個信號的希爾伯特變換可以讓該信號通過一個全通相移濾波器來實現,該濾波器對信號的所有正頻率分量產生90°的滯后相移,而對所有的負頻率分量產生超前90°的相移。
2希爾伯特變換濾波器的設計
2.1MATLAB設計濾波器系數
MATLAB是信號處理與分析的重要工具,其中,FDATool是濾波器設計與分析的專用工具箱。FDATool工具箱具有操作簡單、靈活等優點,可以采用多種不同的算法設計實現不同的濾波器,只需要輸入設計濾波器的各項參數即可[5]。在MATLAB開始菜單中找到Filter Design打開即可彈出FDATool界面。
根據工程要求,本文設計的濾波器階數為100階,通頻帶是0.5 MHz~9.5 MHz,采樣頻率選取20 MHz,設計方法采用Equiripple FIR。濾波器的各種特性如圖1、圖2所示。
由圖1可看出,在幅頻響應和相頻響應滿足要求的同時,濾波器的單位脈沖響應為極對稱,即h(n)=-h(N-n-1),各項特性均滿足希爾伯特變換濾波器的要求。濾波器設計完成并滿足技術要求后可以保存,還可以導出濾波器的系數并存為文本文件或MATLAB變量[6],為后續的FPGA設計提供方便。
2.2希爾伯特變換濾波器的FPGA實現
傳統的硬件描述語言(VHDL)對于很多算法(如DSP模塊)很難設計,甚至是無法實現。為解決此問題,ALTERA公司在2002年推出了MATLAB和Quartus聯合設計的DSP Builder數字信號處理工具,該工具很好地解決了算法問題[7]。本文的設計便是在ALTERA公司的Stratix III平臺上完成的,使用的FPGA芯片為EP3SE260F1152I4。
DSP Builder中集成了許多函數(Megacore Function)文件,包括IIR、FIR濾波器,NCO函數,FFT函數等,這些函數可以快速、便捷、靈活地設計系統所需模塊功能[8]。
本文的希爾伯特變換濾波器設計是采用Megacore中的FIR Compiler v11.1模塊實現的[9]。將MATLAB設計的100階希爾伯特變換濾波器系數導出并保存為.fcf文件,MATLAB計算出的系數為double型,且有空格,把所有空格刪除掉后保存為.fcf文件。把編輯好的文件導入到FIR Compiler模塊的參數設計中,FIR Compiler模塊自動將MATLAB的double型系數量化成FPGA中對應的Fix Point型參數[10],系數位寬選擇16 bit,同時設置輸入通道數為1,輸入端口位寬為16 bit,參數設置如圖3所示。參數設置完成后DSP builder模塊根據參數生成可編譯的希爾伯特變換濾波器。3希爾伯特變換濾波器仿真結果
3.1測試信號的產生
本文的輸入正弦波信號是調用Altera公司的IP,利用Megacore中Signal Generation模塊的Cordic算法產生的正弦波信號,在Cordic算法函數中設置各種參數,如圖4所示,其中在精度設置中Phase Accumulator Precision、Angular Resolution、Magnitude Precision分別設置為32、16、16,時鐘速率采用100 MHz,輸出數據速率為1 MHz,頻率控制字為42 949 673,設置完成后可自動生成可編譯的Verilog程序。
3.2仿真與驗證結果
希爾伯特變換濾波器的MATLAB仿真結果如圖5所示,輸入信號頻率為1 MHz。圖6為Modelsim仿真結果,圖6中由上到下分別為時鐘信號、兩個時鐘使能信號、復位信號、輸入信號和輸出信號,圖中時鐘信號為100 MHz,輸入信號為1 MHz,由圖可看到,輸出信號比輸入信號滯后90°。圖5和圖6中輸出信號和輸入信號相比較均可看出輸出信號有一個90°的相位移動,硬件仿真結果與軟件仿真相比較表明仿真結果與理論結果基本一致?!?/p>
4結語
本文對希爾伯特變換濾波器的設計進行了研究,通過MATLAB軟件進行了濾波器的設計并仿真驗證,得到100階的FIR濾波器可以無限地逼近希爾伯特變換濾波器的結論。利用MATLAB設計的濾波器相關參數,通過DSP Builder模塊導入系數文件,在FPGA中設計出了希爾伯特變換濾波器,并且通過Modelsim仿真得到了正確的移相90°的輸出信號。該設計已經在衛星導航信號模擬源項目中得到了實際應用。
參考文獻
?。?] SARKAR S, MUKHERJEE K, RAY A. Generalization of Hilbertt tansform for symbolic analysis of noisy signals[J]. Signal Processing, 2009, 89(12):12451251.
[2] 王薇,王曉茹,黃曉青,等. 無功功率測量的Hilbert數字濾波器研究[J]. 電測與儀表,2007,44(3):912.
?。?] 姚琮,張興敢,肖文書.中頻采樣中希爾伯特變換器的FPGA實現[J]. 集成技術應用, 2004(9):7477.
?。?] UWE M B. Digital signal processing with field programmable gate arrays[M]. Heidelberg: Springer,2003.
?。?] 劉波,文忠,曾涯.Matlab信號處理[M]. 北京:電子工業出版社,2006.