宋定昆,劉桂雄,唐文明
(華南理工大學機械與汽車工程學院,廣東 廣州 510640)
基于CORDIC算法的動態FIR數字濾波器FPGA實現與應用
宋定昆,劉桂雄,唐文明
(華南理工大學機械與汽車工程學院,廣東 廣州 510640)
傳統動態FIR數字濾波需要將大量濾波器系數存入FPGA中,該文提出一種基于CORDIC算法的動態FIR數字濾波器實現方法,通過CORDIC算法對隨信號參數動態變化的濾波器系數進行實時計算,節省大量FPGA內存資源。實驗表明:基于CORDIC算法的動態FIR數字濾波器系數計算絕對誤差小于±4×10-3,動態濾波器阻帶衰減達-50dB以上,具有準確度高、實時性好、占用內存少的特點。將該動態FIR數字濾波器應用于超聲相控陣回波信號動態濾波,取得較好濾波效果。
動態濾波器;坐標旋轉數字計算機算法;有限脈沖響應;分布式算法;現場可編程門陣列
數字濾波作為數字信號處理的關鍵技術,已經得到廣泛應用。有限脈沖響應(FIR)濾波器、無限脈沖響應濾波器(IIR)是2種主要數字濾波器,其中FIR數字濾波器容易實現線性相位濾波,適用于數字通信與信號處理中。但實際場合中有效信號、噪聲信號統計特性通常未知或不斷變化,如超聲相控陣檢測中超聲回波信號頻帶隨掃查深度變化而不斷偏移[1],采用固定數字濾波器難以達到最優濾波效果[2]。通常解決辦法是將大量濾波器系數存入現場可編程門陣列(FPGA)內存中[3],通過建立系數匹配函數實現實時匹配濾波,但占用大量內存資源。為此,本文研究一種濾波系數隨信號和噪聲特性變化而改變的動態FIR數字濾波器,采用窗函數設計法,通過坐標旋轉數字計算機(coordinate rotation digital computer,CORDIC)[4]算法實現濾波器系數動態實時計算,具有準確度高、實時性好、占用內存少的特點,并將其應用于超聲相控陣回波信號濾波中。
基于窗函數的FIR濾波器設計方法即傅里葉級數法[5],用一定寬度窗函數截取無限脈沖響應序列,得到有限長脈沖響應序列。本文采用Hamming窗設計33階FIR低通數字濾波器,并通過CORDIC算法對濾波器系數進行求解。
1.1 Hamming窗設計FIR數字濾波器
設截止頻率為ωc,濾波器階數為N,那么低通濾波器理想頻率響應Hd(ejω)、單位沖擊響應hd(n)為

數字信號處理難以對無限長hd(n)序列進行運算,僅截取其有限長度時間序列進行分析。被截斷后信號會出現頻譜能量泄露現象,采用窗函數對信號進行截斷,可減少頻譜能量泄漏。采用Hamming窗[6]設計低通FIR數字濾波器,其窗函數公式為

由式(2)、式(3),可確定濾波器系數計算公式:

濾波器系數計算公式中含有正余弦函數運算,可以采用CORDIC算法求解濾波器系數h(n)。
1.2 CORDIC算法求正余弦函數原理
CORDIC算法作為一種通用迭代算法,通過控制向量可在線性坐標系、圓坐標系和雙曲坐標系下旋轉和定向操作,實現對三角函數、指數對數函數及開平方等運算求解[7-9],圖1是圓周坐標系下CORDIC算法旋轉模型。圖中,將初始輸入向量V0[1,0]分多次旋轉至與x軸夾角為θ,每次旋轉角度為αi(逆時針為正),則每次旋轉后向量Vi+1[xi+1,yi+1]與旋轉之前向量Vi[xi,yi]有如下關系:

用變量z記錄當前向量與目標向量角度差,zi+1=zi-αi,初始輸入z0=θ。 令每次旋轉的角度αi=tan-1(2-i),則每次迭代公式為

式中σi=±1,用于控制向量旋轉方向。

圖1 圓周坐標系CORDIC旋轉模型
若干次迭代后,zi+1→0時,旋轉向量逼近目標向量,得到θ角度正余弦輸出,最終迭代結果為


CORDIC算法將正余弦運算分解成向量旋轉,每次迭代只需要移位和加減操作,硬件結構簡單,適于動態FIR數字濾波器的FPGA實現。
目前應用于FPGA的FIR數字濾波器結構主要有乘法器、分布式算法(distributed algorithm,DA)2種結構[10-12],并均有串行和并行結構之分。分布式算法利用只讀存儲器將累乘運算轉化成查找表操作和簡單加法運算,可大幅度提高運算速度,降低硬件實現難度。本文采用并行分布式算法結構設計動態FIR數字濾波器,圖2是動態FIR數字濾波器結構圖。

圖2 動態FIR數字濾波器結構圖
2.1 濾波器系數生成模塊
設計一個截止頻率隨參數變化可向下移動的低通FIR數字濾波器,其頻率變化函數為

式中:ωcmax——最大截止頻率;
depth——動態濾波器截止頻率調整參數,取值范圍為0~128,可改變depth的取值以調整濾波器截止頻率;
Kω——頻率變化參數,影響截止頻率下移速度和動態濾波器頻率變化范圍。
為評估基于CORDIC算法濾波器系數計算模塊的輸出誤差,分別用CORDIC算法與Matlab上fir1函數產生一組33階低通FIR濾波器系數,對比圖如圖 3(a)所示,圖 3(b)是 CORDIC 算法輸出濾波器系數誤差圖。可以看出,CORDIC算法用于計算FIR濾波器系數絕對誤差不超過±4×10-3,滿足實際工程中FIR數字濾波誤差要求。

圖3 動態FIR數字濾波器輸出系數誤差分析圖
為衡量基于CORDIC算法的濾波器系數動態計算模塊在FPGA上的輸出誤差,在Modelsim 10.0c軟件上對最大截止頻率為4 MHz的33階FIR低通濾波器系數進行仿真計算。圖4是FIR數字濾波器系數動態計算模塊FPGA仿真圖,圖中depth是動態濾波器截止頻率調整參數,out是濾波器系數計算輸出結果,圖 4(a)、圖 4(b)分別是截止頻率調整參數為1、124(2個極限值)時濾波器系數輸出,濾波器系數隨截止頻率下降而減小。表1列出仿真結果輸出與fir1函數產生的濾波器系數對比,濾波器系數動態計算模塊在FPGA上輸出絕對誤差不超過±3×10-3,滿足實際工程中FIR數字濾波誤差要求。

圖4 FIR數字濾波器系數動態計算模塊FPGA仿真圖

表1 動態FIR濾波器系數FPGA仿真輸出誤差表
2.2 動態FIR濾波模塊

圖5 分布式算法FIR數字濾波器結構圖
基于分布式算法FIR數字濾波器占用ROM大小取決于濾波器階數[13],若設計33階濾波器,需要計算17個14 bit濾波器系數,則ROM大小為14×217bit,且隨濾波器階數提高,分布式算法占用內存資源呈指數上升。為減少ROM資源,可將原本查找表分割成若干個小查找表,將每個查找表輸出結果相加,得到最終濾波輸出。圖5是基于分布式算法FIR數字濾波器結構圖,通過4個子查找表求解17個濾波器系數。
為檢驗分布式算法動態FIR數字濾波器的濾波性能,在Matlab上用基于CORDIC算法的動態濾波器對多路混頻信號進行低通濾波。圖6是采樣頻率為40 MHz,濾波器截止頻率為4 MHz的動態濾波器濾波性能分析圖,其中圖 6(a)、圖 6(b)分別是原始信號為 1,6,8,12,14MHz混頻輸入信號和動態濾波器輸出信號;圖 6(c)、圖 6(d)分別是原始信號頻譜圖和動態濾波器頻譜圖;圖6(e)是動態濾波器頻譜圖。可以看出,基于CORDIC算法的動態FIR低通數字濾波器阻帶衰減可達-50 dB以上,能有效濾除高頻信號,保留低頻信號分量。

圖6 動態濾波器濾波性能分析圖
為驗證分布式FIR數字動態濾波模塊在FPGA上實現效果,用Matlab軟件產生1MHz、6MHz混頻信號,采樣頻率為40 MHz,采樣后數字信號以16進制導入Modelsim作為輸入測試信號,經最大截止頻率為4MHz的分布式FIR數字動態濾波模塊濾波后輸出。圖7是動態濾波模塊FPGA仿真圖,圖中xin是1 MHz、6 MHz混頻輸入測試信號,yout為定點化處理后的濾波輸出。結果表明,分布式FIR數字動態濾波模塊在FPGA上能取得較好濾波效果。

圖7 動態濾波模塊FPGA仿真圖
超聲相控陣檢測中,超聲回波信號濾波處理是影響最終成像效果的重要步驟。超聲波在物體中傳播時,波束能量會隨傳播距離增加而衰減,聲束頻帶各部分衰減程度不同,使超聲回波信號頻譜中心頻率成分隨掃查深度增加而降低,故需要用不同截止頻率濾波器對不同掃查深度的超聲回波進行濾波才能達到最好濾波效果。傳統方法將大量濾波器系數組存入FPGA內存,再根據掃查深度調用適合濾波器[14]。為降低對FPGA內存資源消耗,可采用基于CORDIC算法的濾波器系數動態計算模塊代替查找表,根據當前掃查深度,對式(9)中depth參數取不同值,實時計算匹配當前掃查深度的濾波器系數,實現動態FIR濾波。
根據超聲回波物理特性,超聲換能器脈沖響應可模擬成高斯信號[15]。圖8為超聲回波信號濾波模擬圖。圖8(a)是中心頻率為5MHz、幅值系數為0.8、初相位1.8 rad的超聲回波信號,并摻入40 dB高斯噪聲信號;圖8(b)是原始超聲回波信號頻譜圖。將原始超聲回波信號經基于CORDIC算法的動態FIR濾波器濾波后,得到濾波后信號和其頻譜圖,如圖8(c)、圖8(d)所示。可以看出,原始模擬超聲回波信號中噪聲信號基本被濾除。
為驗證此33階動態FIR數字濾波器實用性能,將其下載至超聲相控陣檢測系統,對無縫鋼管進行回波信號采集。圖9是相同增益下的超聲相控陣動態FIR濾波實驗結果,其中圖9(a)是未經過動態濾波的原始超聲回波信號,存在較多噪聲,經動態濾波后得到圖9(b),噪聲信號基本濾除。結果表明,基于CORDIC算法的動態FIR數字濾波器可以取得較好實際濾波效果。

圖8 超聲回波信號濾波模擬圖

圖9 超聲相控陣動態FIR濾波實驗結果圖
1)本文采用Hamming窗設計動態FIR數字濾波器,提出一種基于CORDIC算法的濾波器系數計算方法,利用CORDIC算法高速、高準確度、低復雜度特點,實現FIR數字濾波器系數動態實時計算。
2)基于CORDIC算法的濾波器系數計算模塊FPGA仿真結果表明濾波器系數計算輸出絕對誤差小于±4×10-3;通過并行分布式算法設計FIR數字濾波模塊,仿真結果表明基于CORDIC算法的動態濾波器阻帶衰減可達到-50 dB以上,滿足實際工程要求。
3)通過FPGA實現基于CORDIC算法的動態FIR數字濾波器并將其應用于超聲相控陣檢測儀回波信號濾波實驗,對不同掃查深度超聲回波信號的最佳匹配濾波器系數進行動態實時計算,將濾波器系數輸入分布式FIR濾波模塊對超聲回波信號進行濾波,可取得較好濾波效果。
[1]BENAMMAR A,DRAI R, GUESSOUM A.Detection of delamination defects in CFRP materials using ultrasonic signal processing[J].Ultrasonics,2008,48(8):731-738.
[2]崔園園,王伯雄,柳建楠,等.數字超聲波信號中有色噪聲的自適應濾波[J].光學精密工程,2014,22(12):3377-3383.
[3]周盛,李仙琴,王曉春,等.全數字B超動態濾波器的設計與實現[J].中國生物醫學工程學報,2010,29(3):418-421.
[4]SHIRAISHI S, HASEYAMA M, KITAJIMA H.Steadystate properties of a CORDIC-based adaptive ARMA lattice filter[J].IEICE Transactions on Fundamentals of Electronics Communications&Computer Sciences,2005,89(12):3724-3729.
[5]李興龍,李峰,趙冉,等.無閾值窗口傅里葉變換濾波法[J].光子學報,2014,43(9):166-169.
[6]李春蕾,張曉光,席麗霞,等.偏振復用系統中FIR-BP算法有效補償非線性損傷的實驗研究[J].中國激光,2013,40(12):123-129.
[7]唐文明,劉桂雄.指數函數CORDIC算法的FPGA定點化技術[J].華南理工大學學報(自然科學版),2016,44(7):9-14.
[8]MEHER P K, VALLS J, JUANG T B, et al.50 Years of CORDIC: algorithms, architectures and applications[J].IEEE Transactionson Circuitsand SystemsPartI Regular Papers,2009,56(9):1893-1907.
[9]林若波,劉桂雄,唐文明.應用補碼的通項式正余弦CORDIC 算法 FPGA 實現[J].中國測試,2014,40(4):102-106.
[10]SANG Y P,MEHER P K.Efficient FPGA and ASIC realizations of a DA-based reconfigurable FIR digital filter[J].IEEE Transactions on Circuits and Systems II Express Briefs,2014,61(7):511-515.
[11]陳旭東,陳章進,李翰超,等.基于FPGA的頻譜分析系統研究與實現[J]. 電子測量技術,2016,39(11):113-117.
[12]洪奕光,張艷瓊.分布式優化:算法設計和收斂性分析[J].控制理論與應用,2014,31(7):850-857.
[13]魏靈,楊日杰,崔旭濤.基于分布式算法的數字濾波器設計[J].儀器儀表學報,2008,29(10):2100-2104.
[14]王文芳.高頻超聲診斷儀中自適應動態濾波器的研究[D].北京:北京協和醫學院,2012.
[15]LU Z, YANG C, QIN D, et al.Estimating ultrasonic time-of-flight through echo signal envelope and modified Gauss Newton method[J].Measurement,2016,94:355-363.
(編輯:商丹丹)
FPGA implementation and application of dynamic FIR digital filter based on CORDIC algorithm
SONG Dingkun, LIU Guixiong, TANG Wenming
(School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510640,China)
Mass filter coefficients were required to be deposited into FPGA memory to realize traditional dynamic FIR digital filtering.A method of dynamic FIR digital filter based on CORDIC algorithm was proposed in this paper,which could adopt CORDIC algorithm to calculate the filter coefficients with the change of signal parameters at real time,and save a lot of FPGA memory resources.Test results show that the coefficient calculation error of FIR digital filter based on CORDIC algorithm is less than ±4×10-3, and the stop-band attenuation of dynamic filter is more than-50 dB, which is featured by high accuracy, excellent real-time performance and less required memory.Excellent filtering effect can be obtained by applying FIR digital filter to ultrasonic phased array echo signal dynamic filtering.
dynamic filter; CORDIC algorithm; finite impulse response; distributed algorithm; FPGA
A
:1674-5124(2017)07-0097-06
10.11857/j.issn.1674-5124.2017.07.019
2017-04-27;
:2017-05-18
國家重大科學儀器設備開發專項(2013YQ230575);廣州市科技計劃項目(201509010008)
宋定昆(1994-),男,江西吉安市人,碩士研究生,專業方向為無損檢測、信號處理。