基于ccs环境的FIR数字滤波器仿真.docx

上传人:b****1 文档编号:2144159 上传时间:2023-05-02 格式:DOCX 页数:11 大小:191.45KB
下载 相关 举报
基于ccs环境的FIR数字滤波器仿真.docx_第1页
第1页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第2页
第2页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第3页
第3页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第4页
第4页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第5页
第5页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第6页
第6页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第7页
第7页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第8页
第8页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第9页
第9页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第10页
第10页 / 共11页
基于ccs环境的FIR数字滤波器仿真.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于ccs环境的FIR数字滤波器仿真.docx

《基于ccs环境的FIR数字滤波器仿真.docx》由会员分享,可在线阅读,更多相关《基于ccs环境的FIR数字滤波器仿真.docx(11页珍藏版)》请在冰点文库上搜索。

基于ccs环境的FIR数字滤波器仿真.docx

基于ccs环境的FIR数字滤波器仿真

分类号编号

华北水利水电学院

NorthChinaInstituteofWaterConservancyandHydroelectricPower

课程设计

题目基于ccs环境的FIR滤波器仿真

学院信息工程

专业通信工程

姓名

学号

指导教师

2010年12月30日

 

基于CCS环境的FIR滤波器仿真

摘要

本文介绍了数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,运用MATLAB语言实现了带通滤波器的设计以及用CCS软件进行滤波效果的观察。

读取语音文件,并加入一定的随机噪声,最后使用窗函数滤波法进行语音滤波,将加噪后的语音文件转换为.dat文件使其能和ccs软件链接,输出个阶段的时域和频域波形。

一、设计目的

利用汇编语言在CCS环境中设计一个80级的FIR带通滤波器,通带频率为1.375KHz至3.625KHz;阻带边界频率为1KHz和4KHz;采样频率为10KHz,并利用设计好的滤波器对常用信号进行滤波处理。

二、设计思想

1、FIR(FiniteImpulseResponse)滤波器原理:

有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件。

可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

FIR滤波器无反馈回路,是一种条件稳定系统,可以设计成具有线性相位特性。

设FIR滤波器的系数为h(0),h

(1),...,h(N-1),X(n)表示滤波器在n时刻的输入,则n时刻的输出为:

FIR数字滤波器的结构如图1所示:

 

2、使用Matlab中的Fdatool设计滤波器

在Matlab的Start菜单中选择Toolboxes->FilterDesign->FilterDesign&

AnalysisTools(fdatool),或者在命令行中输入fdatool来启动滤波器设计分析器。

调整各参数后得到设计的数字滤波器如下:

三、总体设计

1、从Matlab中导出FIR滤波器系数。

a.在Fdatool中,选择Targets->CodeComposerStudio(tm)IDE。

b.在出现的对话框中选择输出文件类型为Cheaderfile,输出系数类型为

signed16-bitinteger,如下图所示:

c.点击OK按钮,选择路径,即可输出前一步设计出的FIR滤波器的系数表,文件为fdacoefs.h,得到滤波器的参数如下:

constintBL=81;

constint16_TB[81]={

-16,0,-7,0,139,0,-223,0,17,

0,233,0,-14,0,-356,0,35,0,

532,0,-59,0,-790,0,85,0,1184,

0,-110,0,-1857,0,130,0,3334,0,

-143,0,-10382,0,16531,0,-10382,0,-143,

0,3334,0,130,0,-1857,0,-110,0,

1184,0,85,0,-790,0,-59,0,532,

0,35,0,-356,0,-14,0,233,0,

17,0,-223,0,139,0,-7,0,-16

};

2、待测信号设计

本实验设计一个采样频率Fs为10KHz,输入信号频率为0.5KHz、3KHz和8KHz的合成信号,通过设计的带通滤波器将0.5KHz和8KHz信号滤除,剩余其余信号。

为了方便的导入ccs环境,特用Matlab生成随机信号,并导出明为input的dat文件。

随机信号生成代码:

f11=500;%/Hz

f12=3000;%/Hz

f13=8000;%/Hz

fs=10000;%/采样Hz

N=1000%数据个数

T=1/fs;%采样周期

n=0:

N;

x11=sin(2*pi*f11*n*T);

x12=0.7*sin(2*pi*f12*n*T);

x13=0.5*sin(2*pi*f13*n*T);

x_base=(x11+x12+x13);

%待滤波信号波形

figure

(1)

plot(x_base)

%待滤波信号频谱

figure

(2)

yff=abs(fft(x_base))

df=n*(fs/N)

plot(df,yff)

xout=x_base/max(x_base);%归一化

xto_ccs=round(32767*xout)

fid=fopen('input.dat','w');%打开文件

fprintf(fid,'16511000\n');%输出文件头

fprintf(fid,'%d\n',xto_ccs);%输出

fclose(fid);

3、CCS环境程序设计

A、在CCS上建立FIR工程并将滤波器仿真程序FIR.c、Matlab导出的头文件fdacoefs.h和链接文件FIR.cmd添加到工程中,对程序进行调试、链接;调试无误后生成FIR.out程序。

FIR.c程序如下:

#include"stdio.h"

#include"fdacoefs.h"

//fdacoefs.h为Matlab生成的系数表头文件

#defineN81//FIR滤波器的级数+1,本例中滤波器级数为80

#defineLEN200//待滤波的数据长度

longyn;

intinput[LEN];//输入缓冲,在仿真时将从内存载入

intoutput[LEN];//输出缓冲,直接存放在内存中

voidmain()

{

inti,j;

int*x;

for(j=0;j

{

x=&input[j];

yn=0;

for(i=0;i

yn+=B[i]*(*x++);

output[j]=yn>>15;

}

while

(1);

}

FIR.cmd程序如下:

MEMORY

{

PAGE0:

EPROG:

origin=0x1400,len=0x7c00

VECT:

origin=0xff80,len=0x80

PAGE1:

USERREGS:

origin=0x60,len=0x1c

BIOSREGS:

origin=0x7c,len=0x4

IDATA:

origin=0x80,len=0x1380

EDATA:

origin=0x1400,len=0x8000

EDATA1:

origin=0x9400,len=0x4c00

}

SECTIONS

{

.vectors:

{}>VECTPAGE0

.sysregs:

{}>BIOSREGSPAGE1

.trcinit:

{}>EPROGPAGE0

.gblinit:

{}>EPROGPAGE0

frt:

{}>EPROGPAGE0

.text:

{}>EPROGPAGE0

.cinit:

{}>EPROGPAGE0

.pinit:

{}>EPROGPAGE0

.sysinit:

{}>EPROGPAGE0

.bss:

{}>IDATAPAGE1

.far:

{}>IDATAPAGE1

.const:

{}>IDATAPAGE1

.switch:

{}>IDATAPAGE1

.sysmem:

{}>IDATAPAGE1

.cio:

{}>IDATAPAGE1

.MEM$obj:

{}>IDATAPAGE1

.sysheap:

{}>IDATAPAGE1

.stack:

{}>IDATAPAGE1

}

B、装载FIR.out文件,把滤波器程序载入内存;装载之前生成的input.dat文件,将Address设置为input,Length设置为200,Page设置为Data。

C、运行程序,点击RUN按钮,程序即开始运行。

D、查看滤波器滤波效果。

打开View->Graph->Time/Frequency,修改参数设置如下:

点击OK,得到输入信号的时域波形:

E、重复前三个步骤,只改变图形选项中的DisplayType、GraphTitle、StartAddress,使之最后出现如下的图形:

左上角:

输入数据时域图(StartAddress:

input)

右上角:

输入数据频谱(DisplayType:

FFTMagnitude)

左下角:

输出数据时域图(StartAddress:

output)

右下角:

输出数据频谱(DisplayType:

FFTMagnitude)

四、总结

实践证明,该滤波器准确度搞、稳定性好,易于移植使用,具有较强的实用性与灵活性。

Matlab可方便地设计出FIR数字滤波器,并且修改系数方便。

DSP的可移植性好,所以能从不同方法得来滤波器系数,从而达到不同的滤波效果。

综合实验的各个方面以及实验中出现的问题,让我对DSP环境下滤波器设计这一课程设计有了全新而系统的认识:

对滤波器设计首先应该明确设计任务(目的),要了解自己究竟要设计什么,怎样设计,以及怎样解决实验中出现的问题,必须有一个明确的设计思路;其次,要掌握足够的理论知识,以踏实、严谨的态度对待,充分发挥创新精神,将自己的理论知识与实际设计情况相结合,做到理论联系实际,实际也不脱离理论,只有理论联系实际才能真正学到知识!

 

参考文献

[1]DSP原理及应用北京:

电子工业出版社,2005.1

[2]TMS320C54xDSP应用程序设计教程北京:

机械工业出版社,2004.1

[3]MATLAB在数字信号处理中的应用北京:

清华大学出版社,2003

[4]DSP系统设计与开发实例北京:

电子工业出版社,2004

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2