基于TMS320C5402的数字滤波器设计.docx

上传人:b****5 文档编号:28385455 上传时间:2023-07-10 格式:DOCX 页数:30 大小:499.04KB
下载 相关 举报
基于TMS320C5402的数字滤波器设计.docx_第1页
第1页 / 共30页
基于TMS320C5402的数字滤波器设计.docx_第2页
第2页 / 共30页
基于TMS320C5402的数字滤波器设计.docx_第3页
第3页 / 共30页
基于TMS320C5402的数字滤波器设计.docx_第4页
第4页 / 共30页
基于TMS320C5402的数字滤波器设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于TMS320C5402的数字滤波器设计.docx

《基于TMS320C5402的数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于TMS320C5402的数字滤波器设计.docx(30页珍藏版)》请在冰豆网上搜索。

基于TMS320C5402的数字滤波器设计.docx

基于TMS320C5402的数字滤波器设计

基于TMS320C5402的数字滤波器设计

学生姓名:

xxxx指导老师:

XXXX

摘要DSP系统是不同于模拟电路和数字逻辑电路的电路系统,它所需要的信号必须是数字信号,并且强调运算过程。

本课程设计在MATLAB软件上设计一个FIR滤波器,并在CCS仿真软件上应用汇编语言和C语言编写一些简单的DSP程序,选用TMS320C5402芯片作为DSP处理芯片,通过对其编程来实现数字滤波器的设计与仿真。

关键词DSP;MATLAB软件;CCS仿真;TMS320C5402芯片

 

AbstractDSPsystemisdifferentfromanalogordigitallogiccircuitsystem.Thesignalitneedsmustbeadigitalsignal,andemphasizescomputationprocess.ThiscourseistousetheMATLABsoftwaretodesignaFIRfilter,andwritesomesimpleDSPprograminCCSsimulationsoftwarebyassemblylanguageandClanguage.ChoosetheTMS320C5402chipastheDSPprocessingchip,andthroughitsprogrammingtodigitalfilterdesignandsimulation.

KeywordsDSP;MATLABsoftware;CCSsimulation;TMS320C5402chip

1引言

DSP有两种解释:

其一是DigitalSignalProcessing的缩写,即数字信号处理,是指数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式;其二是DigitalSignalProcessor即数字信号处理器的意思,是指数字信号处理器是用来完成数字信号处理要求的具有特殊结构的一种微处理器,即我们经常所说的DSP器件。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。

2系统功能介绍及总体设计方案

2.1、系统功能介绍

一个实际的应用系统中,总存在各种干扰。

数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。

在本设计中,使用MATLAB模拟产生合成信号,然后利用CCS进行滤波。

设定模拟信号的采样频率为32000Hz,。

设计一个FIR低通滤波器,其参数为:

滤波器名称:

FIR低通滤波器

采样频率:

Fs=40000Hz

通带:

4000Hz~4500Hz

过渡带:

2500Hz~3000Hz,3500Hz~4000Hz

带内波动:

0.5dB

阻带衰减:

50dB

滤波器级数:

N=154

滤波器系数:

由MATLAB根据前述参数求得。

2.2总体设计方案流程图

 

图2.1总体设计方案

 

2.3、CCS开发环境

CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。

CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。

CCS支持如下图1.1所示的开发周期的所有阶段。

图2.2CCS开发功能和流程

3主要内容和步骤

3.1、滤波器原理

对于一个FIR滤波器系统,它的冲击响应总是又限长的,其系统函数可记为[1]:

其中N-1是FIR的滤波器的阶数,

为延时结,h(n)为端口信号函数。

最基本的FIR滤波器可用下式表示:

其中x(n-k)输入采样序列,h(k)是滤波器系数,N是滤波器的阶数Y(n)表示滤波器的输出序列,也可用卷积来表示输出序列y(n)与x(n)、h(n)的关系,即:

y(n)=x(n)*h(n)。

3.2、DSP实现FIR滤波的关键技术

用线性缓冲区实现FIR滤波器(程序清单见附录)。

3.3.操作步骤

(1)打开FDATOOL,根据滤波要求设置滤波器的类型、通带截止频率、指定阶数、采样频率等。

指定完设计参数后单击按钮DesignFilter,即生成滤波器系数。

(2)把生成的滤波器系数传到目标DSP。

选择菜单Targets->ExporttoCodeComposerStudio(tm)IDE,打开ExporttoCHeaderFile对话框,选择Cheaderfile,指定变量名(滤波器阶数和系数向量),输出数据类型可选浮点型或32b,16b整型等,根据自己安装选择目标板板号和处理器号,单击OK,保存该头文件,需指定文件名(filtercoeff.h)和路径(保存在c:

\ti\myprojects\fir工程中)。

(3)修改CCS汇编程序,删掉数据前的所有文字,在开头加上.data,第二行加coeff.word,在每行的前面加上.word,并且把每行的最后面的逗号去掉。

(4)编译汇编程序,如果有错误,按错误进行修改;如没错误,则往下执行。

(5)加载初始化DATA数据。

运行程序,查看输入输出波形,设置参数进行调试。

4详细设计

在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。

MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看DSP的滤波效果。

4.1、MATLAB程序流程图如图4.1所示

初始化

产生需要虑波信号

画出原始信号频谱图

生成fir滤波器

进行滤波

画出滤波后信号频谱图

图4.1MATLAB程序流程图

 

4.2、CCS汇编程序流程图如图4.2所示

本次滤波结束待滤波系数减一

为原始信号和系数指定寄存器

定义滤波器系数

输入原始信号

初始化

做滤波算法

滤波结束

是否还有待滤波数据

 

图4.2CCS汇编程序流程图

 

5实验过程

5.1、MATLAB结合汇编语言过程

(1)、实验步骤与内容

MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。

使用该方法,便于采用汇编语言来实现程序。

头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

1)在MATLAB中先编写程序[2],查看待滤波信号的时域和频域波形,如下图所示。

图5.1待滤波信号的时域波形

图5.2待滤波信号的频率波形

利用FDATOOL设计FIR滤波器的参数,操作步骤如图5.3所示。

图5.3FIR滤波器的参数设置

打开Export,把Numerator改为B,如图5.4所示。

 

已滤波的信号的时域和频域波形,如图5.5和图5.6所示。

图5.5已滤波的信号的时域波形

图5.6已滤波的信号的频率波形

MATLAB滤波器设计工具在完成FIR设计后,如图7所示,在Exportas中选择16bit。

再生成fir.hC语言头文件。

将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。

 

2)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。

在CCSIDE中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。

另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。

3)加载初始化data数据,图5.8所示。

 

运行程序,查看输入输出波形,修改相应参数进行调试。

(2)、实验过程中出现的错误及解决的办法

1)在MATLAB程序设计中,采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。

2)FIR.m中的采样频率要和开始设置时的采样频率一致,否则结果会出现偏差。

3)在CCS中未定义标号,程序运行错误。

4)在.h文件中未把coeff顶格写,编译时出现错误。

5)未将fir.h和input.dat文件考入工程文件中。

6)间接寻址过程中,程序中丢失。

7)在View的Graph中单击Time/frequency出现graphpropertydialog框,未修改抽样点数。

显示的图形出现差异

(3)、CCS程序运行后的各种输出结果

在View的Graph中单击Time/frequency出现graphpropertydialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置[3],输出各种波形。

输出滤波前的信号时域波形。

首先,设置如图5.9所示,输出滤波前的信号时域波形。

图5.9graphpropertydialog设置

单击OK后生成如下图5.10波形。

图5.10滤波前的信号时域波形

图5.10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。

修改相应设置,输出如图5.11所示滤波前信号频谱。

图5.11滤波前信号频谱

经过滤波后,波形如图5.12和5.13所示。

图5.12滤波后时域波形

图5.13滤波后信号频谱

5.2、MATLAB与C语言过程

(1)实验步骤与内容

MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。

使用该方法,便于采用C语言来实现程序。

头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

1)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图5.14和图5.15所示。

图5.14MATLAB中待滤波信号的时域波形

图5.15MATLAB中待滤波信号的频域波形

利用FDATOOL设计FIR滤波器的参数,操作步骤如图5.16所示。

图5.16利用FDATOOL设计FIR滤波器的参数

打开Export,把Numerator改为B,如图5.17所示。

图5.17export设置

已滤波的信号的时域和频域波形,如图5.18和图5.19所示。

图5.18已滤波的信号的时域波形

图5.19已滤波的信号的频率波形

MATLAB滤波器设计工具在完成FIR设计后,在Exportas中选择16bit符号整数输出,再生成fir.hC语言头文件。

修改系数,调整后拷贝到程序的系数初始化空间即可。

图5.20完成FIR滤波器设计

2)在CCS中编写C语言程序,进行调试,实现带通滤波的功能。

在CCSIDE中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。

另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。

3)加载初始化data数据,图5.21所示。

图5.21初始化data数据

运行程序,查看输入输出波形,修改相应参数进行调试。

(2)、实验过程中出现的错误及解决的办法

1)在MATLAB程序设计中[4],采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。

2)FIR.m中的采样频率要和开始设置时的采样频率一致否则结果会出现偏差。

3)在CCS中未定义标号,程序运行错误。

4)在.h文件中未把coeff顶格写,编译时出现错误。

5)未将fir.h和input.dat文件考入工程文件中。

6)间接寻址过程中,程序中丢失。

7)在View的Graph中单击Time/frequency出现graphpropertydialog框,未修改抽样点数。

显示的图形出现差异

(3)、CCS程序运行后的各种输出结果

在View的Graph中单击Time/frequency出现graphpropertydialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。

输出滤波前的信号时域波形,设置如图所示,输出滤波前的信号时域波形。

图5.22graphpropertydialog出错重置

单击OK后生成如下图波形。

图5.23更正设置后的滤波前输出波形

图5.23为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。

修改相应设置,输出如图5.24所示滤波前信号频谱。

图5.24更正设置后的滤波前信号频谱

经过滤波后,时域波形如图5.25所示。

图5.25更正设置后的滤波后时域波形

图5.26更正设置后的滤波后信号频谱

 

6结束语

通过本次课程设计,让我了解了数字滤波是信号处理技术中的重要部分,研究了数字滤波器的基本理论知识以及它实现方法。

学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性。

并且复习了MATLAB的相关知识,并且利用MATLAB与CCS设计了低通滤波器以及高通滤波器,还研究了如何在定点DSP中实现数字滤波器的算法,学到了16位定点DSP芯片TMS320C5402的硬件、软件结构和特性,掌握了CCS环境下的程序开发方法、调试工具的使用及优化级别的选择等。

..研究了MATLAB环境下FIR数字滤波器的设计方法,利用MATLAB软件编程实现FIR滤波器设计。

利用DSP来快速设计FIR数字滤波器的方法,寻找系数的快速传递,MATLAB中调试仿真DSP程序。

DSP作为一门新兴学科,越来越引起人们的关注,目前已广泛应用在各个领域。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

数字信号处理(DSP)是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。

数字信号处理是(DSP)利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合们需要的信号形式。

数字信号处理在理论上的发展推动了数字信号处理应用的发展。

反过来,数字信号处理的应用又促进了数字信号处理理论的提高。

而数字信号处理的实现则是理论和应用之间的桥梁。

数字信号处理DSP是以众多学科为理论基础的,它所涉及的范围极其广泛。

不仅要完善以上的MATLAB设计方法,更要学会利用多种途径设计各种DSP最小系统,熟练C语言编程。

所以在今后的工作和学习生活中,综合运用模拟电子、数字电子和DSP基本原理等课程中所学的理论知识去独立完成一个项目的设计。

 

7参考文献

[1]程佩青.数字信号处理教程.北京:

清华大学出版社,2007-02

[2]楼顺天,李博函.基于MATLAB的系统分析与设计一信号处理[M].西

安:

西安电子科技大学出版社,1998

[3]王秀芳,关凌涛.基于MatLab与DSP的滤波器的快速设计方法[期刊文章].现代计算机,2008,总第二七七期:

97~99

[4]罗军辉,罗勇江等.MATLAB在数字信号处理中的应用「M].北京:

机械

工业出版社,2005.63一128.

附件:

源程序清单

附录一:

用线性缓冲区实现FIR滤波器

.title“FIR1.ASM”

.mmregs

.defstart

x.usect“x”,8

PA0.set0

PA1.set1

.data

COEF:

.word1*32768/10

.word2*32768/10

.word-4*32768/10

.word3*32768/10

.word-4*32768/10

.word2*32768/10

.word1*32768/10

.text

start:

SSBXFRCT

STM#x+7,AR2

STM#6,AR0

LD#x+1,DP

PORTRPA1,@x+1

FIR1:

RPTZA,#6

MACD*AR2-,COEF,A

STHA,*AR2

PORTW*AR2+,PA0

BDFIR1

PORTRPA1,*AR2+0

.end

附录二:

用循环缓冲区实现FIR滤波器

.title“FIR2.ASM”

.mmregs

.defstart

.bssy,1

xn.usect“xn”,7

b0.usect“b0”,7

PA0.set0

PA1.set1

.data

table:

.word1*32768/10

.word2*32768/10

.word3*32768/10

.word4*32768/10

.word5*32768/10

.word6*32768/10

.word7*32768/10

.text

start:

SSBXFRCT

STM#b0,AR1

RPT#6

MVPDtable,*AR1+

STM#xn+6,AR2

STM#b0+6,AR3

STM#7,BK

STM#-1,AR0

LD#xn,DP

PORTRPA1,@xn

FIR2:

RPTZA,#6

MAC*AR2+0%,*AR3+0%,A

STHA,@y

PORTW@y,PA0

BDFIR2

PORTRPA1,*AR2+0%

.end

附录三:

汇编程序清单

lhm.h文件内容:

.data

coeff.word-85,-64,-61,-36,8,62,110,136,131

.word96,42,-11,-44,-44,-11,39,85,106

.word88,37,-29,-83,-101,-73,-7,70,124

.word131,82,-5,-96,-151,-144,-72,37,140

.word191,162,61,-76,-191,-231,-174,-35,132

.word256,278,180,-7,-208,-337,-330,-176,72

.wor316,445,392,156,-178,-475,-599,-470,-108

.word361,745,857,594,-6,-748,-1336,-1456,-893

.word386,2192,4154,5816,6768,6768,5816,4154,2192

.word386,-893,-1456,-1336,-748,-6,594,857,745

.word361,-108,-470,-599,-475,-178,156,392,445

.word316,72,-176,-330,-337,-208,-7,180,278

.word256,132,-35,-174,-231,-191,-76,61,162

.word191,140,37,-72,-144,-151,-96,-5,82

.word131,124,70,-7,-73,-101,-83,-29,37

.word88,106,85,39,-11,-44,-44,-11,42

.word96,131,136,110,62,8,-36,-61,-64

.word-85

Fir.asm内容:

.title"fir.asm"

.mmregs

.global_c_int00

ORDER.set154

D_LEN.set1024;TheLengthofInputData

xn.usect"xn",(ORDER-1)

a0.usect"a0",(ORDER-1)

input.usect"input",D_LEN

output.usect"output",D_LEN

.copy"HM.h";Getcoefsfrom"coef.h"

.text

.asgAR0,FIR_INDEX

.asgAR2,FIR_DATA

.asgAR3,FIR_COEF

.asgAR5,DATA_IN

.asgAR6,DATA_OUT

_c_int00:

SSBXFRCT

STM#a0,FIR_COEF;Copya0(coefs)toFIR_COEF(AR3)

RPT#ORDER-1

MVPD#coeff,*FIR_COEF+

STM#1,FIR_INDEX

STM#xn,FIR_DATA;Copyxn(data)toFIR_DATA(AR2)

RPTZA,#ORDER-1

STLA,*FIR_DATA+

STM#(xn+ORDER-1),FIR_DATA

STM#(a0+ORDER-1),FIR_COEF

STM#input,DATA_IN;Getdatafrom"input"

STM#output,DATA_OUT;Writedatato"output"

STM#D_LEN-1,BRC

RPTBDnext-1

STM#ORDER,BK

LD*DATA_IN+,A

FIR:

STLA,*FIR_DATA+%

RPTZA,(ORDER-1)

MAC*FIR_DATA+0%,*FIR_COEF+0%,A;FIRS

STHA,*DATA_OUT+

next

FIR_END:

BFIR_END

.end

FIR.m的程序如下:

fs=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1