摘要 数字滤波技术是数字信号处理的重要组成部分,滤波器的设计是信号处理的核心问题之一。DSP由于其本身具有并行的硬件乘法器、流水结构以及快速的片内存储器等资源,已广泛地应用于数字信号处理各个领域.文章结合TM320C5510的结构特点,介绍了一种FIR滤波器在TM320C5510中的实现方法。文中程序已经过硬件验证,仿真结果表明该设计符合要求。 关键词 数字滤波, FIR, DSP,MAC
数字信号处理由于具有精度高、灵活性强等优点,已广泛应用于图像处理、数字通信、雷达等领域。数字滤波技术在数字信号处理中占有极其重要的地位,数字滤波器根据其单位脉冲响应可分为IIR(无限长冲激响应滤波器)和FIR(有限长冲激响应滤波器)两类。IIR滤波器可以用较少的阶数获得很高的选择特性,但在有限精度的运算中, 可能出现不稳定现象,而且相位特性不好控制。在许多实际应用,为了保证滤波后的信号不产生相位失真,一般均采用FIR滤波器。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C5510作为DSP处理芯片,通过对其编程来实现FIR滤波器。
1 TMS320C5510简介
TMS320C5510是C55x系列中的第一个产品,采用双乘累加单元(MAC)结构,CPU结构如图1所示。整个处理器内部分为5个大的功能单元:存储器缓冲单元(M)、指令缓冲单元(I)、程序控制单元(P)、地址生成单元(A)和数据计算单元(D),各个功能单元之间通过总线连接。TMS320C5510中共有12条总线:1条32位程序数据总线(PB),1条24位程序地址总线(PAB),5条16位的数据总线(BB、CB、DB、EB、FB)和5条24位的数据地址总线(BAB、CAB、DAB、EAB、FAB)。
程序地址总线(PAB)上传送24位的程序代码地址,由程序数据总线(PB)将32位的程序代码送入指令缓冲单元(I)进行译码。3条读数据地址总线(BAB、CAB、DAB)与3条读数据数据总线(BB、CB、DB)配合使用,即BAB对应BB,CAB对应CB, DAB对应DB。地址总线指定数据空间或I/O空间地址,通过数据总线将16位的数据传送到CPU的各个功能单元。其中BB只与D单元相连,用于实现从存储器到D单元乘累加单元MAC的数据传送。特殊的指令也可以同时使用BB、CB、DB来读取3个操作数。2条写数据地址总线(EAB、DAB)与2条写数据数据总线(EB、FB)配合使用。地址总线指定数据空间或I/O空间地址,通过数据总线将数据从CPU的功能单元传送到数据空间或I/O空间。所有数据空间地址由A单元产生。EB和FB从P单元、A单元和D单元接收数据,对于同时向存储器写2个16位数据的指令要使用EB和FB,而对于完成单写操作的指令只使用EB。

图1 TMS320C5510 CPU结构图
2 FIR滤波器结构及设计方法
FIR滤波器的基本结构可以理解为一个分节的延时线,把每一节的输出加权累加,得到滤波器的输出。FIR的冲激响应h(n)是有限长的,其数学表达式为:
(1)
其系统函数为
(2)
式中,N是FIR滤波器的抽头数,x(n)是n时刻输入的数据采样值,h(k)表示滤波器的第k级抽头系数,y(n)表示n时刻的滤波器输出,滤波器的阶数为抽头数目减1。
FIR滤波器常用的设计方法有窗函数法、频率采样法等。不论是哪种方法都要计算出滤波器的单位冲击响应h(n)。在MATLAB的信号处理工具箱SPTool中包含了一个滤波器综合设计工具FDATool(Filter Design and Analysis Tool),其界面如图2所示。利用FDATool,可以很方便地设置滤波器类型和滤波器参数,并可以自动生成滤波器系数文件,为下一步的DSP实现提供了条件。

图2 FDATool界面
3 基于TMS320C5510的FIR滤波器实现
3.1 实现算法
根据式(1),一个四抽头(即三阶)FIR滤波器可写成:
y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+h(3)x(n-3) (3)
因为TMS320C5510有2个MAC,所以在每一个DSP时钟周期内可以完成2次乘累加操作。对于等式(3)所示的四抽头FIR滤波器可以强制它在第一个时钟周期内完成计算h(0)x(n)+h(1)x(n-1),在第二个时钟周期内完成计算h(2)x(n-2)+h(3)x(n-3)。使用这种方法,在每一个处理周期内,计算需要接入4个独立的数据。但是,TMS320C5510仅有3个16比特数据总线,因此不能直接实现上述建议的算法。需要结合其结构特点进行设计,使得在每一个时钟周期内进行2个MAC操作,同时又不需要接入4个独立的数据。图3给出了一种四抽头FIR滤波器计算的算法组合。图中竖线两端的乘积并行处理,每一行完成两个采样周期过程的计算。

图3 抽头系数为偶数的FIR滤波器计算组合(图中系数为4)
例如,在时刻n,需要计算输出y(n)。在y(n)行的第一项内容是h(0)x(n),它是使用2个MAC单元中的一个进行计算,第二个MAC单元用来计算y(n+1)行的第二项内容h(1)x(n),这2个计算的组合仅需要从存储器得到3个不同的值,即h(0),h(1)和x(n)。y(n)行的第二项内容是h(1)x(n-1),这在时刻n-1的第一次计算期间已经计算过,所以能够跳过。y(n)行的第三项内容是h(2)x(n-2),将在下一次进行计算。上述方法适用于任何具有偶抽头数目的滤波器。对于具有奇抽头数目的滤波器,如按上述方法进行计算,则每一行最后一个计算组合失去一项它上面一行的预计算内容,这时需要填充一个零系数抽头,使该滤波器在形式上成为偶抽头数目滤波器,如五抽头滤波器应写成:
y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+h(3)x(n-3) +h(4)x(n-4)+0·x(n-5) (4)
3.2 汇编程序
软件设计具体流程是:先对主程序进行初始化,包括数据段的初始化和数据缓冲区的清零等,再将从A/D获得的采样点样值送到数据缓冲区中,执行FIR滤波程序,最后将滤波结果输出。FIR滤波器算法在TMS320C5510开发板上可用汇编实现,也可用C语言实现。但汇编执行效率较高,汇编程序的关键代码如下。
*********滤波器初始化**********
MOV #2, T0 ;T0是变地址器指针
AMOV #dchain, XAR0 ;对PRECAL[31:0]的AR0指针
MOV db1(*AR0+), AC0 ;AC0= PRECAL[31:0]
MOV *AR0+, AC1 ;AC1= PRECAL[39:32]
MOV AC1, mmap(@AC0G) ;AC0= PRECAL[39:0]
MOV XAR0, XCDP ;设置CDPH
MOV *AR0, CDP ;CDP=CDPSAVE
MOV #(N_TAP), BKC ;延迟链长度
MOV #d0,BSAC ;延迟链起始地址
AMOV #a0,XAR0 ; AR0指针(对a0)
AMOV #(a0+1), XAR! ; AR1指针(对a1)
MOV *(#ADC), AC! ; 从ADC读新的输入
MOV AC!, *CDP ;把新的输入压入延迟链
********滤波器核心算法**********
;第一个MAC对是MAC||MPY(指令MAC表示兼有相乘和累加,指令MPY表示只有相乘,没有累加)
MAC *(AR0+T0), *(CDP+T0), AC0
::MPY *(AR1+T0), *(CDP+T0), AC!
||RPT #(N_TAP/2-3))
;中间的MAC对都是MAC||MAC
MAC *(AR0+T0), *(CDP+T0), AC0
::MAC *(AR1+T0), *(CDP+T0), AC1
;最后一对MAC有不同的指针对整
MAC *AR0, *CDP+, AC0
::MAC *AR1, *CDP+, AC1
********滤波器程序结束********
AMOV #dchain, XAR0 ;AR1 指针(对CDPSAVE)
MOV AC1, db1(*AR0+) ;存储PRECALC[31:0]
MOV HI(AC1<<#(-16)), *AR0+ ; 存储PRECALC[39:32]
MOV *AR0+ =CDP, *AR0 ;存储CDP
MOV HI(AC0), *(#DAC) ;发送结果到DAC
3.3 仿真结果
在CCS中对所设计的低通滤波器进行仿真, 结果见图4、图5。仿真结果表明,高频部分被滤除,达到设计目的.。

图4 数字滤波前的输入波形 图5 数字滤波后的输出波形
4 结束语
本文给出了一种基于DSP芯片TMS320C5510的FIR滤波器设计方法,利用MATLAB 仿真与DSP实现相结合的方式可以方便、快捷地设计具有严格线性相位的FIR 系统,而且参数的修改十分方便。用DSP 实现FIR数字滤波,具有准确度高、可移植性好、灵活性强等优点。该研究对其它类型滤波器的设计也有一定的参考价值。
本文作者创新点:
本文FIR滤波器的实现算法充分利用了TMS320C5510的结构特点,体现了TMS320C5510强大的并行处理能力,并将MATLAB 仿真与DSP实现有机地结合在一起,为FIR滤波器的设计与实现提供了一种非常有效的途径,对其它类型的滤波器设计也有很好的借鉴作用。
参考文献:
[1]江健康. 基于Verilog HDL的FIR数字滤波器设计与仿真[J].微计算机信息,2007,3-2:206-207
[2]汤宁生,黄建国等. 一种200MHz处理速度的FIR滤波器设计[J].微计算机信息,2007,5-3:183-184
[3]汪春梅,孙洪波,任治刚.TMS320C5000系列DSP系统设计与开发实例[M].北京:电子工业出版社,2004
[4陈怀琛.数字信号处理教程:MATLAB释义与实现[M].北京:电子工业出版社,2004
|