基于DSP实现的FIR低通滤波器.docx
《基于DSP实现的FIR低通滤波器.docx》由会员分享,可在线阅读,更多相关《基于DSP实现的FIR低通滤波器.docx(9页珍藏版)》请在冰豆网上搜索。
基于DSP实现的FIR低通滤波器
DSP课程设计
题目:
基于DSP实现的FIR低通滤波器
院系:
电气信息学院
专业:
电子信息工程
姓名:
学号:
指导教师:
时间:
2015.7
目录
一、设计目标…………………………………………3
二、理论基础及编译环境介绍………………………3
1、CCS简介…………………………………………………………3
2、FIR滤波器简介…………………………………………………3
三、相应参数的计算、编写源程序以及调试过程……4
1、用MATLAB计算滤波系数………………………………………4
2、用MATLAB编写滤波器输入信号………………………………5
3、用CCS的Simulator进行滤波特性的测试……………………6
4、将文件添加到工程中……………………………………………6
四、实验结果及分析…………………………………10
一、设计目标;
设计一个FIR低通滤波器,其通带频率为5000Hz,采样频率为20000Hz,输入信号频率分别为2000Hz和8000Hz,通带波纹小于1db,阻带衰减大于40db。
FIR滤波器的设计可用MATLAB窗函数法进行。
二、理论基础及编译环境介绍:
1、CCS:
时TI公司推出针对TMS320系列DSP的集成开发环境,在CCS下,开发者可对软件进行编辑、编译、调试、代码性能测试(profile)和项目管理等所有工作,并能将程序下载到目标DSP上进行调试。
在一个开放式的插件(plug-in)结构下,CCS内部集成了一下软件工具:
(1)C5000代码产生工具(包括C5000的编码器、汇编器、汇编优先器和连接器);
(2)软件模拟器(simulator);
(3)实时软件基础DSP/BIOS;
(4)主机与目标机之间的实时数据减缓软件RTDX;
(5)实时分析(real-timeanalysis)和数据可现化(datavisualizationcapabilities)软件;
CCS不仅具有一系列的调试、分析能力,还提供了实时分析和数据可视化功能,大大降低了DSP系统的开发难度,使开发者将精力集中在应用开发上。
FIR滤波器:
2、FIR(FiniteImpulseResponse)滤波器:
有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
FIR滤波器有以下特点:
(1)系统的单位冲激响应h(n)在有限个n值处不为零
(2) 系统函数H(z)在|z|>0处收敛,极点全部在z=0处(因果系统)
(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N—1,则滤波器的系统函数为
H(z)=∑h(n)*z^-n
就是说,它有(N—1)阶极点在z=0处,有(N—1)个零点位于有限z平面的任何位置。
三、相应参数的计算、编写源程序以及调试过程
1、用MATLAB计算滤波系数
用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。
语法:
b=fir1(n,Wn)
b=fir1(n,Wn,’ftype’)
b=fir1(n,Wn,widow)
b=fir1(n,Wn,’ftype’,Window)
产生低通FIR滤波器系数其代码如下:
w1=5000/20000*2;
b=fir1(32,w,'lowpass');
fp=fopen('0125.inc','wt');
fprintf(fp,'.word%20.0f\n',b*32768);
fclose(fp);
其运行后生成inc文件,图像结果如图一所示:
(图一)低通滤波特性曲线
2、用MATLAB编写滤波器输入信号:
其代码如下:
i=0:
1:
255;
y=round((sin(2*pi*[i]*2000/20000)+sin(2*pi*[i]*8000/20000))*32768/2);
fid=fopen('0125.dat','wt');
fprintf(fid,'16512010\n');
fprintf(fid,'%d\n',y);
fclose(fid)
freqz(y,1,512)
其结果生产dat文件,图像如图二所示:
(图二)输入信号时域波形图
3、用CCS的Simulator进行滤波特性的测试:
3.1、设置CodeComposerStudio2.0在软件仿真(Simulator)方式下进行,选择TMS320C5400芯片,然后启动CCS。
3.2、创建新工程文件:
(1)在CCS下的安装目录myproject子目录下创建一个0125文件夹。
(2)在Project菜单中选择New项,在Project中输入0125,选择目标类型为TMS320C5400,CCS将创建一个名为0125.pjt的工程。
3.3、编辑程序:
编写程序,完成后保存时文件类型选择.asm,执行File/New/SourceFile建立新的程序文件,编辑程序为0125.asm和0125.cmd。
4、将文件添加到工程中:
4.1选择菜单“Project”的“AddFilestoProject…”项,在“AddFilestoproject”对话框中,一次添加0125.cmd文件、0125.asm文件等
其结果如图三所示:
(图三)工程文件添加程序文件图
4.2打开程序文件0125.asm如下,然后编译,编译成功后,设置断点和探针,如图四所示:
(图四)程序图
4.3设置工程文件(编译后出现警告错误):
选择菜单“Project”的“BuildOptions…”项,选择连接设置,单击“Linker”属性页,“AutoinitModel”项设置成“NoAutoinitialization”,“CodeEntryPoint”项中输入“start
”,退出设置窗口,单击确定,然后重新编译、汇编和链接。
如图五所示:
(图五)工程文件设置窗口
4.4数据的图形显示:
(1)选择菜单命令View/Graph/Time/Frequency,弹出GraphProperty对话框。
(2)在GraphProperty对话框中更改图形的标题、起始地址、缓冲区大小、显示数据大小、DSP数据类型、自动标尺属性及最大Y值。
(3)单击OK,出现Input窗口。
(4)在图形窗口中右击,从弹出的菜单中选择ClearDisplay,消除已有显示波形。
(5)自此执行菜单命令View/Graph/Time/Frequency
(6)这次将GraphTitle改为output,开始栏改为out_buffer,其他不变。
(7)单击OK按钮,出现一个显示output的波形的图形窗口,同样单击右键,从弹出的菜单中选择ClearDisplay,消除已有显示的波形。
(8)最后出现四个窗口,在Debug工具栏中单击run,可看到,两个不同频率的波经过模拟fir低通滤波器滤波,如图六所示:
(图六)低通滤波器信号输入及输出结果
四、实验结果及分析:
MATLAB辅助DSP 实现FIR ,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,再把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。
在这过程中,还是遇到了一部分的难题,比如说在程序的编写上,在用MATLAB来获得滤波系数和用它来编写产生输入信号的程序时,编写的程序有一点错误以致没有运行出结果来,在后面CCS环境下时,在添加文件已及设置时候也出了一点错,导致了滤波器不能正常工作,在经过同学和老师的帮助过后,终于得到了一个稳定清晰能够良好运行的低通滤波器,其结果如(图六)所示。
同过这一次的DSP课程设计,我更加深刻的了解到了跟多的关于对MATLAB的使用和对CCS的一些使用,最好感谢同学们和老师的帮助。