综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章D S P正文
 
基于TMS320C5510的FIR滤波器设计与实现
发布日期:2008-06-13 作者:杨大柱 来源:微计算机信息

摘要   数字滤波技术是数字信号处理的重要组成部分,滤波器的设计是信号处理的核心问题之一。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         基于TMS320C5510FIR滤波器实现

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)

32  汇编程序

软件设计具体流程是:先对主程序进行初始化,包括数据段的初始化和数据缓冲区的清零等,再将从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仿真结果

在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


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
基于FPGA的音频处理芯片的设计 (09-01)
基于MATLAB的FIR滤波器设计与滤波 (10-14)
基于LabVIEW的FIR数字滤波器设计 (08-14)
综述单片机控制系统的抗干扰设计 (05-23)
基于FPGA的四阶IIR数字滤波器 (03-24)
FIR数字滤波器分布式算法的原理及FPGA实现 (03-24)
风速测量系统设计 (10-22)
基于Msp430F148的便携式测振仪 (11-10)
192kHz/24bit音频DVD数字滤波器SM5847AF (12-21)
带辅助DAC的双路Σ-Δ转换器的原理及应用 (12-31)
ADSP系列数字信号处理器件的应用 (12-21)
基于FPGA的FIR滤波器的实现 (12-06)
信息查询终端触摸屏噪声分析及对策 (11-22)
用CPLD实现FIR数字滤波器的设计 (12-06)
数字滤波器滤除电子测量系统中工频及其谐波干扰的研究 (01-12)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号