宋定昆,劉桂雄,唐文明
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東 廣州 510640)
基于CORDIC算法的動態(tài)FIR數(shù)字濾波器FPGA實(shí)現(xiàn)與應(yīng)用
宋定昆,劉桂雄,唐文明
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東 廣州 510640)
傳統(tǒng)動態(tài)FIR數(shù)字濾波需要將大量濾波器系數(shù)存入FPGA中,該文提出一種基于CORDIC算法的動態(tài)FIR數(shù)字濾波器實(shí)現(xiàn)方法,通過CORDIC算法對隨信號參數(shù)動態(tài)變化的濾波器系數(shù)進(jìn)行實(shí)時計算,節(jié)省大量FPGA內(nèi)存資源。實(shí)驗(yàn)表明:基于CORDIC算法的動態(tài)FIR數(shù)字濾波器系數(shù)計算絕對誤差小于±4×10-3,動態(tài)濾波器阻帶衰減達(dá)-50dB以上,具有準(zhǔn)確度高、實(shí)時性好、占用內(nèi)存少的特點(diǎn)。將該動態(tài)FIR數(shù)字濾波器應(yīng)用于超聲相控陣回波信號動態(tài)濾波,取得較好濾波效果。
動態(tài)濾波器;坐標(biāo)旋轉(zhuǎn)數(shù)字計算機(jī)算法;有限脈沖響應(yīng);分布式算法;現(xiàn)場可編程門陣列
數(shù)字濾波作為數(shù)字信號處理的關(guān)鍵技術(shù),已經(jīng)得到廣泛應(yīng)用。有限脈沖響應(yīng)(FIR)濾波器、無限脈沖響應(yīng)濾波器(IIR)是2種主要數(shù)字濾波器,其中FIR數(shù)字濾波器容易實(shí)現(xiàn)線性相位濾波,適用于數(shù)字通信與信號處理中。但實(shí)際場合中有效信號、噪聲信號統(tǒng)計特性通常未知或不斷變化,如超聲相控陣檢測中超聲回波信號頻帶隨掃查深度變化而不斷偏移[1],采用固定數(shù)字濾波器難以達(dá)到最優(yōu)濾波效果[2]。通常解決辦法是將大量濾波器系數(shù)存入現(xiàn)場可編程門陣列(FPGA)內(nèi)存中[3],通過建立系數(shù)匹配函數(shù)實(shí)現(xiàn)實(shí)時匹配濾波,但占用大量內(nèi)存資源。為此,本文研究一種濾波系數(shù)隨信號和噪聲特性變化而改變的動態(tài)FIR數(shù)字濾波器,采用窗函數(shù)設(shè)計法,通過坐標(biāo)旋轉(zhuǎn)數(shù)字計算機(jī)(coordinate rotation digital computer,CORDIC)[4]算法實(shí)現(xiàn)濾波器系數(shù)動態(tài)實(shí)時計算,具有準(zhǔn)確度高、實(shí)時性好、占用內(nèi)存少的特點(diǎn),并將其應(yīng)用于超聲相控陣回波信號濾波中。
基于窗函數(shù)的FIR濾波器設(shè)計方法即傅里葉級數(shù)法[5],用一定寬度窗函數(shù)截取無限脈沖響應(yīng)序列,得到有限長脈沖響應(yīng)序列。本文采用Hamming窗設(shè)計33階FIR低通數(shù)字濾波器,并通過CORDIC算法對濾波器系數(shù)進(jìn)行求解。
1.1 Hamming窗設(shè)計FIR數(shù)字濾波器
設(shè)截止頻率為ωc,濾波器階數(shù)為N,那么低通濾波器理想頻率響應(yīng)Hd(ejω)、單位沖擊響應(yīng)hd(n)為
數(shù)字信號處理難以對無限長hd(n)序列進(jìn)行運(yùn)算,僅截取其有限長度時間序列進(jìn)行分析。被截斷后信號會出現(xiàn)頻譜能量泄露現(xiàn)象,采用窗函數(shù)對信號進(jìn)行截斷,可減少頻譜能量泄漏。采用Hamming窗[6]設(shè)計低通FIR數(shù)字濾波器,其窗函數(shù)公式為
由式(2)、式(3),可確定濾波器系數(shù)計算公式:
濾波器系數(shù)計算公式中含有正余弦函數(shù)運(yùn)算,可以采用CORDIC算法求解濾波器系數(shù)h(n)。
1.2 CORDIC算法求正余弦函數(shù)原理
CORDIC算法作為一種通用迭代算法,通過控制向量可在線性坐標(biāo)系、圓坐標(biāo)系和雙曲坐標(biāo)系下旋轉(zhuǎn)和定向操作,實(shí)現(xiàn)對三角函數(shù)、指數(shù)對數(shù)函數(shù)及開平方等運(yùn)算求解[7-9],圖1是圓周坐標(biāo)系下CORDIC算法旋轉(zhuǎn)模型。圖中,將初始輸入向量V0[1,0]分多次旋轉(zhuǎn)至與x軸夾角為θ,每次旋轉(zhuǎn)角度為αi(逆時針為正),則每次旋轉(zhuǎn)后向量Vi+1[xi+1,yi+1]與旋轉(zhuǎn)之前向量Vi[xi,yi]有如下關(guān)系:
用變量z記錄當(dāng)前向量與目標(biāo)向量角度差,zi+1=zi-αi,初始輸入z0=θ。 令每次旋轉(zhuǎn)的角度αi=tan-1(2-i),則每次迭代公式為
式中σi=±1,用于控制向量旋轉(zhuǎn)方向。
圖1 圓周坐標(biāo)系CORDIC旋轉(zhuǎn)模型
若干次迭代后,zi+1→0時,旋轉(zhuǎn)向量逼近目標(biāo)向量,得到θ角度正余弦輸出,最終迭代結(jié)果為
CORDIC算法將正余弦運(yùn)算分解成向量旋轉(zhuǎn),每次迭代只需要移位和加減操作,硬件結(jié)構(gòu)簡單,適于動態(tài)FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)。
目前應(yīng)用于FPGA的FIR數(shù)字濾波器結(jié)構(gòu)主要有乘法器、分布式算法(distributed algorithm,DA)2種結(jié)構(gòu)[10-12],并均有串行和并行結(jié)構(gòu)之分。分布式算法利用只讀存儲器將累乘運(yùn)算轉(zhuǎn)化成查找表操作和簡單加法運(yùn)算,可大幅度提高運(yùn)算速度,降低硬件實(shí)現(xiàn)難度。本文采用并行分布式算法結(jié)構(gòu)設(shè)計動態(tài)FIR數(shù)字濾波器,圖2是動態(tài)FIR數(shù)字濾波器結(jié)構(gòu)圖。
圖2 動態(tài)FIR數(shù)字濾波器結(jié)構(gòu)圖
2.1 濾波器系數(shù)生成模塊
設(shè)計一個截止頻率隨參數(shù)變化可向下移動的低通FIR數(shù)字濾波器,其頻率變化函數(shù)為
式中:ωcmax——最大截止頻率;
depth——動態(tài)濾波器截止頻率調(diào)整參數(shù),取值范圍為0~128,可改變depth的取值以調(diào)整濾波器截止頻率;
Kω——頻率變化參數(shù),影響截止頻率下移速度和動態(tài)濾波器頻率變化范圍。
為評估基于CORDIC算法濾波器系數(shù)計算模塊的輸出誤差,分別用CORDIC算法與Matlab上fir1函數(shù)產(chǎn)生一組33階低通FIR濾波器系數(shù),對比圖如圖 3(a)所示,圖 3(b)是 CORDIC 算法輸出濾波器系數(shù)誤差圖??梢钥闯觯珻ORDIC算法用于計算FIR濾波器系數(shù)絕對誤差不超過±4×10-3,滿足實(shí)際工程中FIR數(shù)字濾波誤差要求。
圖3 動態(tài)FIR數(shù)字濾波器輸出系數(shù)誤差分析圖
為衡量基于CORDIC算法的濾波器系數(shù)動態(tài)計算模塊在FPGA上的輸出誤差,在Modelsim 10.0c軟件上對最大截止頻率為4 MHz的33階FIR低通濾波器系數(shù)進(jìn)行仿真計算。圖4是FIR數(shù)字濾波器系數(shù)動態(tài)計算模塊FPGA仿真圖,圖中depth是動態(tài)濾波器截止頻率調(diào)整參數(shù),out是濾波器系數(shù)計算輸出結(jié)果,圖 4(a)、圖 4(b)分別是截止頻率調(diào)整參數(shù)為1、124(2個極限值)時濾波器系數(shù)輸出,濾波器系數(shù)隨截止頻率下降而減小。表1列出仿真結(jié)果輸出與fir1函數(shù)產(chǎn)生的濾波器系數(shù)對比,濾波器系數(shù)動態(tài)計算模塊在FPGA上輸出絕對誤差不超過±3×10-3,滿足實(shí)際工程中FIR數(shù)字濾波誤差要求。
圖4 FIR數(shù)字濾波器系數(shù)動態(tài)計算模塊FPGA仿真圖
表1 動態(tài)FIR濾波器系數(shù)FPGA仿真輸出誤差表
2.2 動態(tài)FIR濾波模塊
圖5 分布式算法FIR數(shù)字濾波器結(jié)構(gòu)圖
基于分布式算法FIR數(shù)字濾波器占用ROM大小取決于濾波器階數(shù)[13],若設(shè)計33階濾波器,需要計算17個14 bit濾波器系數(shù),則ROM大小為14×217bit,且隨濾波器階數(shù)提高,分布式算法占用內(nèi)存資源呈指數(shù)上升。為減少ROM資源,可將原本查找表分割成若干個小查找表,將每個查找表輸出結(jié)果相加,得到最終濾波輸出。圖5是基于分布式算法FIR數(shù)字濾波器結(jié)構(gòu)圖,通過4個子查找表求解17個濾波器系數(shù)。
為檢驗(yàn)分布式算法動態(tài)FIR數(shù)字濾波器的濾波性能,在Matlab上用基于CORDIC算法的動態(tài)濾波器對多路混頻信號進(jìn)行低通濾波。圖6是采樣頻率為40 MHz,濾波器截止頻率為4 MHz的動態(tài)濾波器濾波性能分析圖,其中圖 6(a)、圖 6(b)分別是原始信號為 1,6,8,12,14MHz混頻輸入信號和動態(tài)濾波器輸出信號;圖 6(c)、圖 6(d)分別是原始信號頻譜圖和動態(tài)濾波器頻譜圖;圖6(e)是動態(tài)濾波器頻譜圖??梢钥闯觯贑ORDIC算法的動態(tài)FIR低通數(shù)字濾波器阻帶衰減可達(dá)-50 dB以上,能有效濾除高頻信號,保留低頻信號分量。
圖6 動態(tài)濾波器濾波性能分析圖
為驗(yàn)證分布式FIR數(shù)字動態(tài)濾波模塊在FPGA上實(shí)現(xiàn)效果,用Matlab軟件產(chǎn)生1MHz、6MHz混頻信號,采樣頻率為40 MHz,采樣后數(shù)字信號以16進(jìn)制導(dǎo)入Modelsim作為輸入測試信號,經(jīng)最大截止頻率為4MHz的分布式FIR數(shù)字動態(tài)濾波模塊濾波后輸出。圖7是動態(tài)濾波模塊FPGA仿真圖,圖中xin是1 MHz、6 MHz混頻輸入測試信號,yout為定點(diǎn)化處理后的濾波輸出。結(jié)果表明,分布式FIR數(shù)字動態(tài)濾波模塊在FPGA上能取得較好濾波效果。
圖7 動態(tài)濾波模塊FPGA仿真圖
超聲相控陣檢測中,超聲回波信號濾波處理是影響最終成像效果的重要步驟。超聲波在物體中傳播時,波束能量會隨傳播距離增加而衰減,聲束頻帶各部分衰減程度不同,使超聲回波信號頻譜中心頻率成分隨掃查深度增加而降低,故需要用不同截止頻率濾波器對不同掃查深度的超聲回波進(jìn)行濾波才能達(dá)到最好濾波效果。傳統(tǒng)方法將大量濾波器系數(shù)組存入FPGA內(nèi)存,再根據(jù)掃查深度調(diào)用適合濾波器[14]。為降低對FPGA內(nèi)存資源消耗,可采用基于CORDIC算法的濾波器系數(shù)動態(tài)計算模塊代替查找表,根據(jù)當(dāng)前掃查深度,對式(9)中depth參數(shù)取不同值,實(shí)時計算匹配當(dāng)前掃查深度的濾波器系數(shù),實(shí)現(xiàn)動態(tài)FIR濾波。
根據(jù)超聲回波物理特性,超聲換能器脈沖響應(yīng)可模擬成高斯信號[15]。圖8為超聲回波信號濾波模擬圖。圖8(a)是中心頻率為5MHz、幅值系數(shù)為0.8、初相位1.8 rad的超聲回波信號,并摻入40 dB高斯噪聲信號;圖8(b)是原始超聲回波信號頻譜圖。將原始超聲回波信號經(jīng)基于CORDIC算法的動態(tài)FIR濾波器濾波后,得到濾波后信號和其頻譜圖,如圖8(c)、圖8(d)所示。可以看出,原始模擬超聲回波信號中噪聲信號基本被濾除。
為驗(yàn)證此33階動態(tài)FIR數(shù)字濾波器實(shí)用性能,將其下載至超聲相控陣檢測系統(tǒng),對無縫鋼管進(jìn)行回波信號采集。圖9是相同增益下的超聲相控陣動態(tài)FIR濾波實(shí)驗(yàn)結(jié)果,其中圖9(a)是未經(jīng)過動態(tài)濾波的原始超聲回波信號,存在較多噪聲,經(jīng)動態(tài)濾波后得到圖9(b),噪聲信號基本濾除。結(jié)果表明,基于CORDIC算法的動態(tài)FIR數(shù)字濾波器可以取得較好實(shí)際濾波效果。
圖8 超聲回波信號濾波模擬圖
圖9 超聲相控陣動態(tài)FIR濾波實(shí)驗(yàn)結(jié)果圖
1)本文采用Hamming窗設(shè)計動態(tài)FIR數(shù)字濾波器,提出一種基于CORDIC算法的濾波器系數(shù)計算方法,利用CORDIC算法高速、高準(zhǔn)確度、低復(fù)雜度特點(diǎn),實(shí)現(xiàn)FIR數(shù)字濾波器系數(shù)動態(tài)實(shí)時計算。
2)基于CORDIC算法的濾波器系數(shù)計算模塊FPGA仿真結(jié)果表明濾波器系數(shù)計算輸出絕對誤差小于±4×10-3;通過并行分布式算法設(shè)計FIR數(shù)字濾波模塊,仿真結(jié)果表明基于CORDIC算法的動態(tài)濾波器阻帶衰減可達(dá)到-50 dB以上,滿足實(shí)際工程要求。
3)通過FPGA實(shí)現(xiàn)基于CORDIC算法的動態(tài)FIR數(shù)字濾波器并將其應(yīng)用于超聲相控陣檢測儀回波信號濾波實(shí)驗(yàn),對不同掃查深度超聲回波信號的最佳匹配濾波器系數(shù)進(jìn)行動態(tài)實(shí)時計算,將濾波器系數(shù)輸入分布式FIR濾波模塊對超聲回波信號進(jìn)行濾波,可取得較好濾波效果。
[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]崔園園,王伯雄,柳建楠,等.數(shù)字超聲波信號中有色噪聲的自適應(yīng)濾波[J].光學(xué)精密工程,2014,22(12):3377-3383.
[3]周盛,李仙琴,王曉春,等.全數(shù)字B超動態(tài)濾波器的設(shè)計與實(shí)現(xiàn)[J].中國生物醫(yī)學(xué)工程學(xué)報,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].光子學(xué)報,2014,43(9):166-169.
[6]李春蕾,張曉光,席麗霞,等.偏振復(fù)用系統(tǒng)中FIR-BP算法有效補(bǔ)償非線性損傷的實(shí)驗(yàn)研究[J].中國激光,2013,40(12):123-129.
[7]唐文明,劉桂雄.指數(shù)函數(shù)CORDIC算法的FPGA定點(diǎn)化技術(shù)[J].華南理工大學(xué)學(xué)報(自然科學(xué)版),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]林若波,劉桂雄,唐文明.應(yīng)用補(bǔ)碼的通項(xiàng)式正余弦CORDIC 算法 FPGA 實(shí)現(xiàn)[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]陳旭東,陳章進(jìn),李翰超,等.基于FPGA的頻譜分析系統(tǒng)研究與實(shí)現(xiàn)[J]. 電子測量技術(shù),2016,39(11):113-117.
[12]洪奕光,張艷瓊.分布式優(yōu)化:算法設(shè)計和收斂性分析[J].控制理論與應(yīng)用,2014,31(7):850-857.
[13]魏靈,楊日杰,崔旭濤.基于分布式算法的數(shù)字濾波器設(shè)計[J].儀器儀表學(xué)報,2008,29(10):2100-2104.
[14]王文芳.高頻超聲診斷儀中自適應(yīng)動態(tài)濾波器的研究[D].北京:北京協(xié)和醫(yī)學(xué)院,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
國家重大科學(xué)儀器設(shè)備開發(fā)專項(xiàng)(2013YQ230575);廣州市科技計劃項(xiàng)目(201509010008)
宋定昆(1994-),男,江西吉安市人,碩士研究生,專業(yè)方向?yàn)闊o損檢測、信號處理。