基于DSPFIR设计课程设计C语言编写.doc

上传人:h**** 文档编号:101543 上传时间:2018-07-06 格式:DOC 页数:44 大小:1.87MB
下载 相关 举报
基于DSPFIR设计课程设计C语言编写.doc_第1页
第1页 / 共44页
基于DSPFIR设计课程设计C语言编写.doc_第2页
第2页 / 共44页
基于DSPFIR设计课程设计C语言编写.doc_第3页
第3页 / 共44页
基于DSPFIR设计课程设计C语言编写.doc_第4页
第4页 / 共44页
基于DSPFIR设计课程设计C语言编写.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、 基于 DSP 的 FIR 滤波器设计 姓 名: 专 业: 学 号: 指导教师: 日期: 一、 设计目的 为了熟练使用 DSP,在本课程结束之际,利用所学的数字信号处理知识设计一 FIR 滤波器,并在基于 DSP 平台的仿真软件 CCS 下通过软件模拟仿真实现基本的滤波 功能,其中输入信号和滤波器的各个参数自行确定。首先可以借助Matlab 来产生输入数据,并根据输入信号确定滤波器参数,然后根据产生滤波器参数在 CCS 下编写程序实现滤波器功能,最后进行滤波器性能的测试,完成本次课程设计。 本设计中使用的信号为 信息信号: signal=sin(2*pi*sl*n*T) 高频噪声 1: noi

2、se1=0.7*sin(2*pi*ns1*n*T) 高频噪声 2: noise2=0.4*sin(2*pi*ns2*n*T) 混合信号: x=(signal+noise1+noise2) 其中 sl=500Hz, ns1=3000Hz, ns2=8000Hz, T=1/20000。混合信号波形为滤波器输入信号波形,信息信号波形为输出信号波形,滤波器的效果为滤除两个高频噪声。 二、 FIR 滤波器基本理论 ( 1) FIR 滤波器的特点 数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。它的实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR 和有限长脉冲响应滤波器 FIR

3、 两种。 在计算量相等的情况下, IIR 数字滤波器比 FIR 滤波器的幅频特性优越,频率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。 它的相位特性)arg H ( )f( je 是使频率产生严重的非线性的原因。但是在图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR滤波器具有它独特的优点,设 FIR 滤波器单位脉冲响应 h(n)长度为 N,其系统函数 H(z)为 10 )()( Nn nznhzH H(z)是 1z 的 (N-1)次多项式,它在 z 平面上有 (N-1)个零点,原 点 z=0 是 (N-1)阶重极点。因此, H(z)永远稳定

4、,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。 ( 2) FIR 滤波器的基本结构 数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列, FIR滤波器的差分方程为: 10 )()( Nk k knxany 对上式进行 Z变换得到 FIR滤波器的传递函数为: 10Ni kk zbzX zYzH 由上式可以看出, H(z)是 1z 的 N-1次多项式,它在 z平面内有 N-1个零点,同时在原点处有 N-1个重极点。 N阶滤波器通常采用 N个延迟单元、 N个加法器与 N+1个乘法器,取图中 (a)、 (b)两种结构。 图 FIR滤波器的一般结构 因为 FIR滤波

5、器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对 h(n)提出一些约束条件,那么可以很容易地使 H(z)具有线性相位,这在信号处理的很多领域是非常重要的。 FIR滤波器的设计任务,是要决定一个转移函数 H(z),使它的频率响应满足给定的要求。这里所说的要求 ,除了通带频率 p 、阻带频率及两个带上的最大和最小衰减 p 和 s 外,很重要的一条是保证 H(z)具有线性相位。 ( 3) Chebyshev逼近法 窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性 jwd eH 的逼近。由数值逼近理论可知,对某个函数 f(x)的逼近一般有以下三种方法: 插值法

6、(Interpolating Way) 最小平方逼近法 (Least Square Approaching Way) 一致逼近法 (Consistent Approaching Way) 切比雪夫最佳一致逼近的基本思想是,对于给定区间 a, b上的连续函数xf ,在所有 n次多项式的集合 n 中,寻找一个多项式 p(x),使它在 a, b上对 xf 的偏差和其它一切属于 n 的多项式 p(x)对 f(x)的偏差相比是最小的,即 xfxpxfxp m axm i nm ax 切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。

7、 切比雪夫逼近理论解决了 p(x)的存在性、唯一性和如何构造等问题。J.H.McClellan、 T.W.Parks、 L.R.Rabiner 等人应用切比雪夫逼近理论提出了一种设计 FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对 jwd eH 作最佳逼近, 因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是 Chebyshev方法的两个主要缺点。 三、 FIR 滤波器的 MATLAB 实现 MATLAB辅助 DSP 实现 FIR ,其总体过程为在 DSP中编写处理程序 , 在MATLAB中利用滤波器

8、设计、分析工具 ( FDATOOL) ,根据指定的滤波器性能快速设计一个 FIR ,再把滤波器系数以头文件形式导入 CCS 中 ,头文件中 MATLAB 辅助 DSP 实现 FIR 数字滤波器含滤波器阶数和系数数组 ,在 MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法 ,便于采用 汇编 语言来实现程序。头文件名不变 ,当 MATLAB中设计的滤波器系数改变时 ,相应头文件中系数也改变 ,方便程序调试、仿真。 ( 1)输入信号的产生 首先利用 Matlab 产生导入 CCS 的 dat 文件,具体实现如下代码所示 sl=500; %有效信号 ns1=3000; %高频噪

9、声 ns2=8000; %高频噪声 fs=20000; %采样频率 N=1000; T=1/fs; n=0:N; signal=sin(2*pi*sl*n*T); noise1=0.7*sin(2*pi*ns1*n*T); noise2=0.4*sin(2*pi*ns2*n*T); x=(signal+noise1+noise2);%待滤波信号 figure(1) plot(x) figure(2) y=abs(fft(x);%待滤波频谱 df=n*(fs/N); plot(df,y) figure(3) plot(signal) figure(4) ysignal=abs(fft(signa

10、l);%滤波 后 频谱 df=n*(fs/N); plot(df,ysignal) %滤波数据导出 xout=x/max(x); %归一化 xto_css=round(32767*xout);%数据取整 xoutcss=xto_css; fid=fopen(input.dat,w); %打开文件 fprintf(fid,1651 1 0 0 0n);%输出文件头 fprintf(fid,%dn,xoutcss); %输出 fclose(fid); 产生的时域波形如图所示: 0 200 400 600 800 1000 1200-2- 1 . 5-1- 0 . 500 . 511 . 52图 输

11、入信号波形 频谱如图所示: 0 0 . 2 0 . 4 0 . 6 0 . 8 1 1 . 2 1 . 4 1 . 6 1 . 8 2x 1 04050100150200250300350400450500图 输入频谱 经过滤波器后的预期时域波形如图:0 200 400 600 800 1000 1200-1- 0 . 8- 0 . 6- 0 . 4- 0 . 200 . 20 . 40 . 60 . 81图 输出时域波形 频谱如图所示 0 0 . 2 0 . 4 0 . 6 0 . 8 1 1 . 2 1 . 4 1 . 6 1 . 8 2x 1 0405010015020025030035

12、0400450500图 输出频谱 ( 2) 滤波器的设计 MATLAB 集成了一套功能强大的滤波器设计工具 FDATool( Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。 a.打开 Filter Design & Analysis Tool 单击 MATLAB 主窗口下方的“ Start”按钮,选择菜单“ ToolBox” “ Filter Design” “ Filter Design & Analysis Tool( FDATool)”命令,打开 FDATool,如图所示。 图 fadatool 的启动 b.产生滤波器 阶数为 8

13、1 阶,这里应填 80,比阶数少 1。窗函数选择 切比雪夫型 ( chebyshev),采样频率为 20000Hz,通带截止频率为 750Hz。 图 滤波器的幅频特性 图 滤波器的相位特性 c.产生滤波器系数和头文件 图 滤波器系数 图 头文件的产生 最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中,并在进行 CCS 中进行调试与测试。 四、 FIR 滤波器的 Simulink 仿真 通过 Matlab 的 FDATOOL 设计滤波器后,为了确认该滤波器是否有效,现通过 simulink 进行建模仿真观察该滤波器是否有效。 把三个信号通过加法器相加后,再通过 FDATOOL 设计的

14、滤波器即可。注意此处设计的是数字滤波器,需要把三个输入信号数字化。 具体仿真模型建立如下: 分别观察滤波前后的时域波形图 图 滤波前时域波形图 滤波后时域波形 五、 FIR 滤波器的 DSP 实现 ( 1) DSP 中滤波器的 1z 算法实现 FIR 滤 波器的输出表达式为 1 / 2 100( ) ( ) ( ) ( ) ( )NNnny n h i x n i h i s n i 式中,为滤波器系数; x(n)表示滤波器在 n 时刻的输入; y(n)为 n 时刻的输出。 它的基本算法是一种乘法 -累加运算,即不断地输入样本 x(n),经过延时后,再进行乘法 -累加,最后输出滤波结果 y(n

15、)。 1) 线性缓冲区法:线性缓冲区法又称延迟线法,其特点: ( a) 对于 N 级的 FIR 滤波器,在数据存储器中开辟一个 N 单元的缓冲区(滑窗),用来存放最新的 N 个输入样本; ( b) 从最老样本开始取数,每取一个样本后,将此样本向下移位; ( c) 读完最后一个样本后,输入最新样本 存入缓冲区的顶部。 2) 循环缓冲区法:循环缓冲区法的特点如下: ( a) 对于 N 级 FIR 滤波器,在数据存储器中开辟一个 N 单元的缓冲区(滑窗),用来存放最新的 N 个输入样本; ( b) 从最新样本开始取数; ( c) 读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变; ( d) 用片内 BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。本次设计的 FIR 滤波器所采用的就是循环缓冲区法。 ( 2) C 语言实现 FIR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。