太原理工大学
DSP原理及应用
课程设计报告
专业班级:通信0802
姓 名:邢剑卿
学 号:2008001316
20xx年12月30日
一、设计目的
学会用ccs集成开发软件,在开发环境下完成工程项目创建,程序编辑,编译,链接,调试和数据分析。
二、设计内容
编写程序,利用ccs软件产生正弦波
三、设计原理
正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。
通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。
查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。
泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
本次主要用泰勒级数展开法来实现正弦波信号。
产生正弦波的算法
正弦函数和余弦函数可以展开成泰勒级数,其表达式:
取泰勒级数的前5项,得近似计算式:
x3x5x7x9 sin(x)?x???? 3!5!7!9!
x2x2x2x2
?x1?1?1?1? 2?34?56?78?92468 xxxxcos(x)?1???? 2!4!6!8!
x2x2x2x2
?1?1?1?1? 23?45?67?8 x3x5x7x9sin(x)?x??????3!25!47!69!8xxxxcos(x)?1??????2!4!6!8!(((())))((()))
递推公式:
sin(nx) = 2cos(x)sin[(n-1)x]-sin[(n-2)x]
cos(nx) = 2cos(x)sin[(n-1)x]-cos[(n-2)x]
由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x)、sin(n-1)x、sin(n-2)x和cos(n-2)x。
四、总体方案设计
(1)建立工程:点击菜单project-new,在弹出的窗口中输入工程名,后缀是.pjt;
(2)建立文件:点击菜单file-new-source file,建立汇编语言文件和链接命令
文件;
(3)将文件加入工程:点击菜单project-add files to project,选择要加入的文件添加到工程;
(4)工程的汇编链接:点击菜单project-rebuild all,若汇编链接成功会生成.out文件;
(5)装载可执行程序:点击菜单file-load program,装载.out文件;
(6)执行程序:点击菜单debug-run;
(7)观察结果。
注意事项:
(1)标号区分大小写,标号从第一列开始;
(2)星号(*)从第一列开始;
(3)指令助记符不能从第一列开始;
(4) MEMORY和SECTIONS要大写;
(5)在链接命令文件中解释说明用符号/* */;
(6)PAGE与0或与1之间要有空格。
五、主要参数
(1)sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))
(2)cos(theta)=1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9)))
(3)sin(2*theta)=2*sin(theta)*cos(theta)
六、设计源程序代码
正弦波形的汇编程序
.title "sinx.asm"
.mmregs
.def _c_int00
.ref d_xs,d_sinx,d_xc,d_cosx
sin_x: .usect "sin_x",360
STACK: .usect "STACK",10
k_theta .set 286
PA0 .set 0
_c_int00: .text
STM #STACK+10,SP
STM #0,AR1
STM k_theta,AR0
STM #sin_x,AR7
STM #90,BRC
RPTB loop1-1
LDM AR1,A
LD #d_xs,DP
STL A,@d_xs
STL A,@d_xc
CALL sin_start
CALL cos_start
LD #d_sinx,DP LD @d_sinx,16,A MPYA @d_cosx STH B,1,*AR7+ MAR *AR1+0
loop1: STM #sin_x+89,AR6 STM #88,BRC RPTB loop2-1 LD *AR6-,A STL A,*AR7+ loop2: STM #179,BRC STM #sin_x,AR6 RPTB loop3-1 LD *AR6+,A NEG A
STL A,*AR7+ loop3: NOP
end: B end
sin_start:
.def sin_start d_coef_s .usect "coef_s",4 .data
table_s: .word 01C7H .word 030BH .word 0666H .word 1556H
d_xs .usect "sin_vars",1 d_squr_xs .usect "sin_vars",1 d_temp_s .usect "sin_vars",1 d_sinx .usect "sin_vars",1 c_1_s .usect "sin_vars",1 .text
SSBX FRCT
STM #d_coef_s,AR4 RPT #3
MVPD #table_s,*AR4+ STM #d_coef_s,AR2 STM #d_xs,AR3 STM #c_1_s,AR5 ST #7FFFH,c_1_s SQUR *AR3+,A ST A,*AR3 ||LD *AR5,B
MASR *AR3+,*AR2+,B,A
MPYA A
STH A,*AR3
MASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3 ||LD *AR5,B
MASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3+ ||LD *AR5,B
MASR *AR3-,*AR2+,B,A MPYA d_xs
STH B,d_sinx RET
cos_start:
.def cos_start d_coef_c .usect "coef_c",4 .data
table_c: .word 0249H .word 0444H .word 0AABH .word 4000H
d_xc .usect "cos_vars",1 d_squr_xc .usect "cos_vars",1 d_temp_c .usect "cos_vars",1 d_cosx .usect "cos_vars",1 c_1_c .usect "cos_vars",1 .text
SSBX FRCT
STM #d_coef_c,AR4 RPT #3
MVPD #table_c,*AR4+ STM #d_coef_c,AR2 STM #d_xc,AR3 STM #c_1_c,AR5 ST #7FFFH,c_1_c SQUR *AR3+,A ST A,*AR3 ||LD *AR5,B
MASR *AR3+,*AR2+,B,A MPYA A
STH A,*AR3
MASR *AR3-,*AR2+,B,A MPYA *AR3+
ST B,*AR3
||LD *AR5,B
MASR *AR3-,*AR2+,B,A
SFTA A,-1,A
NEG A
MPYA *AR3+
MAR *AR3+
RETD
ADD *AR5,16,B
STH B,*AR3
RET
.end
正弦波形的链接程序
MEMORY
{
PAGE 0:
EPROM: org=0E000H,len=1000H
VECS: org=0FF80H,len=0080H
PAGE 1:
SPRAM: org=0060H,len=0020H
DARAM1: org=0080H,len=0010H
DARAM2: org=0090H,len=0010H
DARAM3: org=0200H,len=0200H
}
SECTIONS
{ .text :> EPROM PAGE 0
.data :> EPROM PAGE 0
STACK :> SPRAM PAGE 1
sin_vars :> DARAM1 PAGE 1
coef_s :> DARAM1 PAGE 1
cos_vars :> DARAM1 PAGE 1
coef_c :> DARAM2 PAGE 1
sin_x : align(512){}> DARAM3 PAGE 1 .vetors :> VECS PAGE 0
}
复位向量文件vectors.asm
.title "vectors.asm"
.ref _c_int00
.sect ".vectors"
B _c_int00
.end
七、实验结果及分析
.仿真波形图
在ccs集成环境中实现正弦波能够起到防止干扰的作用,同时也大大地减小了波形的线性失真。同时我们也能从中看出ccs能够精确地对各个角度进行计算得出相应的正弦值,幅度和频率易于调节,波形也较为稳定,抗干扰能力较强。 最重要的是这种设计方案简单可行,新颖实用,具有很高的实践和推广价值。
八、设计总结
在本次课程设计过程中我遇到一些课堂中从未有过的问题,通过网络查找和同学交流,大大促进了实训进程。并在过程中进一步提高自身的创作、创新水平,扎实基础,扩展所学。
课设过程中经常遇到问题,而在场的老师为各位同学提供了解答方案;辅助同学攻克了实训中的难点。同时也会请老师指点不足之处,以加以改进,完善作品。并且此次课程设计,基于课程理论知识和网上资料,使我对数字信号处理课程有了更深一步的了解和掌握,对利用CCS软件编程的数字信号处理方法有了进一步的了解。在理论课的基础上进行实验实习,是对本门课程的深入学习和掌握,在以后的工作学习中,数字信号的处理都是采用计算机仿真的方很大的帮助。这样一个课程设计对我们的发展有着极大的帮助!
语音信号滤波去噪——使用脉冲响应不变
法设计的巴特沃斯滤波器
摘 要 本课程设计主要运用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。
关键词 课程设计;滤波去噪;巴特沃斯滤波器;脉冲响应不变法;MATLAB
1 引 言
本课程设计主要利用麦克风采集一段8000Hz,8k的单声道语音信号,并绘制波形观察其频谱,再用MATLAB利用脉冲响应不变法设计一个巴特沃斯滤波器,将该语音信号进行滤波去噪处理。
1.1 课程设计目的
《数字信号处理》课程设计是在学生完成数字信号处理和MATLAB的结合后的基本实验以后开设的。本课程设计的目的是为了让学生综合数字信号处理和MATLAB并实现一个较为完整的小型滤波系统。这一点与验证性的基本实验有本质性的区别。开设课程设计环节的主要目的是通过系统设计、软件仿真、程序安排与调试、写实习报告等步骤,使学生初步掌握工程设计的具体步骤和方法,提高分析问题和解决问题的能力,提高实际应用水平。
1.2 课程设计的要求
(1)滤波器指标必须符合工程设计。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告。
2 设计原理
用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。
2.1 IIR滤波器
2.2 巴特沃斯滤波器
2.3 脉冲响应不变法
3.设计步骤
3.1设计流程图
语音信号滤波去噪——使用脉冲不变响应法设计的巴特沃斯滤波器的设计流程如图3.1所示:
图3.1 脉冲响应不变法巴特沃斯滤波器对语音信号去噪流程图
3.2语言信号的采集
利用PC 机上的录音软件进行采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“大萝卜”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“speech”保存入g :\ MATLAB \ work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。然后,通过文件中的属性,将此录音转换成8000Hz,8k的单声道语音信号。
图3.2 语音信号设置
3.3语音信号的频谱分析
利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。
[y,fs,nbits]=wavread(file)
功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。 接下来,对语音信号speech.wav进行采样。其程序如下:
[y,fs,nbits]=wavered (‘speech.wav’);
然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
Xk=fft(xn,N)
域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下:
[y,fs,nbits]=wavread('44.wav');
n=length(y);
Y=fft(y,n);
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱');
图3.3 时域波形
图3.4 频域幅度谱
图3.5 频域幅度谱和相位谱
3.4滤波器设计
将数字滤波器的设计指标设为通带截止频率fb=1100HZ,阻带频率fc=1200HZ,通带波纹Ap=1dB,阻带波纹As=20dB,要求确定H(z)。设计步骤如下:
(1)确定所需类型数字滤波器的技术指标。
(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)
(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。
(4)设计模拟低通滤波器。
(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。
(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。
程序:
Fp=1200;%阻带截止频率
Fs=1100;%通带截止频率
Ft=8000;%采集频率
As=20;%通带波纹Ap=1
Ap=1;%阻带波纹As=20
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Ft*tan(ws/2);
[n,wn]=buttord(wp,ws,Ap,As,'s'); %求低通滤波器的阶数和截止频率
[b,a]=butter(n,wn,'s'); %求S域的频率响应的参数
[num,den]=bilinear(b,a,1); %双线性变换实现S域到Z域的变换
[h,w]=freqz(num,den); %根据参数求出频率响应
plot(w*fs/(2*pi),abs(h));
grid;
xlabel('频率/Hz');
ylabel('频率响应幅度');
title('IIR低通滤波器');
legend('用butter设计');
图3.6 利用脉冲响应不变法设计的数字巴特沃斯滤波器(w(单位:错误!未找到引用
源。))
3.5 信号滤波信号
图3.7 滤波前后的时域对比波形
滤波前后频域频谱图3.8所示
图3.8 滤波前后频域频谱图
图3.9 滤波前后相位图
3.5 结果分析
4.出现的问题及解决方法
在这次的课程设计中我们设计的滤波器对语音信号的滤噪处理或多或少会因为我们的疏忽或者实践能力不够还是会遇到问题的,当遇到问题时我们不但运用自己学到的知识还得到同学和老师的帮助将其解决,不断完善和修改。设计中出现的问题及解决方法如下:
(1)设计的滤波器达不到要求,因为在采集语音信号时,录音机的音频格式应该是PCM 8000kHz,8位,单声道。
(2)在运用Matlab设计滤波器时,当编辑完前面两条程序时无法放出声音,后来发现我们应当把采集的语音信号wav文件放到Matlab的work文件夹中。
(3)还要在滤波器性能曲线的wc处画一根竖线,这样更方便看出结果,其中wc处线的确定还需计算出wb/pi的值。
(4)所有的时间波形横坐标都要化为时间,滤波前后频谱的横坐标应是频率,这样在观察通带截止频率和阻带截止频率时更加精确,误差较小。
5.结束语
参考文献
[1] 张圣勤 MATLAB7.0实用教程 北京:机械工程出版社 20xx年3月
[2] 维纳·K·英格尔 约翰·G·普罗克斯(著) 刘树棠(译) 数字信号处理(MATLAB版) 西安:西安交通大学出版社 20xx年1月
1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是…
一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3…
中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名10003…
信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年…
扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题…
一绪论数字图像处理DigitalImageProcessing是指将图像信号转换成数字信号并利用计算机对其进行处理的过程图像处理中…
课程设计总结报告课程名称DSP控制器及其应用设计题目专业电子信息工程班级姓名学号指导教师报告成绩信息工程学院二一四年六月十三日目录…
科信学院课程设计说明书(2008/20XX学年第二学期)课程名称:DSP控制器及其应用题目:DSP通用管脚控制LCD公告牌的文字显…
一、课程设计的目的和要求1.1课程设计目的:本课程是DSP技术类课程配套的课程设计,要求学生通过高级语言或汇编语言编程实现较复杂的…
DSP课程设计总结(20##-20##学年第2学期)题目:数据采集处理和控制系统设计班级:电子091班学生姓名:学号:指导教师:2…