第32卷第2期2011年3月
文章编号:10022082(2011)02020605
应用光学
JournalofAppliedOpticsVol32No.2Mar2011
一种块处理模式数字滤波器的DSP实现
索亮,梁芳
(中北大学信息探测与处理技术研究所,山西太原030051)
摘要:对称FIR(有限冲激响应)滤波器的严格的线性相位特性和系统稳定性在数据传输、图像处理等领域得到了广泛的应用。基于单点处理模式的传统数字滤波器能实时处理点信号,但在处理图像、语音等帧信号时,速度较慢,实时性不强。针对这个问题提出了块处理模式的解决方案。通过分析FIR滤波器的原理,设计出基于块处理模式的对称FIR滤波器,并在TMS320C5510芯片中实现。介绍了基于双指针循环寻址的滤波算法,并给出了相应的主要程序。计算机试验仿真表明块处理模式方案提高了帧信号的处理速度,滤波性能良好。关键词:数字滤波;对称FIR滤波器;块处理模式;TMS320C5510;MATLAB
中图分类号:TN61172文献标志码:A
ImplementationofablockprocessingmodeofdigitalfilteronDSP
SUOLiang,LIANGFang
(InstituteofCapturing&ProcessingTechnology,NorthUniversityofChina,Taiyuan030051,China)
Abstract:Symmetricfiniteimpulseresponse(FIR)filterwithastrictlylinearphasecharacteristicsandsystemstabilityiswidelyusedindatatransmission,imageprocessingandotherfields.Conventionaldigitalfilterbasedonsinglepointprocessingmodecanprocesspointsignalinrealtime.However,itsprocessingspeedisslow,andrealtimeperformanceisnotverygoodwhendealingwithimages,orvoiceframesignals.Thispaperproposesablockprocessingmodeltosolvethisproblem.ByanalyzingFIRfiltertheory,asymmetricFIRfilterwasdesignedbasedonblockprocessingmode,andimplementedintheTMS320C5510chip(aDSPchip).Thefilteringalgorithmbasedontwopointerscircularaddressingwasintroduced,andthemainprogramwasgiven.Computersimulationshowsthattheblockprocessingmodeoftheprogramsignificantlyimprovestheprocessingspeedofframesignal,andfilteringperformanceissatisfactory.Keywords:digitalfilter;symmetricFIRfilters;blockprocessingmode;TMS320C5510;MATLAB
引言
数字滤波器是数字信号处理中重要的组成部分之一,在各个领域都有着广泛的应用。所谓数字滤波,就是将输入的信号序列按规定的算法处理,得到所希望的输出系列的过程。因此,一个数
字滤波器就是一个数字系统,其特性在频域用系统传输函数表示,在时域用系统的单位冲激响应表示。其中,按照单位冲激响应是无限长的还是有限长的,可以分为无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器两种。
收稿日期:20100531;修回日期:20100610基金项目:国家自然科学基金(60772102)
作者简介:索亮(1984-),男,湖北荆州人,中北大学信息与通信工程学院硕士研究生,主要从事基于嵌入式传感器阵列信息处理研究工作。Email:kenny19840730@163.com
应用光学2011.32(2)索亮,等:一种块处理模式数字滤波器的DSP实现
207
IIR滤波器虽然所需要的运算量相对较小,但是其在频带范围内的相位响应是非线性的,这导致信号在处理后会出现频率失真,并且由于IIR滤波器的反馈特性,使得系统的稳定性较弱。而FIR滤波器则可以做到既具有严格的线性相位响应又具有任意的幅度,此外FIR滤波器的单位冲激响应是有限长无反馈的,因而系统一定是稳定的。本文通过对FIR滤波器原理的分析,在TMS320C5510芯片中实现了块处理模式的对称FIR滤波器[1]。
输入信号,其幅度为0.3,采样频率为8000,频率由800,1800,3300混合而成的正弦信号。主程序如下:
x=0.3*sin(w1*n)+0.3*sin(w2*n)+0.3*sin(w3*n);
fid=fopen(input.dat,w);
fprintf(fid,intinput[128]={\\n});fprintf(fid,%5d\\n,round(x(1:128)*362767));
fclose(fid);
程序编写中注意,应根据所选择的DSP芯片和实际数据大小来定标数据格式。本文选择的是16位定点DSP芯片,这里乘以362767将输入数据统一定标为Q15格式。2.2FDATool设计滤波系数
设计一个数字滤波器,关键就是要得到滤波系数b(l)(见公式1、2)。在MATLAB的信号处理工具箱中,FDATool以图像界面的形式,包含了所有滤波器M函数的功能,使得滤波器的设计非常方便和简单。下面利用FDATool设计一个对称FIR滤波器。
如图2所示在FDATool设计界面中指定滤波器设计方法为FIR(Window),窗函数选为Hamming,滤波器类型选为Lowpass,滤波器阶数为48,采样频率Fs为8000Hz,截止频率Fc为1000Hz,滤波器结构选为直接1型。指定完设计参数后,点击DesignFilter,量化后即可生成一个具有对称性的滤波器系数。
1FIR滤波器的基本原理
在很多实际的应用中,要求滤波器不仅具有稳定性而且具有严格的线性相位,特别是对相位敏感的信号,如图像信号、语音信号等。通过计算推导出,当FIR滤波器的系数呈对称性时,滤波器将具有精确的线性相位。其输出表达式根据滤波器阶数L的奇偶性可以分为以下两种情况[2]:
1)L为偶数时流程图见图1(a),其传输函数为
L-12H(z)=
l=0
b(l)[Z
-l
+Z-(L-l-1)]
L-1-12(1)
2)L为奇数时流程图见图1(b),其传输函数为H(z)=b(
Z
1
L-1L-)Z-2+2
l=0
b(l)[Z+
(2)
-l
-(L-l-1)
]
图2用FDATool生成对称的滤波器系数Fig.2Symmetricalfiltercoefficients
图1对称FIR滤波器流程图Fig.1SymmetricFIRfilterflowchart
generatedbyFDATool
2MATLAB设计数字滤波器
2.1MATLAB生成输入信号
在MATLAB中生成数据文件input.dat作为
3DSP中实现块处理模式FIR滤波器
FIR滤波器按照处理数据的方式,可以分为以下两类:单点处理模式的FIR滤波器和块处理模208
应用光学2011,32(2)索亮,等:一种块处理模式数字滤波器的DSP实现
式的FIR滤波器。所谓单点处理就是每一个采样周期仅有一个新的输入数据,并且FIR滤波器在每一个周期也只有一个结果。而在有些实际应用中,其数字采样通常都被组合成帧的形式,需要用块处理模式来进行处理。在块处理模式下,FIR滤波器可以快速处理由N个采样组成的帧信号。由图3(a)和图3(b)可以看到在单点模式下处理由N个采样组成的帧信号需要循环执行N次滤波程序。而在块模式下处理这个帧信号只需要循环执行r次(r=[N/M]+1),r是远小于N的,这样可以使得处理速度大幅度上升,有效提高数字处理系统的实时性
[3]
义字的个数,对于寄存器缓冲区则定义位的个数[4]。循环寻址的情况如表1所示。
表1TMS320C5510循环寻址的配置位Table1TMS320C5510circularaddressing
theconfigurationbit
指针线性/循环寻址配置位AR0AR1AR2AR3AR4AR5AR6AR7CDP
ST255(0)=AR0LCST255(1)=AR1LCST255(2)=AR2LCST255(3)=AR3LCST255(4)=AR4LCST255(5)=AR5LCST255(6)=AR6LCST255(7)=AR7LCST255(8)=CDPLC
支持主
数据页AR0HAR1HAR2HAR3HAR4HAR5HAR6HAR7HCDPH
缓冲区首地址寄存器BSA01BSA01BSA23BSA23BSA45BSA45BSA67BSA67BSAC
缓冲区大小寄存器BK03BK03BK03BK03BK47BK47BK47BK47BKC
。
利用双指针循环寻址设计对称FIR滤波器的步骤如下:
1)设置信号循环缓冲区和系数循环缓冲区,其中系数循环缓冲区只需要L/2。
2)采用双指针循环寻址,AR3和AR1同时指向信号缓冲区最新和最老的数据。临时寄存器T1和T0用来作为更新循环缓冲器指针时的偏移量。偏移量被初始化为T0=L/2和T1=L/2-2。
3)首先用双重存储器加法指令add*AR1,*AR3,AC1使第1对滤波器采样相加结果放入AC1的高位,然后内部循环firsadd*AR3+,*AR1-,*CDP+,AC1,AC0指令。
4)循环结束后,再次调用firsadd*(AR3-T0),*(AR1+T1),*CDP,AC1,AC0指令,计算出y(n),同时更新AR3和AR1指针,指向下一时刻的最新和最老的采样。图4表示了信号循环缓冲器双指针的变化过程。
+
+
-
图3两种处理模式的流程图Fig.3Flowchartsoftwoprocessingmodes
本文所设计的对称FIR滤波器阶数为48,完成一个点的滤波要做24次乘法和47次加法,需要选用高速的DSP芯片。TMS320C5510是一款定点16位DSP芯片,它是TI公司C55x系列产品中最新的一种,它具有2个乘/加(MAC)单元,4个40位累加器,能够在单周期内作2个17位17位的乘法运算,处理速度是C54x的5倍,功耗只有C54x的1/6。其片内存储空间共有352KB,外部存储空间共有16MB,而且内部资源丰富、接口灵活非常适合做复杂算法运算。设计中选用TMS320C5510芯片,并利用其双MAC单元的特点结合双指针寻址的方法给出基于块模式的滤波算法。
3.1TMSC5510的循环寻址方式
循环寻址的关键就是让缓冲区中的单元首尾相连,从而实现让新的数据进来,最老的数据被覆盖。C55x系列任何一种间接寻址方式都可以使用循环寻址,当用于指向数据或寄存器时,每个ARn(n=0~7)和CDP指针都能地配置为线性或循环寻址,只需要将配置位(配置位位于ST255)进行相应的配置即可。循环缓冲区的大小在BK03,BK47或BKC中定义,对于字缓冲区则定图4双指针循环寻址
Fig.4Twopointercircularaddressing
3.2块处理模式的对称FIR滤波器子函数
用汇编语言编写FIR滤波器子函数文件firsymm.asm,程序流程见图5,主要程序如下(;后为程序注译):
mov#M-1,BRC0;用于执行的外部循环应用光学2011.32(2)索亮,等:一种块处理模式数字滤波器的DSP实现
209
计数器
mov#(L/2-3),CSR;(L/2-2)次迭代的内部循环
mov#L/2,T0;为AR1设置指针偏移sub#(L/2-2),T1;为AR3设置指针偏移
||rptblocalsampleloop-1;外部循环M次处理一个块数据
mov#0,AC0
||movAC1#-1,*AR3;输入量标度为Q14格式
add*AR3,*AR1,AC1;防止相加溢出AC1=[x(n)+x(n-L+1)]16
||rptCSR;L/2-2次迭代计算一个y(n)firsadd*AC1,AC0
firsadd*(AR3-T0),*(AR1+T1),*CDP+,AC1,AC0
macm*CDP+,AC1,AC0;完成最后的macm指令
movrnd(hi(AC01)),*AR2+;还原到Q15格式并保存
||mov*AR0,AC1;输入下一个信号sampleloop
++
-
1)+x(n+1-L+1)],滤波系数与采样对之和相乘||add*ARx+,*ARy+,ACx;x(n-l+1)+x(n+1-L+2),同时下一对采样相加
2)使用对称FIR滤波器指令firsadd把两个相应的采样相加,然后进行相乘。在加法运算中可能会造成溢出,因此在新采样被存放到信号缓冲器之前,将其标定成Q14格式,可以解决溢出问题。3.3FIR滤波器主程序
用C语言编写主程序文件fir.c,由MATLAB产生的input.dat文件作为输入信号,同时调用firsymm.sam子函数完成低通滤波。程序中需定义一个全程变量index作为信号缓冲器标志,对每次读入的采样块(由M个采样组成)跟踪其信号缓冲器起始位置,以保证从帧信号中读取的数据块是连续的。同时还可以通过对M的设定来改变采样块的大小来调整块处理的时间。程序流程图见图6。
AR3,*
+
AR1,*
-
CDP,
+
图6主程序流程图Fig.6Mainprogramflowchart
4仿真调试及结果分析
4.1仿真调试
在CCS中建立一个
图5对称FIR滤波器子函数程序流程图Fig.5SymmetricFIRfilterfunctionprogramflowchart
工程文件夹,然后将主程序fir.c文件、滤波器子函数firsymm.sam、信号输入文件input.dat以及库文件和配置文件添加到工程文件夹中。如左图所示,编译后生成fir.out执
行文件,加载执行文件进行仿真调试[5]。在程序编写中应该要注意的两个问题1)TMS320C5510有一个专门的指令firsadd利用双MAC单位来实现对称FIR滤波器。指令语法如下:firsaddXmem,Ymem,Cmem,ACx,ACy,其作用等效于在一个周期内完成下列并行指令:macm*CDP+ACx,ACy;b(l)*[x(n-
2104.2结果分析
应用光学2011,32(2)索亮,等:一种块处理模式数字滤波器的DSP实现
泛应用。本文针对TI公司的TMS320C5510,叙述了FIR数字滤波器的理论、设计及在DSP上的实现过程,同时还提出了块模式FIR滤波器的思路,极大提高了帧信号的处理速度。在实际应用时只需按要求修改滤波器参数,对程序作较少的改动,即可实现不同截止频率的FIR滤波器,有很强的实用性,同时该方法对滤波器在嵌入式系统中的实现也有很好的参考价值。
帧信号input.dat由4000个采样点组成,块大小(M)设定为128。在CCS中将时钟周期设定为25ns,分别对点/块处理模式下的运算速度进行仿真。由表2可见,在相同的时钟周期下,点模式处理完帧信号所需的时间是块模式的5倍以上,这表明帧信号在块模式下处理速度得到了极大的提高。
表2两种处理模式下的运算速度比较Table2Comparisonofoperationspeedswith
twoprocessingmodes
处理模式块模式点模式
循环调用滤波子函数次数/次
32
所需时钟周期/个
116768556759
参考文献:
[1]赵洪亮,卜凡亮,黄鹤松,等.TMS320C55xDSP应用
系统设计[M].北京:北京航空航天大学出版社,2008.
ZHAOHongliang,BUFanliang,HUANGHesong,etal.TMS320C55xDSPapplicationsystem[M].Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2008.(inChinese)
[2]SENM,KUOBH,LEE.实时数字信号处理[M].卢
伯英,译.北京:中国铁道出版社,2005.
SENM,KUOBH,LEE.Realtimedigitalsignalprocessing[M].TranslatedbyLUBoying.Beijing:ChinaRailwayPublishingHouse,2005.(inChinese)[3]杨健,张慧慧.基于DSP的嵌入式数采系统滤波算法
设计与实现[J].制造业自动化,2006,28(12):3032.YANGJian,ZHANGHuihui.EmbeddedDSPbaseddataacquisitionsystemsfilterdesignandimplementation[J].ManufacturingAutomation,2006,28(12):3032.(inChinesewithanEnglishabstract)[4]赵红怡.DSP技术与应用实例[M].北京:电子工业
出版社,2007.
ZHAOHongyi.DSPtechnologyandapplications[M].Beijing:PublishHouseofElectronicsIndustry,2007.(inChinese)
[5]王华,.DSP原理及其C编程开发技术[M].北
京:电子工业出版社.2005.
WANGHua,ZHANGJian.DSPtheoryandCprogrammingtechnology[M].Beijing:PublishHouseofElectronicsIndustry,2005.(inChinese)
4000
运行CCS图形工具,可以看到:输入信号是由频率分量为800Hz,1800Hz和3300Hz组成的混合正弦波,如图7(a)所示;通过低通滤波器之后,使得两个高频分量衰减,800Hz的低频分量通过,如图7(b)所示,滤波效果良好,达到设计要求。
图7信号的时域和频域图
Fig.7Signalintimedomainandfrequencydomain
5结论
对称FIR数字滤波器以其优越的稳定性和线性相位特性,在数据传输、图像处理等领域得到广