基于CORDIC算法的动态FIR数字滤波器FPGA实现与应用
2017-08-08宋定昆刘桂雄唐文明
宋定昆,刘桂雄,唐文明
(华南理工大学机械与汽车工程学院,广东 广州 510640)
基于CORDIC算法的动态FIR数字滤波器FPGA实现与应用
宋定昆,刘桂雄,唐文明
(华南理工大学机械与汽车工程学院,广东 广州 510640)
传统动态FIR数字滤波需要将大量滤波器系数存入FPGA中,该文提出一种基于CORDIC算法的动态FIR数字滤波器实现方法,通过CORDIC算法对随信号参数动态变化的滤波器系数进行实时计算,节省大量FPGA内存资源。实验表明:基于CORDIC算法的动态FIR数字滤波器系数计算绝对误差小于±4×10-3,动态滤波器阻带衰减达-50dB以上,具有准确度高、实时性好、占用内存少的特点。将该动态FIR数字滤波器应用于超声相控阵回波信号动态滤波,取得较好滤波效果。
动态滤波器;坐标旋转数字计算机算法;有限脉冲响应;分布式算法;现场可编程门阵列
0 引 言
数字滤波作为数字信号处理的关键技术,已经得到广泛应用。有限脉冲响应(FIR)滤波器、无限脉冲响应滤波器(IIR)是2种主要数字滤波器,其中FIR数字滤波器容易实现线性相位滤波,适用于数字通信与信号处理中。但实际场合中有效信号、噪声信号统计特性通常未知或不断变化,如超声相控阵检测中超声回波信号频带随扫查深度变化而不断偏移[1],采用固定数字滤波器难以达到最优滤波效果[2]。通常解决办法是将大量滤波器系数存入现场可编程门阵列(FPGA)内存中[3],通过建立系数匹配函数实现实时匹配滤波,但占用大量内存资源。为此,本文研究一种滤波系数随信号和噪声特性变化而改变的动态FIR数字滤波器,采用窗函数设计法,通过坐标旋转数字计算机(coordinate rotation digital computer,CORDIC)[4]算法实现滤波器系数动态实时计算,具有准确度高、实时性好、占用内存少的特点,并将其应用于超声相控阵回波信号滤波中。
1 窗函数法设计FIR数字滤波器及CORDIC算法求解机理
基于窗函数的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实现。
2 动态FIR数字滤波器设计与仿真
目前应用于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仿真图
3 基于CORDIC算法动态FIR数字滤波器应用
超声相控阵检测中,超声回波信号滤波处理是影响最终成像效果的重要步骤。超声波在物体中传播时,波束能量会随传播距离增加而衰减,声束频带各部分衰减程度不同,使超声回波信号频谱中心频率成分随扫查深度增加而降低,故需要用不同截止频率滤波器对不同扫查深度的超声回波进行滤波才能达到最好滤波效果。传统方法将大量滤波器系数组存入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滤波实验结果图
4 结束语
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-),男,江西吉安市人,硕士研究生,专业方向为无损检测、信号处理。