DSP技术课程设计实验报告.docx
- 文档编号:29894346
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:30
- 大小:515.44KB
DSP技术课程设计实验报告.docx
《DSP技术课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《DSP技术课程设计实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
DSP技术课程设计实验报告
DSP
实验设计报告
实验项目名称:
基于DSP的数字滤波器设计与仿真
目录
一、课程设计的目的和要求2
二、系统功能介绍及总体设计方案2
1、系统功能介绍2
2、总体设计方案流程图3
三、主要内容和步骤4
1、滤波器原理4
2、DSP实现FIR滤波的关键技术4
3.操作步骤6
四、详细设计6
1、MATLAB程序流程图6
2、CCS汇编程序流程图7
五、实验过程8
1.汇编语言8
2.C语言13
六、结论与体会18
七、参考文献19
八、附件:
源程序清单19
汇编程序清单:
19
C程序清单21
一、课程设计的目的和要求
通过课程设计,加深对DSP芯片TMS320C54x的结构、工作原理的理解,获得DSP应用技术的实际训练,掌握设计较复杂DSP系统的基本方法。
通过使用汇编语言编写具有完整功能的图形处理程序或信息系统,使学生加深对所学知识的理解,进一步巩固汇编语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的汇编语言程序,从而具备解决综合性实际问题的能力。
二、系统功能介绍及总体设计方案
1、系统功能介绍
一个实际的应用系统中,总存在各种干扰。
数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。
在本设计中,使用MATLAB模拟产生合成信号,然后利用CCS进行滤波。
设定模拟信号的采样频率为32000Hz,。
设计一个FIR低通滤波器,其参数为:
滤波器名称:
FIR低通滤波器
采样频率:
Fs=40000Hz
通带:
4000Hz~4500Hz
过渡带:
2500Hz~3000Hz,3500Hz~4000Hz
带内波动:
0.5dB
阻带衰减:
50dB
滤波器级数:
N=154
滤波器系数:
由MATLAB根据前述参数求得。
2、总体设计方案流程图
图1总体设计方案
三、主要内容和步骤
1、滤波器原理
对于一个FIR滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:
其中N-1是FIR的滤波器的阶数,
为延时结,
为端口信号函数。
最基本的FIR滤波器可用下式表示:
其中
输入采样序列,
是滤波器系数,N是滤波器的阶数Y(n)表示滤波器的输出序列,也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系,如下:
y(n)=x(n)*h(n)
2、DSP实现FIR滤波的关键技术
用线性缓冲区实现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
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数据。
运行程序,查看输入输出波形,修改相应参数进行调试
四、详细设计
在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。
MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看DSP的滤波效果。
1、MATLAB程序流程图如图1所示
初始化
产生需要虑波信号
画出原始信号频谱图
生成fir滤波器
进行滤波
画出滤波后信号频谱图
图1MATLAB程序流程图
2、CCS汇编程序流程图如图2所示
本次滤波结束待滤波系数减一
为原始信号和系数指定寄存器
定义滤波器系数
输入原始信号
初始化
做滤波算法
是
滤波结束
是否还有待滤波数据
图2CCS汇编程序流程图
五、实验过程
1.汇编语言
①、实验步骤与内容
MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。
使用该方法,便于采用汇编语言来实现程序。
头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。
(一)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图1和图2所示。
利用FDATOOL设计FIR滤波器的参数,操作步骤如图3所示。
打开Export,把Numerator改为B,如图4所示。
已滤波的信号的时域和频域波形,如图5和图6所示。
MATLAB滤波器设计工具在完成FIR设计后,如图7所示,在Exportas中选择16bit符号整数输出,然后单击OK按钮。
生成fir.hC语言头文件。
将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。
(二)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。
在CCSIDE中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。
另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。
(三)加载初始化data数据,图8所示。
运行程序,查看输入输出波形,修改相应参数进行调试。
②、实验过程中出现的错误及解决的办法
(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框。
将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。
输出滤波前的信号时域波形。
首先,设置如图9所示,输出滤波前的信号时域波形。
单击OK后生成如下图10波形。
图10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。
修改相应设置,输出如图11所示滤波前信号频谱。
经过滤波后,时域波形如图12所示。
2.C语言
①、实验步骤与内容
MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。
使用该方法,便于采用C语言来实现程序。
头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。
(二)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图1和图2所示。
利用FDATOOL设计FIR滤波器的参数,操作步骤如图3所示。
打开Export,把Numerator改为B,如图4所示。
已滤波的信号的时域和频域波形,如图5和图6所示。
MATLAB滤波器设计工具在完成FIR设计后,如图7所示,在Exportas中选择16bit符号整数输出,然后单击OK按钮。
生成fir.hC语言头文件。
将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。
(二)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。
在CCSIDE中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。
另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。
(三)加载初始化data数据,图8所示。
运行程序,查看输入输出波形,修改相应参数进行调试。
②、实验过程中出现的错误及解决的办法
(1)在MATLAB程序设计中,采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。
(2)FIR.m中的采样频率要和开始设置时的采样频率一致否则结果会出现偏差。
(3)在CCS中未定义标号,程序运行错误。
(4)在.h文件中未把coeff顶格写,编译时出现错误。
(5)未将fir.h和input.dat文件考入工程文件中。
(6)间接寻址过程中,程序中丢失。
(7)在View的Graph中单击Time/frequency出现graphpropertydialog框,未修改抽样点数。
显示的图形出现差异
③、CCS程序运行后的各种输出结果
在View的Graph中单击Time/frequency出现graphpropertydialog框。
将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。
输出滤波前的信号时域波形,设置如图所示,输出滤波前的信号时域波形。
单击OK后生成如下图10波形。
图10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。
修改相应设置,输出如图11所示滤波前信号频谱。
经过滤波后,时域波形如图12所示。
六、结论与体会
通过本次课程设计,让我了解了数字滤波是信号处理技术中的重要部分,研究了数字滤波器的基本理论知识以及它实现方法。
学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性。
并且复习了MATLAB的相关知识,并且利用MATLAB与CCS设计了低通滤波器以及高通滤波器,还研究了如何在定点DSP中实现数字滤波器的算法,学到了16位定点DSP芯片TMS320C5402的硬件、软件结构和特性,掌握了CCS环境下的程序开发方法、调试工具的使用及优化级别的选择等。
..研究了MATLAB环境下FIR数字滤波器的设计方法,利用MATLAB软件编程实现FIR滤波器设计。
利用DSP来快速设计FIR数字滤波器的方法,寻找系数的快速传递,MATLAB中调试仿真DSP程序。
DSP作为一门新兴学科,越来越引起人们的关注,目前已广泛应用在各个领域。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是(DSP)利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合们需要的信号形式。
数字信号处理(DSP)是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理DSP是以众多学科为理论基础的,它所涉及的范围极其广泛。
所以在今后的工作和学习生活中,综合运用模拟电子、数字电子和DSP基本原理等课程中所学的理论知识去独立完成一个项目的设计。
不仅要完善以上的MATLAB设计方法,
更要学会利用多种途径设计各种DSP最小系统,熟练C语言编程。
七、参考文献
[1]李真芳,苏涛等.DSP程序开发一MATLAB调试及直接目标代码生成「M].
西安:
西安电子科技大学出版社,2003.87一163.
[2]楼顺天,李博函.基于MATLAB的系统分析与设计一信号处理[M].西
安:
西安电子科技大学出版社,1998.81一88.
[3]王秀芳,关凌涛.基于MatLab与DSP的滤波器的快速设计方法[期刊文章].现代计算机,2008,总第二七七期:
97~99
八、附件:
源程序清单
汇编程序清单:
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=40000;%/采样Hz
N=1024%数据个数
T=1/fs;%采样周期
n=0:
N-1;
df=n*(fs/N)
%待滤波信号波形
xin=randn(1,1024)
figure
(1)
plot(xin)
%待滤波信号频谱
xinff=abs(fft(xin));
figure
(2)
plot(df,xinff)
%滤波后信号波形
y_filter_out=filter(B,1,xin)%Y=FILTER(B,A,X)
figure(3)
plot(y_filter_out)%滤波后信号频谱
yff=fft(y_filter_out);
figure(4)
plot(df,yff)
xin=xin/max(xin);%归一化
xto_ccs=round(32767*xin)%取整
fid=fopen('input1.dat','w');%打开文件
fprintf(fid,'16511000\n');%输出文件头
fprintf(fid,'%d\n',xto_ccs);%输出
fclose(fid);
C程序清单
lhm.h文件内容:
/*
*FilterCoefficients(CSource)generatedbytheFilterDesignandAnalysisTool
*
*GeneratedbyMATLAB(R)7.0.1andtheSignalProcessingToolbox6.2.1.
*
*Generatedon:
11-Dec-200910:
27:
37
*
*/
/*
*Discrete-TimeFIRFilter(real)
*-------------------------------
*FilterStructure:
Direct-FormFIR
*FilterOrder:
110
*Stable:
Yes
*LinearPhase:
Yes(Type1)
*/
/*GeneraltypeconversionforMATLABgeneratedC-code*/
#include"C:
\MATLAB701\extern\include\tmwtypes.h"
/*
*Expectedpathtotmwtypes.h
*C:
\MATLAB701\extern\include\tmwtypes.h
*/
/*
*Warning-Filtercoefficientsweretruncatedtofitspecifieddatatype.
*Theresultingresponsemaynotmatchgeneratedtheoreticalresponse.
*UsetheFilterDesign&Analys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 技术 课程设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)