DSP设计报告.docx

上传人:b****5 文档编号:29929977 上传时间:2023-08-03 格式:DOCX 页数:13 大小:167.34KB
下载 相关 举报
DSP设计报告.docx_第1页
第1页 / 共13页
DSP设计报告.docx_第2页
第2页 / 共13页
DSP设计报告.docx_第3页
第3页 / 共13页
DSP设计报告.docx_第4页
第4页 / 共13页
DSP设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

DSP设计报告.docx

《DSP设计报告.docx》由会员分享,可在线阅读,更多相关《DSP设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

DSP设计报告.docx

DSP设计报告

DSP技术及应用

课程设计报告

 

学生姓名

汪宥男

学 号

0807040207

教学院系

电气信息工程学院

专业年级

电信08级

指导教师

曹玉英

 

完成日期

 

2012

 

 

1

 

 

12

 

目录

一、设计题目2

FIR滤波器设计2

二、设计目的3

三、设计任务3

3.2任务简介3

四、设计原理3

4.1FIR的原理和参数生成公式3

4.2用MATLAB计算滤波系数4

4.3程序的自编函数及其功能4

五、设计方案5

六、设计结果7

七、设计结论8

附录:

9

输入低通滤波信号代码:

9

滤波系数程序代码:

9

滤波源程序:

9

FIR.cmd程序:

12

一、设计题目

FIR滤波器设计

二、设计目的

⑴掌握用窗函数法设计FIR数字滤波器的原理和方法。

⑵熟悉线性相位FIR数字滤波器特性。

⑶了解各种窗函数对滤波器特性的影响。

三、设计任务

3.1任务要求

设计一个FIR低通(或高通、带通)滤波器。

此次选择运用MATLAB窗函数法进行设计FIR低通滤波器。

要求:

(1)通带边界频率为1500Hz,通带波纹小于1dB;

(2)阻带边界频率为2000Hz,阻带衰减大于40dB;

(3)采样频率为8000Hz。

3.2任务简介

FIR(FiniteImpulseResponse)滤波器:

有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

有限长单位冲激响应(FIR)滤波器有以下特点:

  

(1)系统的单位冲激响应h(n)在有限个n值处不为零 

(2)系统函数H(z)在|z|>0处收敛,极点全部在z=0处(因果系统)  

(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。

  

四、设计原理

4.1FIR的原理和参数生成公式

N阶有限冲激响应滤波器(FIR)公式:

N/2-1

y(n)=∑h(k)[x(n-k)+(n-(N-1+K))]N=0,1,2,3......

K=0

FIR设计原理:

根据系数h是偶对称为了简化运算产生如下计算方法

如果一个FIR滤波有一个冲激响应,h(0),h

(1),...,h(N-1),和x(n)描绘输入的时常滤波n,输出滤波y(n)的n给出以下方程式:

Y(n)=h(0)+h

(1)x(n-1)+h

(2)x(n-2)+...+h(N-1)x[n-(n-1)]

4.2用MATLAB计算滤波系数

用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。

语法:

b=fir1(n,Wn)

b=fir1(n,Wn,'ftype')

b=fir1(n,Wn,Window)

b=fir1(n,Wn,'ftype',Window)

n:

滤波器的阶数;Wn:

滤波器的截止频率;

ftype:

用来决定滤波器的类型,

当ftype=high时,可设计高通滤波器;

当ftype=stop时,可设计带阻滤波器。

Window:

用来指定滤波器采用的窗函数类型,其默认值为汉明(hamming)窗。

采用汉明窗设计低通FIR滤波器

使用b=fir1(n,Wn)可得到低通滤波。

0≤Wn≤1,Wn=1相当于0.5fs。

格式:

b=fir1(n,Wn)

例如:

设计一个FIR低通滤波器,通带便捷频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率为8000Hz。

FIR滤波器的设计可以用MATLAB窗函数法设计。

如选择Hamming窗,则程序为:

b=fir1(16,1500/8000*2);即可算出滤波系数。

4.3程序的自编函数及其功能

(1).globalstart,fir设定全局变量。

(2)COFF_FIR_START:

.sect"coff_fir"

Include"lowpass.inc"(设定系数文件)

提示:

“lowpass.inc”提供低通系数(用MATLAB计算得出)。

(3)K_FIR_BFFR.set32(滤波阶数)

(4)d_filin(存放输入波形)

(5)d_filout(存放输出波形)

(6)指定寄存器:

指定AR4为FIR_DATA_P数据寄存器。

指定AR6为INBUF_P输入数据寄存器。

指定AR7为OUTBUF_P输出数据寄存器。

(7)汇编程序部分说明:

Start部分:

程序初始化部分指定寄存器,清空寄存器。

fir_loop部分:

循环调入输入数据,并调用子程序fir进行计算。

main_end部分:

跳转至循环部分。

fir部分:

子程序部分。

其中fir_task部分:

进行计算并返回计算结果。

五、设计方案

5.1设计设备

计算机,ICETEK-VC5416-EDU实验箱(或ICETEK仿真器+ICETEK-VC5416-A系统板+相关连线及电源)。

5.2设计步骤

⑴设计准备

运用MATLAB建立工程“lowpass”生成一个.INC文件(滤波系数);

再建立一个新工程“dtinput”生成.DAT文件(滤波器输入低通信号)。

将“LabFIR”文件夹中子文件夹“lowpass”中的所有内容清除,并将之前生成的.INC文件和.DAT文件放入。

导入工程文件,工程目录为D:

\ti\myproject中新建一个文件夹命名为“wangyounan”,

再将LABFIR中的所有文件放入"wangyounan"中。

⑵启动“CodeComposerStudioSetup”,在“ImportConfiguration”对话框中单击“clear”按钮,消除原系统设置。

在“AvailableConfigurations”列表中选择C5402Simulator,关闭窗口,重启CCS。

⑶编译并下载程序。

⑷打开观察窗口

选择菜单“view”“Graph”“Time/Frequency...”进行如下设置:

地址分别为input和output,

buffersize:

1,

displaydatasize:

200,

samplingrate:

8000,

dspdatatype选择16位。

在弹出的图形窗口中单击鼠标右键,选择“cleardisplay”。

⑸设置断点和探点

在标号“fir_loop”下面的“NOP”语句设置软件断点和探针。

选择菜单“fileI/O”;加载之前“lowpass”文件夹中的.DAT文件,并在“adress”中输入d_filin,在“length”中输入1;在“warparound”项前面加上选中符号;

单击“probepoint”列表中的“FIR.asmline38”行;在“connect”项选择“FILEIN:

D:

\..\dtinput.dat”;单击“replace”。

⑹运行并观察结果

1.选择“debug”菜单的“animate”项,或按F12键运行程序。

2.观察“input”、“output”窗口中时域图形;观察滤波效果。

3.设置“input”、“output”的时域图形窗口为频域窗口,即设置“displaytype”为“FFTmagitude”。

4.按F12运行程序。

5.观察“input”、“output”窗口中频域图形;理解滤波效果。

⑺停止程序运行并退出。

六、设计结果

此图四个窗口,分别是“input”和“output”的时域与频域窗口。

窗口一:

输入信号的时域波形

此信号由三个信号叠加而成,一个为900赫兹,一个为2200赫兹,一个为3000赫兹;

窗口二:

输入信号的频域波形

可以看到,信号的能量都集中于900赫兹,2200赫兹,3000赫兹附近,从另一个侧面证明了输入信号的正确性。

窗口三:

输出信号的时域波形

滤波之后,波形规律性强,可以看出,滤波的效果。

窗口四:

输出信号的频域波形

从结果看,低频信号(900赫兹)顺利通过滤波器,而高频信号(2200赫兹和3000赫兹)不能顺利通过滤波器,受到了削减。

七、设计结论

本次设计,我选择的是低通滤波器,运用MATLAB作为辅助工具,设计中我选择了三个信号相叠加,通过滤波器实现低频信号通过,高频信号滤除的功能。

根据DSP教材、实验指导书、DSP参考书、期刊、网上资源等完成滤波系数的计算,编写产生滤波器输入信号的源程序、FIR数字滤波器的汇编源程序,以及调试验证工作。

最终,成功滤除2200赫兹和3000赫兹的两个高频信号。

八、设计心得

其实这次设计并没有想象中的难,运用的只是也是平时上课时老师讲过的东西,实验课上也验证过滤波器的特性,所以总的来说,这次设计还是比较顺利的。

在平时的实验课上积累了一些经验,再结合设计指导,一步一步的进行设计。

先将程序通过MATLAB生成可加载的.dat和.inc文件,再运行CCS加载编译程序,实现了滤波器的设计。

在此过程中也出现了一些小问题,第一次运行程序后,显示结果并不如意,虽然有一定的滤波效果,但不能完全滤除高频信号,左右也没查出怎么回事,最终我将程序代码重新加载,编译,最终运行,才将问题解决。

高频信号最终也能完全滤除,毛刺也消除了。

其实在总体设计过程中,一定要清晰。

通过这次对滤波器的设计,让我了解FIR滤波器设计的基本步骤,也让我了解了关于滤波器的原理与设计理念。

因为,在实践接线中有各种各样的条件制约着。

经过这次学习,让我对各种电路都有了更深的了解,所以说,坐而言不如立而行,虽然滤波器设计很简单,还是应该自己动手实际操作才会有深刻理解。

更要熟悉每个步骤实现的功能。

这样才能很好的利用来实现特定的功能。

通过本次设计实验对DSP技术知识有了更深入的了解,将其运用到了实际中来,明白了学习DSP技术的意义,也达到了其培养的目的。

在实验中,我也遇到一些小问题无法理解,不过我都一一克服了,通过努力解决了问题,使我明白了和他人共同合作的重要性。

在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中,成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁、甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。

 

附录:

输入低通滤波信号代码:

closeall;

clearall;

clc

y=round(fir1(32,1600/8000*2)*32768);

fid=fopen('lowpass.inc','w');

fprintf(fid,'.word%d\n',y);

fclose(fid);

滤波系数程序代码:

closeall;

clearall;

clc

i=0:

1:

255;

y=((sin(2*pi*[i]*900/8000)+sin(2*pi*[i]*2200/8000)+sin(2*pi*[i]*3000/8000))*32768/3);

fid=fopen('dtinput.dat','w');

fprintf(fid,'16512010\n');

fprintf(fid,'%d\n',y);

fclose(fid);

滤波源程序:

;HIGHPASS.set0;ifyouwanttouse,pleasesetthevalueto1

;BANDPASS.set0

LOWPASS.set1

.globalstart,fir

.mmregs

COFF_FIR_START:

.sect"coff_fir"

.include"lowpass\\lowpass.inc"

K_FIR_BFFR.set32

d_data_buffer.usect"fir_bfr",64

FIR_DP.usect"fir_vars",0

d_filin.usect"fir_vars",1

output.usect"fir_vars",1

input.usect"fir_vars",1

d_filout.usect"fir_vars",100h

stacksize.set256

stack.usect"fir_vars",stacksize

.asgAR4,FIR_DATA_P

.asgAR6,INBUF_P

.asgAR7,OUTBUF_P

.asgAR3,OUTBUF

.asgAR2,INBUF

.sect"fir_prog"

nop

start:

stm#stack+stacksize,SP

LD#FIR_DP,DP

STM#d_data_buffer,FIR_DATA_P

RPTZA,#K_FIR_BFFR-1

STLA,*FIR_DATA_P+

STM#d_filin,INBUF_P

STM#d_filout,OUTBUF_P

STM#output,OUTBUF

STM#input,INBUF

STM#100h,BK

fir_loop:

NOP;AddBreakpoint&porbepoint

LD*INBUF_P,A

STLA,*INBUF

CALLfir

STHA,*OUTBUF_P+%

STHA,*OUTBUF

main_end:

bfir_loop

fir:

;SSBXSXM

;SSBXFRCT

STM#d_data_buffer,FIR_DATA_P

STLA,*FIR_DATA_P

STM#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P

fir_task:

RPTZA,#K_FIR_BFFR-1

MACD*FIR_DATA_P-,COFF_FIR_START,A

RET

.end

FIR.cmd程序:

MEMORY

{

PAGE0:

PROG:

o=100h,l=2000h

PAGE1:

DATA1:

o=2600h,l=1000h

DATA2:

o=2100h,l=100h

DATA3:

o=2200h,l=100h

DATA4:

o=2300h,l=100h

DATA5:

o=2400h,l=100h

DATA6:

o=2500h,l=100h

}

SECTIONS

{

coff_fir:

{}>PROGPAGE0

fir_prog:

{}>PROGPAGE0

fir_vars:

{}>DATA1PAGE1

fir_coff:

{}>DATA2PAGE1

fir_bfr:

{}>DATA3PAGE1

 

}

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

当前位置:首页 > IT计算机 > 互联网

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

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