DSP课程设计-FIR滤波器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP课程设计报告
题目:FIR滤波器设计
学院:电气信息学院
专业:通信工程
姓名:
学号:
指导老师:曹玉英
一、设计目标
设计一个FIR高通滤波器,通带边界频率为2khz,
通带纹波小于1dB,采样
频率为8khz,实现当多个频率的输入信号输入时只保留大于2khz的信号功能,
其中FIR滤波器的设计可以用MATLAB窗函数法进行。
二、算法研究
1. FIR的原理和参数生成公式
FIR数字滤波器是非递归性的线性时不变因果系统,这样的系统的差分方程
可以表示为:
令输入信号x(n)=δ(n),代入式,有
=a
δ(n)+a
1
δ(n-1)+···+a
n-1
δ[n-(N-1)]
这时的y(n)即为冲激响应h(n)。由式很容易得到
h(0)=a
,h(1)=a
1
, ···,h(N-1)=a
n-1
;
又由式可知,当n<0以及n>N-1时,h(n)=0,即这个系统的冲激响应是有限
长度的,这样的滤波器就叫做有限冲激响应(FIR)滤波器。
将a
i
=h(i)(i=0,1, ···,N-1)代入式,得到
将式的两边进行z变换后,可以得到FIR滤波器的系统函数:
又由式,有
因此,FIR滤波器的系统函数H(z)的极点都位于z=0处,为N-1阶极点;而
N-1个零点由冲激响应h(n)决定,一般来说,可以位于有限z平面的任何位置。
由于FIR数字滤波器的极点都集中在单位圆内的原点z=0处,与系数h(n)
无关,因此FIR滤波器总是稳定的,这是FIR数字系统的一大优点。
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:用来指定滤波器采用的窗函数类型,其默认值为汉明窗。
3.编写产生滤波器输入信号的程序
输入信号应该至少包含两种频率成分的正弦信号,一种信号频率小于2000hz,一种信号频率大于2000hz。可以再MATLAB中产生,也可编写DSP程序产生。
三、开发平台
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
CCS(C ode Composer Studio)是TI公司推出的针对TMS320系列DSP的集成开发环境。在CCS下,开发者可对软件进行编辑,编译,调试,代码性能测试和项目管理等所有工作,并能将程序下载到目标DSP上运行调试。
在一个开放式的插件结构下,CCS内部集成了以下软件工具:
1)C5000代码产生工具(包括C5000的编译器,汇编优化器,汇编器和连接器);
2)软件模拟器(Simulator);
3)实时基础软件DSP/BIOS TM ;
4)主机与目标机之间的实时数据交换软件RTDX TM;
5)实时分析和数据可视化软件;
CCS不仅具有一系列的调试、分析能力,还提供了实时分析和数据可视化功能,大大降低了DSP系统的开发难度,使开发者可以将精力集中在应用开发上。
四、参数计算
1.利用MATLAB计算滤波系数
利用MATLAB中的FDATOOL设计滤波器参数设置如图4-1,频域波形如图4-2。
其中FDATool(Filter Design and Analysis Tool)是MATLAB信号处理工具箱的一种综合、简便的图形用户工具。通过该工具提供的先进可视化滤波器集成设计环境,用户可以方便地设计几乎所有的常规滤波器,包括FIR和IIR的各种设计方法。本次设计利用高通滤波器,选择最小滤波器阶次,采样频率Fs为8Khz,阻带边界频率为1800hz,通带频率设置为2000hz。参数设置完成后,点击design filter,即可生成如下滤波器的时域与频域图像。
图4-1 FDATOOL生成滤波系数
图4-2 设计滤波器的频域波形
选择Targets中的Code composer studio(r)IDE,如图4-3示,在出现的对话框中选择输出文件类型为 C header file,输出系数类型为signed 16-bit integer。点击OK,选择路径,即可输出前一步设计出的FIR滤波器的系数表。
图4-3 生成滤波器系数表文件
2.利用MATLAB生成输入信号
假设输入信号包括两种频率成分,其中一个信号频率设置为800hz,另一个设置为2500hz,用MATLAB产生,代码如下:
i=0:1:255;
xto_ccs=round((sin(2*pi*[i]*800/8000)+sin(2*pi*[i]*2500/8000))*32 768/2)
fid=fopen('','w');%打开文件
fprintf(fid,'1651 1 0 0 0\n');%输出文件头
fprintf(fid,'%d\n',xto_ccs);%输出
fclose(fid);