FIR数字滤波器的MATLAB设计与基于TMS320F2812_DSP处理器的与实现精品资料.doc
《FIR数字滤波器的MATLAB设计与基于TMS320F2812_DSP处理器的与实现精品资料.doc》由会员分享,可在线阅读,更多相关《FIR数字滤波器的MATLAB设计与基于TMS320F2812_DSP处理器的与实现精品资料.doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 郑州航空工业管理学院 电子通信工程系DSP原理及应用课程设计报告设计题目:基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现学号: 0913082305 专业: 电子信息工程 设计日期: 2012 . 6 . 14 指导老师: 赵 成 闫利超 一、引言4二、 设计目的4三、设计要求5四、 总体设计64.1利用Matlab软件的FDATool工具设计FIR滤波器64.1.1有限冲击响应数字滤波器的基础理论64.1.2 利用Matlab软件的FDATool设计FIR滤波器74.1.3提取滤波器参数124.2 CCS环境下FIR滤波器的设计及软件仿真134.2.1 程序流程图134
2、.2.2 在CCS集成开发环境下新建FIR滤波器工程134.2.3观察滤波前后的信号的时域波形及FFT Magnitude波形144.2.4 程序清单164.3 对实时采样信号进行滤波的FIR滤波器的实现184.3.1 程序清单184.3.2 测试效果224.3.3 SCI串行数据传输22五、 总结27六、参考文献28一、引言随着信息和数字技术的发展,数字信号处理已成为当今极其重要的学科和技术领域之一。它在通信、语音、图像、雷达、军事、航空航天等众多领域得到了广泛的应用。在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。其中,滤波是应用非常广泛的一个环节,
3、数字滤波器的理论与相关设计也一直都是人们研究的重点之一。数字滤波器根据其冲激响应函数的时域特性,可分为无限长冲激响应(I-IR)滤波器和有限长冲激响应(FIR )滤波器。其中FIR滤波器具有严格的相位特性,同时系统函数的极点固定在原点上,因而该类型的滤波器是稳定的。FIR滤波器的设计方法主要有窗函数法、频率取样法和最优线性相位设计法。其中窗函数设计方法由于其运算简便、物理意义直观,已成为工程实际中应用最广泛的方法,本文从FIR数字滤波器的原理与基本设计步骤出发,对FIR数字滤波器在MATLAB中的仿真与设计的基本思路做了阐述,并在定点DSP上实现了满足要求的FIR滤波器。二、 设计目的 (1)
4、掌握用窗函数法设计FIR滤波器的原理及方法,熟悉线性纤维FIR滤波器的幅频特性和相频特性,熟悉不同的窗函数对滤波器性能的影响。(2) 掌握使用matlab编程的基本方法,学会利用fdatool 工具来快速设计满足需要的滤波器。(3) 掌握TMS320F2812 DSP处理器开发的程序框架结构,学习驱动TMS320F2812 DSP处理器程序编写并能使其正常工作。实习驱动ADC模块实现信号的实时采集与模数转换。(4) 掌握使用TMS320F2812 DSP处理器实现FIR数字低通滤波器的设计方法,并能够实时采集输入信号并滤除高频信号再通过SCI串口传输到计算机显示。三、设计要求1、利用Matla
5、b软件的FDATool工具设计FIR滤波器,并提取滤波器参数;2、在CCS集成开发环境下,利用第1步得到的滤波器参数,利用窗函数法设计FIR滤波器程序,观察输入信号及滤波后得到的输出信号的时域波形及FFT Magnitude波形;3、利用TMS320F2812的ADC片内外设的外围电路实时采集的混频信号数据,使用1个51阶的FIR低通滤波器,在CCS中设计FIR滤波器程序实现滤波,观察相关波形及滤波效果,通过SCI接口将数据传送到计算机上;4、(选做)利用TI公司的TLV320AIC23高性能立体声音频Codec芯片,通过MIC或音频接口采样音频信号,对采样的音频信号做滤波运算,进行低音加重处
6、理,再将运算过的音频数据通过扬声器播放出来。四、 总体设计 MATLAB是一套用于科学计算的可视化高性能语言与软州环境。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户坏境。它的信号处理具箱包含了各种经典的和现代的数字信号处理技术,是个非常优秀的算法研究与辅助设备的工具。在设计数字滤波器时,通常采用MATLAB未进行辅助设计和仿真。 利用MATLAB信号处理工具箱进行数字滤波器设计总的来说有三种方法:程序设计法、FDATool设计法和SPTool设计法。程序设计法是由设计者通过编写程序,利用MATLAB信号处理工具箱提供的各种窗函数、滤波器设计函数和滤波器实现函数来完
7、成滤波器的设计,要求设计者熟悉工具箱的各种函数,具有一定的编程能力,对于初学者有一点困难;而FDATool设计法和SPTool设计法相对比较简单,FDATooI工具箱和SPTool工具箱具有交互式的友好设计界面,只要填入设计参数点击按钮,相应的滤波器就设计完成了,使用起来非常方便。下面将使用FDATool设计法的FIR滤波器设计。4.1利用Matlab软件的FDATool工具设计FIR滤波器4.1.1有限冲击响应数字滤波器的基础理论滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号。滤波器的设计实质上就是对提出的要求给出相应的性能指
8、标,再通过计算,使物理可实现的实际滤波器频率响应特性逼近给出的频率响应特性。FIR 数字滤波器系统的传递函数为: (1)由此得到系统的差分方程: (2)若FIR 数字滤波器的单位冲激响应序列为h(n),它就是滤波器系数向量b(n)。传统的滤波器分析与设计均使用繁琐的公式计算,改变参数后需要重新运算,从而在分析与设计滤波器尤其是高阶滤波器时工作量特别大。这里应用MATLAB 设计FIR滤波器,根据给定的性能指标设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。设计完成之后将得到FI
9、R滤波器的单位冲激响应序列h(n)的各个参数值。4.1.2 利用Matlab软件的FDATool设计FIR滤波器使用 Matlab中的 FDAtool设计滤波器(本文以FIR低通滤波器为例)FDATool ( Filter Design & Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB 6.0以上的版本还专门增加了滤波器设计工具箱( FilterDesign Toolbox)。FDATool界面为滤波器设计提供了一个交互式的设计环境,用户可以根据对幅值和零极点图的设置,设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法,它们都具
10、有标准的频率带宽结构。采用FDATool设计法时其界面的上半部分为特性区,用来显示滤波器的各种特性;下半部分为参数设定区,用来设定滤波器的各种参数。(1)首先在命令窗口键入FDAtool命令,启动滤波器设计分析器,调出FDAtool界面,如图1所示。 图1FDATool界面(2)在Filter Type选项中选Lowpass,在Design Method中 选择FIR滤波器,接着在FIR中选择Window (窗函数) 法。(3)然后在Filter Order 中选择Specify Order (为指定阶数),输入数值为“24”;在Opitions框中选中“Scale Passband”;在窗类
11、型(Window:)下拉框选择“Blackman”。(4)在Frenquency Specification选项中,将fs(为采样频率)、fc (为通带截止频率)中分别键入30000 Hz和9600 Hz。(5)点击“Design Filter”按钮,完成滤波器的设计。具体参数及设计成功后的结果如图2所示。图2FIR低通滤波器设计(6) 设计完成后,可以通过菜单选项Analysis 来分析滤波器的幅频响应和相频响应特性。点击Analysis 中的Magnitude Response和Phase Response 对幅频和相频响应进行分析(如下图)。 幅频响应 相频响应 (7)在FDATool
12、中,选择Targets - Generate C Header.,如图3所示。图3 导出滤波器系数(8)点击Generate按钮,选择路径,即可输出前一步设计出的 FIR滤波器的系数表。(默认的系数表文件为fdacoefs.h)(9)在Matlab中打开得到的fdacoefs.h的文件,如图4、图5所示。图4 查看fdacoefs.h文件图5 fdacoefs.h文件中的系数表 4.1.3提取滤波器参数取系数表中的数据小数点后3位有效值,得到如下内容:constfloatB25= 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,-0.018,0.049,-0.0
13、2,-0.11,0.28,0.64,0.28,-0.11,-0.02,0.049,-0.018,-0.009,0.01,-0.002,-0.002,0.001,0.0,0.0 ;4.2 CCS环境下FIR滤波器的设计及软件仿真4.2.1 程序流程图 初始化 输入低通滤波器各频率参数 构建滤波器频域特性波形参数 使用FDATool提取滤波器参数或用FIR滤波器计算程序计算得到滤波器参数 构建FIR滤波器进行滤波 无限循环4.2.2 在CCS集成开发环境下新建FIR滤波器工程()实验准备 设置软件仿真模式,启动CCS。()建立工程 建立一个文件夹,存放在D:FIR,将D:课程设计FIR滤波器Fir
14、源程序文件夹下的工程全部复制到D:FIR,在CCS中打开D:FIRfirfir.pjt工程,就会得到如图6所示的工程界面。图6FIR工程示例()编译生成fir.out文件,通过File-Load Program装载该文件。4.2.3观察滤波前后的信号的时域波形及FFT Magnitude波形 (4)设置时域观察窗口选择菜单ViewGraphTime/Frequency,进行如图7所示设置。图7输入数据时域波形和滤波后输出波形观察()设置频域观察窗口,选择菜ViewGraphTime/Frequency ,进行如图8所示设置。 图8 输入数据FFT分析图形和滤波后输出数据的FFT图形观察()设置
15、断点。在程序fir.c中,有注释断点的语句上设置软件断点。()运行并观察结果。 选择Debug菜单的Run项,或按F5键运行程序。观察到的图形如图11所示。图11滤波前后的数据波形及FFT分析的对比图4.2.4 程序清单 fir.c 程序/#include DSP281x_Device.h / DSP281x Headerfile Include File/#include DSP281x_Examples.h / DSP281x Examples Include File/#include f2812a.h#includemath.h#define FIRNUMBER 25/#define
16、SIGNAL1F 1000/#define SIGNAL2F 4500/#define SAMPLEF 10000#define PI 3.1415926float InputWave();float FIR();float fHnFIRNUMBER= 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,-0.018,0.049,-0.02,-0.11,0.28,0.64,0.28,-0.11,-0.02,0.049,-0.018,-0.009,0.01,-0.002,-0.002,0.001,0.0,0.0 ;float fXnFIRNUMBER= 0.0 ;fl
17、oat fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn256,fOut256;int nIn,nOut;main(void) nIn=0; nOut=0;f2PI=2*PI;fSignal1=0.0;fSignal2=PI*0.1;fStepSignal1=2*PI/30;fStepSignal2=2*PI*1.4;while ( 1 )fInput=InputWave();fInnIn=fInput;nIn+; nIn%=256;fOutput=
18、FIR();fOutnOut=fOutput;nOut+;if ( nOut=256 )nOut=0;/* 请在此句上设置软件断点 */ float InputWave()for ( i=FIRNUMBER-1;i0;i- )fXni=fXni-1;fXn0=sin(fSignal1)+cos(fSignal2)/6.0;fSignal1+=fStepSignal1; if ( fSignal1=f2PI )fSignal1-=f2PI;fSignal2+=fStepSignal2;if ( fSignal2=f2PI )fSignal2-=f2PI;return(fXn0);float FI
19、R()float fSum;fSum=0;for ( i=0;iFIRNUMBER;i+ )fSum+=(fXni*fHni);return(fSum);4.3 对实时采样信号进行滤波的FIR滤波器的实现4.3.1 程序清单#include DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Include File#include #define pi 3.1415927int px256;int py256;double npass,h51, x,
20、y, xmid51;int m=50;int n=256;/ Prototype statements for functions found within this file.interrupt void adc_isr(void);/ Global variables used in this example:Uint16 LoopCount;Uint16 ConversionCount;void firdes(int m, double npass) int t; for (t=0; t=m; t+) ht = sin(t-m/2.0)*npass*pi)/(pi*(t-m/2.0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIR数字滤波器的MATLAB设计与基于TMS320F2812_DSP处理器的与实现 精品资料 FIR 数字滤波器 MATLAB 设计 基于 TMS320F2812_DSP 处理器 实现 精品 资料
链接地址:https://www.taowenge.com/p-96698943.html
限制150内