DSP实验报告FIR和IIR滤波器设计

合集下载

DSP实验报告6

DSP实验报告6

DSP第六、七次实验报告1. 实验目的:(1)进一步熟悉Matlab实验环境和语言。

(2)熟悉各种滤波器的结构及Matlab实现语言。

(3)掌握用冲击响应不变法和双线性变换法设计IIR滤波器的方法。

(4)掌握用窗函数法和频率抽样法设计FIR滤波器的方法。

2. 实验内容及总结:1.滤波器结构:(1)IIR滤波器各种结构1、直接型结构例如直接型滤波器系统函数, 则有系数向量a=[1,a1,a2,a3],b=[b0,b1,b2], 利用:Y=filter[b,a,x]求信号x(n)通过此滤波器的输出。

2、由系统函数或差分方程求系统的二阶分式(含一阶分式)的级联结构将例如的系统函数重写为二阶分式节的级联型, 利用:[sos,G]=tf2sos(b,a)3、由二阶分式的级联结构转换成系统函数的直接结构是第二步的逆运算, 调用函数:[b,a] = sos2tf(sos)可以求得系数向量a,b, 从而得到H(z)4、由系统函数求部分分式展开(留数及其极点计算)即求z反变换的部分分式展开法, 利用:[r,p,c]=residuez(b,a)其中极点为p, 留数为r, 直接项系数为c。

5、由r,p,c求系统函数即第4步的逆运算, 利用:[b,a]=residuez(r,p,c)6、由直接型结构转换为并联型结构需开发函数:[C,B,A]=tf2par(b,a)其中, b,a为直接型的系数向量, C,B,A为并联型实系数向量, 基本思想是: 1.反复调用[r,p,c]=residuez(b,a)求出极点及留数;2.利用cplxpair函数把极点、留数对按复共轭极点-留数对, 实极点-留数对的顺序排列;3.开发cplxcomp函数, 保证极点和留数相互对应;4.调用[b,a]=residuez(r,p,c)计算并联二阶节的分子分母。

7、由并联型结构转换成直接型结构开发函数:[b,a]=par2tf(C,B,A)为[C,B,A]=tf2par(b,a)的逆函数。

DSP实验报告FIR和IIR滤波器设计

DSP实验报告FIR和IIR滤波器设计

D S P实验报告F I R和I I R滤波器设计Revised by Petrel at 2021D S P 实验报告实验一 FIR 滤波器的设计1.实验目的利用所学DSP 知识,在平台上,对TMS320VC5416DSP 设计,编程实现FIR 滤波器。

从而学会使用CCS 软件和TMS320VC5416实验板。

2.实验要求设计一个10阶的FIR 滤波器,要求f c =,定点实现。

并对F s =8kHZ 的多正弦波合成文件进行滤波测试,显示出输入和输出信号。

3.实验原理一个截止频率为ωc 的理想数字低通滤波器,其传递函数的表达式为:这个滤波器是物理不可实现的。

为了产生有限长度的冲激响应函数,我们取样响应为)(n h ,长度为N 。

)(n h 表示截取)(n h d 后的冲激响应,即)()()(n h n n h d ω=,其中)(n ω即为窗函数,窗长为N 。

一般的FIR 滤波器差分方程如下:进行Z 变换得到FIR 的系统函数为:N 阶滤波器通常采用N 个延迟单元、N 个加法器与N+1个乘法器组成。

因此可以得到FIR 滤波器的结构图如图1所示。

图1 FIR 滤波器直接结构图4.设计思路对于FIR 滤波器的设计,其系数()h n 是关键。

由于matlab 自带滤波器设计工具箱和滤波器设计函数,故借用matlab 工具,设计满足条件的滤波器并导出系数以备编写滤波器程序时使用。

实验需要用到的输入数据是多正弦波合成文件,对于输入信号的设计,这里也借助matlab 编程生成dat 文件。

然后用C 语言编写FIR 滤波器的主程序,输入文件在程序运行后导入。

5.实验内容(1)滤波器系数的设计由于实验只给出滤波器条件为N=10,f c=,并没有给出f p和f s,所以这里调用matlab工具箱函数fir1实现窗函数法设计滤波器。

fir1的调用格式为ℎn=fir1(N,ωc),返回值为6dB截止频率为ωc的N阶(单位脉冲响应h(n)长度N′=N+1)的FIR低通滤波器的系数向量(ωc为标量),默认选用,这里计算得出哈明窗。

DSP技术实验报告-实验3FIR滤波器设计与实现

DSP技术实验报告-实验3FIR滤波器设计与实现

电子科技大学电子工程学院标准实验报告(实验)课程名称DSP技术实验题目FIR滤波器设计与实现电子科技大学实验报告实验地点:科B453室实验时间:10月26日一、实验室名称:DSP技术实验室二、实验项目名称:FIR滤波器设计与实现三、实验学时:4四、实验目的:1.熟悉BF609开发板WL-BF609-EDU硬件平台。

2.熟悉CCES开发软件平台的使用,掌握CCES集成开发环境的基本操作和常用功能,掌握CCES工程的创建、程序编写、编译和调试。

3.掌握DSP中FIR滤波器设计、实现的方法。

五、实验内容:1.了解BF609开发板WL-BF609-EDU。

2.熟悉CCES集成开发环境的基本操作和常用功能。

3.学习实验指导书中的低通滤波器设计与实现,验证滤波效果。

4.独立设计、实现FIR高通滤波器,并验证滤波效果。

六、实验环境:1.预装开发环境Cross Core Embedded Studio 1.0.2的计算机。

2.BF609开发板一套。

3.ADDS HPUSB-ICE仿真器一套。

七、实验步骤:输入条件:1MHz的点频信号,峰值为1;10M的点频信号,峰值为0.5;采样时钟40MHz。

滤波器:17阶低通滤波器。

输出:保留10MHz 的点频信号,滤除1M 的点频信号。

1.用MATLAB 设计FIR 高通滤波器FIR 滤波器原理有M 个权系数(抽头)的FIR 滤波器,如下图所示。

滤波器的输入为随机过程()x n ,输出为1()()M i i y n w x n i -*==-∑其中,i w 表示横向滤波器的权系数。

......图M 抽头的FIR 滤波器定义输入信号向量和权向量分别为 ()[(),(1),(1)]T n x n x n x n M =--+x011[,,,]T M w w w -=w则输出可表示为 ()()()H T y n n n *==w x x w2.FIR 滤波器高通滤波器实现(学习实验指导书中的低通滤波实验,独立完成高通滤波的DSP 实现) 八、FIR 高通滤波器代码输入条件:1MHz的点频信号,峰值为1;10M的点频信号,峰值为0.5;采样时钟40MHz。

实验2——IIR、FIR滤波器设计

实验2——IIR、FIR滤波器设计

实验二 IIR、FIR数字滤波器的设计一、实验目的1. 掌握双线性变换法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法设计低通、高通和带通IIR数字滤波器的计算机编程。

2. 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。

3. 熟悉Butterworth滤波器的频率特性。

4. 掌握用窗函数法,设计FIR滤波器的原理及方法;5. 熟悉线性相位FIR滤波器的幅频特性和相频特性;6. 了解各种不同窗函数对滤波器性能的影响;7. 对比IIR和FIR滤波器,比较其区别。

二、实验原理与方法1.双线性变换法S平面与z平面之间满足以下映射关系:s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。

双线性变换不存在混叠问题。

双线性变换是一种非线性变换,这种非线性引起的幅频特性畸变可通过预畸而得到校正。

以低通数字滤波器为例,将设计步骤归纳如下:1)确定数字滤波器的性能指标:通带截止频率fp、阻带截止频率fs;通带内的最大衰减(波纹)Rp;阻带内的最小衰减As;采样周期T;2)确定相应的数字角频率,ωp=2πf pT;ωs=2πf sT;3)计算经过预畸的相应模拟低通原型的频率,)2(2),2(2sspptgTtgTωω=Ω=Ω;4)根据Ωp和Ωs计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s);5)用上面的双线性变换公式代入Ha(s),求出所设计的传递函数H(z);6)分析滤波器特性,检查其指标是否满足要求。

2.线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性分为四种:1)h(n)为偶对称,N为奇数H(e jω)的幅值关于ω=0,π,2π成偶对称。

2)h(n)为偶对称,N为偶数H(e jω)的幅值关于ω=π成奇对称,不适合作高通。

3)h(n)为奇对称,N为奇数H(e jω)的幅值关于ω=0,π,2π成奇对称,不适合作高通和低通。

DSP实验报告——FIR和IIR滤波器设计

DSP实验报告——FIR和IIR滤波器设计
N 阶滤波器通常采用 N 个延迟单元、N 个加法器与 N+1 个乘法器组成。因 此可以得到 FIR 滤波器的结构图如图 1 所示。
DSP 实验报告——FIR 和 IIR 滤波器设计
4、设计思路
图 1 FIR 滤波器直接结构图
对于 FIR 滤波器的设计,其系数 h(n) 就是关键。由于 matlab 自带滤波器设计
DSP 实验报告——FIR 和 IIR 滤波器设计
DSP 实验报告
实验一 FIR 滤波器的设计
1、实验目的
利用所学 DSP 知识,在 CCS3、3 平台上,对 TMS320VC5416DSP 设计,编程实 现 FIR 滤波器。从而学会使用 CCS 软件与 TMS320VC5416 实验板。
2、实验要求
图8
(a) 时域图
DSP 实验报告——FIR 和 IIR 滤波器设计
(b) 频域图 图 9 输入信号 1 波形图
(a) 滤波结果时域图
(b) 滤波结果频域图 图 10 信号 1 滤波结果图 (a) 时域图
(b)频域图 图 11 输入信号 2 波形图
(a) 滤波结果时域图
DSP 实验报告——FIR 和 IIR 滤波器设计
取样响应为 h(n) ,长度为 N。 h(n) 表示截取 hd (n) 后的冲激响应,即 h(n) (n)hd (n) ,
其中(n) 即为窗函数,窗长为 N。一般的 FIR 滤波器差分方程如下:
n1
y(n) h(k)x(n k) k 0
进行 Z 变换得到 FIR 的系统函数为:
N 1
H (z) h(n)z n n0
DSP 实验报告——FIR 和 IIR 滤波器设计
图 7 CCS3、3 程序窗口

DSP实验6 IIR滤波器

DSP实验6 IIR滤波器

电子信息学院DSP结构、原理及应用实验六IIR滤波器邓宏恩:1142051157地点:基础教学楼B座520实验室1,熟悉FIR 滤波器‘C54X ’实现的编程方法。

2,测试FIR 滤波器的单位冲击响应曲线。

3,检查FIR 滤波器的频率特性。

二、实验条件:1、设计四阶IIR 滤波器的参数如下:.通带:0--00Hz.过渡带宽:200Hz--500Hz.通带内波动:<0.5dB.阻带衰减:<-20dB.采样频率Fs :3600Hz.脉冲传递函数H (z ):H (z )=443322114433221101------------++++Z A Z A Z A Z A Z B Z B Z B Z B B 差分方程式为:()()()()()()*)1(*)1(*4*3*2*1**y 21143210+-+-+-+-+-+-+=y A n y A n y A n x B n x B n x B n x B n x B n )4(y *)3(y *)2(y 43-+-+-n A n A n其中:1A =-3.4647 2A =-4.4615 3A =-2.8518 4A =0.67390B =0,.0951 1B =-0.3.139 2B =0.4460 3B =-0.3139 4B =0.0951生成正旋数据文件的高级语言程序。

程序名为sin_flt.exe.2、直接形式二阶滤波器程序Lab6.asm 以及连接命令文件Lab6.cmd.三、实验内容:四、试验程序:;**************************;* lab6.ASM IIR Filter *;**************************.title "lab6.asm".mmregs.def start.bss in,1.bss out,1X .usect "X",5Y .usect "Y",5B .usect "B",5A .usect "A",5PA0 .set 0PA1 .set 1.datatable: .word 0 ;X(N-4).word 0 ;X(N-3).word 0 ;X(N-2).word 0 ;X(N-1).word 0 ;Y(N-4).word 0 ;Y(N-3).word 0 ;Y(N-2).word 0 ;Y(N-1).word 3116 ;B4=0.0951.word -10286 ;B3=-0.3139.word 14615 ;B2=0.4460.word -10286 ;B1=-0.3139.word 3116 ;B0=0.0951.word -22082 ;A4=-0.6739.word 31149 ;A3/3=2.8518/3 .word -30484 ;A2/5=-4.6515/5 .word 28383 ;A1/4=3.4647/4.textstart: SSBX FRCTSTM #X,AR1RPT #3MVPD #table,*AR1+STM #Y,AR1RPT #3MVPD #table+4,*AR1+STM #B,AR1 ;B->AR1并进行初始化RPT #4MVPD #table+8,*AR1+STM #A,AR1 ;A->AR1并进行初始化RPT #3MVPD #table+13,*AR1+STM #X+4,AR2STM #Y+3,AR4STM #B+4,AR5STM #A+3,AR3STM #5,BKSTM #-1,AR0STM #1000h,AR6 ;输出数据缓冲首地址为#1000h STM #0200h-1,AR7 ;循环计算512个样点IIR PORTR PA1,*AR2 ;x(n)/2,防止溢出 ; MVKD in,*AR2LD *AR2,ASTL A,-1,*AR2MPY *AR2+0%,*AR5+0%,A ;计算前向通道MAC *AR2+0%,*AR5+0%,AMAC *AR2+0%,*AR5+0%,AMAC *AR2+0%,*AR5+0%,AMAC *AR2,*AR5+0%,AMAC *AR4,*AR3,A ;计算反馈通道MAC *AR4,*AR3,A ;*A1/4MAC *AR4,*AR3,AMAC *AR4+0%,*AR3+0%,AMAC *AR4,*AR3,A ;*A2/5MAC *AR4,*AR3,AMAC *AR4,*AR3,AMAC *AR4,*AR3,AMAC *AR4+0%,*AR3+0%,AMAC *AR4,*AR3,A ;*A3/3MAC *AR4,*AR3,AMAC *AR4+0%,*AR3+0%,AMAC *AR4+0%,*AR3+0%,A ;*A4MAR *AR3+0%STH A,*AR4;BD IIR;MVDK *AR4,out;PORTW *AR4,PA0STH A,*AR6+BANZ IIR,*AR7-end: B end.END五、实验仿真图:六、实验体会:通过本次实验,对IIR滤波器有了更深的了解,初步学会了如何测试IIR滤波器的单位冲击响应测试FIR滤波器的单位冲击响应曲线及如何查看FIR滤波器的频率特性。

FIR 数字滤波器(DSP实验报告)

FIR 数字滤波器一、实验目的数字滤波的作用是滤除信号中某一部分频率分量。

信号经过滤波处理,就相当于信号频谱与滤波器的频率响应相乘的结果。

从时域来看,就是输入信号与滤波器的冲激响应作卷积和。

数字滤波器在各种领域由广泛的应用,例如数字音响、音乐和语音合成、躁声消除、数据压缩、频率合成、谐波消除、过载检测、相关检测等。

本实验主要学习数字滤波器的DSP 实现原理和C54X 编程技巧,并通过CCS 的图形显示工具观察输入/输出信号波形以及频谱的变化。

该实验应该安排在串口和定时器操作实验之后进行。

二、实验原理1) FIR滤波器的实现如果FIR 滤波器的冲激响应为h(0),h(1),...,h(N-1)。

X(n)表示滤波器在n 时刻的输入,则n时刻的输出为:y(n) = h(0)x(n) + h(1)x(n-1)+ ... + h(N-1)x[n-(N-1)]使用MAC或FIRS指令可以方便地实现上面的计算。

使用带MAC 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在AH中)STM #1,AR0 ;AR0=1STM #N,BK ;BK=N,循环寻址BUFFER 大小为N STL A,*FIR_DATA_P+% ;更新滤波窗口中的采样数据RPTZ A,#(N-1) ;重复MAC指令N次,先将A清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ;完成滤波计算。

注意FIR滤波系数存放在;数据存储区另一种方法是利用C54x 系列芯片的提供的FIRS 指令来实现FIR 滤波器。

为一种有限单位冲激响应呈现对中心点对称的FIR 滤波器。

长度为N的线性相位FIR,使用带FIRS 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在B 中) STM #1,AR0 ;AR0=1STM #(N/2),BK ;BK=N/2,循环寻址BUFFER大小为NMVDD *ar2, *ar3 ;更新Buffer2STL A, *ar2+% ;更新滤波窗口中的采样数据ADD *ar2+0% , *ar3+0% ;初始化ARPTZ B, #(N/2-1) ;重复FIRS指令N/2次,先将B清零FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。

重邮课程实验报告

一、实验名称数字信号处理实验二、实验目的1. 理解数字信号处理的基本概念和原理。

2. 掌握数字滤波器的设计方法及其应用。

3. 熟悉数字信号处理软件的使用,提高实验技能。

三、实验原理数字信号处理(Digital Signal Processing,DSP)是研究数字信号的产生、处理、分析和应用的科学。

本实验主要涉及以下几个方面:1. 数字滤波器的基本概念:数字滤波器是一种对数字信号进行频率选择的装置,可以用于信号的滤波、增强、抑制等。

2. 滤波器的设计方法:主要包括有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器的设计方法。

3. 数字信号处理软件的使用:利用MATLAB等软件进行数字信号处理实验,提高实验效率。

四、实验器材1. 实验计算机2. MATLAB软件3. 实验指导书五、实验步骤1. 实验一:FIR滤波器设计(1)打开MATLAB软件,创建一个新的脚本文件。

(2)根据实验指导书的要求,输入FIR滤波器的参数,如滤波器的阶数、截止频率等。

(3)运行脚本文件,观察滤波器的频率响应曲线。

(4)根据实验结果,分析滤波器的性能。

2. 实验二:IIR滤波器设计(1)打开MATLAB软件,创建一个新的脚本文件。

(2)根据实验指导书的要求,输入IIR滤波器的参数,如滤波器的阶数、截止频率等。

(3)运行脚本文件,观察滤波器的频率响应曲线。

(4)根据实验结果,分析滤波器的性能。

3. 实验三:数字信号处理软件的使用(1)打开MATLAB软件,创建一个新的脚本文件。

(2)根据实验指导书的要求,输入信号处理的参数,如采样频率、滤波器类型等。

(3)运行脚本文件,观察信号处理的结果。

(4)根据实验结果,分析数字信号处理软件的应用。

六、实验结果与分析1. 实验一:FIR滤波器设计实验结果表明,所设计的FIR滤波器具有较好的频率选择性,滤波效果符合预期。

2. 实验二:IIR滤波器设计实验结果表明,所设计的IIR滤波器具有较好的频率选择性,滤波效果符合预期。

iir和fir滤波器的设计实验总结

IIR和FIR滤波器是数字信号处理中常用的滤波器类型,它们可以用于滤除信号中的噪音、衰减特定频率成分等。

在本次实验中,我们对IIR 和FIR滤波器的设计进行了实验,并进行了总结。

以下是我们对实验内容的总结:一、实验背景1.1 IIR和FIR滤波器的概念IIR滤波器又称为“递归滤波器”,其特点是反馈自身的输出值作为输入。

FIR滤波器又称为“非递归滤波器”,其特点是只利用当前和过去的输入值。

两者在设计和性能上有所不同。

1.2 实验目的本次实验旨在通过设计IIR和FIR滤波器,加深对数字信号处理中滤波器性能和设计原理的理解,以及掌握滤波器在实际应用中的参数选择和性能评估方法。

二、实验过程2.1 IIR滤波器设计我们首先进行了IIR滤波器的设计实验。

通过选择滤波器类型、截止频率、阶数等参数,利用巴特沃斯、切比雪夫等滤波器设计方法,得到了IIR滤波器的传递函数和零极点分布。

接着进行了IIR滤波器的数字仿真,对滤波器的频率响应、裙延迟等性能进行了评估。

2.2 FIR滤波器设计接下来我们进行了FIR滤波器的设计实验。

通过选择滤波器类型、截止频率、滤波器长度等参数,利用窗函数、最小均方等设计方法,得到了FIR滤波器的传递函数和频响曲线。

然后进行了FIR滤波器的数字仿真,对滤波器的幅频响应、相频响应等进行了分析。

2.3 总结我们总结了IIR和FIR滤波器的设计过程和步骤,对设计参数的选择和调整进行了讨论,同时对两种滤波器的性能进行了比较和评价。

三、实验结果分析3.1 IIR滤波器性能分析通过实验,我们得到了IIR滤波器的频率响应曲线、裙延迟等性能指标。

我们分析了滤波器的截止频率对性能的影响,以及阶数、滤波器类型对性能的影响,并进行了参数优化和调整。

3.2 FIR滤波器性能分析同样地,我们得到了FIR滤波器的幅频响应曲线、相频响应等性能指标。

我们分析了滤波器长度、截止频率对性能的影响,以及窗函数、设计方法对性能的影响,并进行了参数优化和调整。

DSP课程设计报告FIR滤波器的设计

DSP课程设计报告FIR滤波器的设计本科课程设计报告课程名称:DSP原理及应⽤设计项⽬:FIR滤波器的设计实验地点:多学科楼机房专业班级:学号:学⽣姓名:指导教师:2012年1⽉8⽇⼀、设计⽬的:1、掌握数字滤波器的设计过程;2、了解FIR的原理和特性;3、熟悉设计FIR数字滤波器的原理和⽅法;4、学习FIR滤波器的DSP的实现原理;5、学习使⽤CCS的波形观察窗⼝观察输⼊/输出信号波形和频谱变化情况。

⼆、设计内容:1、通过MATLAB来设计⼀个低通滤波器,对它进⾏模拟仿真确定FIR滤波器系数;2、⽤DSP汇编语⾔进⾏编程,实现FIR运算,对产⽣的合成信号,滤除信号中⾼频成分,观察滤波前后波形的变化。

三、设计原理:FIR数字滤波器是⼀种⾮递归系统,其传递函数为:H(z)=Y(z)/X(z)=∑b(n)z-n由此可得到系统的差分⽅程为:y(n)=∑h(i)x(n-i),其冲击响应h(n)是有限长序列,它其实就是滤波器系数向量b(n),N为FIR滤波器的阶数。

为了使滤波器满⾜线性相位条件,要求其单位脉冲响应h(n)为实序列,且满⾜偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)这样,当N为偶数时,偶对称线性相位FIR滤波器的差分⽅程表达式为:y(n)=∑h(i)x(n-i)+x((N-1-n-i)应⽤MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计⼀个H(z),使其逼近这⼀指标,进⽽计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进⾏⽐较,对设计的滤波器进⾏优化,设计完成之后将得到FIR滤波器的单位冲击响应序列h(n)的各个参数值。

matlab⽤fir1函数设计FIR滤波器:fir1函数⽤来设计标准频率响应的基于窗函数的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时,可设计带阻滤波器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

D S P 实验报告实验一 FIR 滤波器的设计1.实验目的利用所学DSP 知识,在CCS3.3平台上,对TMS320VC5416DSP 设计,编程实现FIR 滤波器。

从而学会使用CCS 软件和TMS320VC5416实验板。

2.实验要求设计一个10阶的FIR 滤波器,要求f f =2.5kHZ ,定点实现。

并对f f =8kHZ 的多正弦波合成文件进行滤波测试,显示出输入和输出信号。

3.实验原理一个截止频率为f c 的理想数字低通滤波器,其传递函数的表达式为:这个滤波器是物理不可实现的。

为了产生有限长度的冲激响应函数,我们取样响应为)(n h ,长度为N 。

)(n h 表示截取)(n h d 后的冲激响应,即)()()(n h n n h d ω=,其中)(n ω即为窗函数,窗长为N 。

一般的FIR 滤波器差分方程如下:进行Z 变换得到FIR 的系统函数为:N 阶滤波器通常采用N 个延迟单元、N 个加法器与N+1个乘法器组成。

因此可以得到FIR 滤波器的结构图如图1所示。

图1 FIR 滤波器直接结构图4.设计思路对于FIR滤波器的设计,其系数()h n是关键。

由于matlab自带滤波器设计工具箱和滤波器设计函数,故借用matlab工具,设计满足条件的滤波器并导出系数以备编写滤波器程序时使用。

实验需要用到的输入数据是多正弦波合成文件,对于输入信号的设计,这里也借助matlab编程生成dat文件。

然后用C语言编写FIR滤波器的主程序,输入文件在程序运行后导入。

5.实验内容(1)滤波器系数的设计由于实验只给出滤波器条件为N=10,f f=2.5kHZ,并没有给出f f和f f,所以这里调用matlab工具箱函数fir1实现窗函数法设计滤波器。

fir1的调用格式为f f=fir1(N,f f),返回值为6dB截止频率为f f的N阶(单位脉冲响应h(n)长度f′=N+1)的FIR低通滤波器的系数向量(f f为标量),默认选用,这里计算得出哈明窗。

其中f f为对π归一化的数字频率,其计算公式为f f=2ff fff ff f=0.625。

因为得到的系数向量要用于DSP的FIR程序中,需要对其进行进行转换并取整。

最后系数结果如下图2所示。

图2 10阶FIR滤波器系数对于10阶滤波器得到11个系数,将该系数保存,以备后面编写程序时使用。

该滤波的幅频图和相频图分别对应图3和图4。

图3 10阶FIR滤波器幅频图图4 10阶FIR滤波器相频图(2)输入信号的生成根据老师给的两个.wav语音文件,这里用matlab的wavread函数将其读进去,并编写程序查看其部分信号时域和频域图,并生成两个语音文件的.dat文件,供作为DSP设计滤波器验证时所用的输入文件。

两个语音信号部分时域和频域图分别对应图5(a)(b)和图6(a)(b)。

(a)语音文件1时域图(b)语音文件1频谱图图5 语音文件1时域和频域图(a)语音文件2时域图(b)语音文件2频谱图图6 语音文件2时域和频域图(3)CCS中FIR程序编写首先打开CCS setup选择对应5416型号的处理器,保存后打开CCS软件,project->new 建立fir滤波工程。

新建一个input.h文件,并将matlab产生的input文件里面的数据放入其中,然后project->add files to project..将input.h添加至工程。

同理,编写FIR 滤波主程序并将其加入工程。

最后将链接文件fir.cmd加入工程。

如图7所示。

图7 CCS3.3程序窗口编译生成fir.out文件,然后file->load program..->fir.out,运行程序。

然后view->graph->time/frequency,显示如图8所示。

然后选择对应的single time、FFT magnitude分别对应时域和频域图形。

start address分别填input和output对应输入和输出的数据。

通过改变acquisition buffer size和display data size数值来调整显示框的结果。

对应的显示结果如图9-图12所示。

图8(a)时域图(b)频域图图9 输入信号1波形图(a)滤波结果时域图(b)滤波结果频域图图10 信号1滤波结果图(a)时域图(b)频域图图11 输入信号2波形图(a)滤波结果时域图(b)滤波结果频域图图12 信号2滤波结果图(4)程序下载到DSP实验板点击file->new->DSP/BIOS configuration,选择DSK5416.cdb,保存至文件的工程目录下。

将刚生成的.cdb文件和编写的加入到工程中。

将前面的程序文件分别加入工程中,进行编译。

链接实验板和电脑。

点击debug->connect,连接测试板,file->load program..,从工程文件下的debug文件夹中导入fir.out文件,再点击debug->run运行。

6.实验结果从图9-图12来看程序基本完成了对输入的合成信号的滤波。

其中输入信号1是由1Khz、2Khz、3Khz合成的信号,而输入信号2是多种频率信号复合的信号。

经过FIR滤波器滤波后,由输出的频域图可以看出,本滤波器将大于2.5Khz的信号基本滤去。

由于滤波器的阶数较小,对于3Khz信号并没有完全滤除,这也是实验预期之中的。

对于信号2的复合信号,由频谱图比较可以发现,大于2.5Khz的信号基本被滤去。

综上所述,本实验设计的FIR滤波器实现了截止频率为2.5Khz的低通滤波器的功能。

实验二 IIR滤波器的设计1.实验目的和要求在上面设计了FIR滤波器的基础上,设计相同性能的IIR滤波器。

2.实验原理IIR与FIR滤波器相比,相同性能水平的滤波器,IIR可以用较低的阶数实现,但是IIR滤波器是非线性的,且稳定性较差。

IIR滤波器对FIR滤波器的前馈环节进行了扩展,增加了一个反馈环节。

IIR滤波器的(L-1)阶前馈环节和(M-1)阶反馈环节的差分方程表示为:其中a与b为滤波器系数向量。

对上式进行z变换可得:Y(z)=X(z)∑f ff−1f=0f−f−f(f)∑f ff−1f=1f−f进而得到IIR滤波器的传递方程为:H(z)=Y(z)X(z)=∑f ff−1f=0f−f1+∑f ff−1f=1f−f因此IIR滤波器的设计需要求出其系数向量a和b。

3.实验内容IIR滤波器的设计思路和内容与FIR的基本相同,这里不再叙述。

这里使用与FIR滤波器一样的输入信号。

一般情况下,相同性能的IIR滤波器阶数应低于FIR滤波器,这里为了方便,设计相同阶数的IIR滤波器。

IIR滤波器系数向量用matlab的自带的滤波器设计工具箱设计得出。

IIR滤波器对输入信号1和2滤波后的时域和频域图如图13和14所示。

(a)滤波后时域图(b)滤波后频域图图13 IIR滤波器对输入信号1的滤波结果(a)滤波后时域图(b)滤波后频域图图14 IIR滤波器对输入信号2的滤波结果4.实验结果通过观察IIR滤波结果图,与上面FIR比较,可以发现,实验中截止频率同为2.5Khz 的IIR滤波器,对2Khz和3Khz频率的信号都有滤波现象。

这是由于滤波器自身的幅频特性造成的。

经过观察信号2的滤波结果可以看出,该滤波器也基本可以实现截止频率为2.5Khz的低通滤波器的功能。

实验总结本次实验所设计的10阶FIR和IIR滤波器都可以很好的完成低通滤波效果,达到了实验预期的目的。

通过FIR和IIR滤波器的设计,不仅让我了解到了数字滤波器的设计思路和设计方法,而且通过比较了解了FIR和IIR滤波器各种的优点和缺点。

通过实验让我对数字滤波器的知识有了进一步了解和认识,同时掌握了简单的滤波器实现算法和程序。

由于之前没有较多接触过CCS和DSP实验板,此次实验在对CCS软件的使用、软件编程、仿真、连接实验板上花了大量的时间。

通过在网上查资料并一点点学习和尝试才基本学会使用。

由于对cmd文件的不了解,开始编译时总是报错,通过与同学一起讨论和在网上查询才知道解决办法。

总得来说,实验让我学会了CCS软件和DSP实验板的基本使用方法。

并在此基础上学会了简单的FIR和IIR滤波器的设计。

收获颇多。

附录(1)输入信号生成程序(matlab程序)clear all;close all;FS=8000;%[y,FS,NBITS]=wavread('C:\Users\Administrator\Desktop\MultiToneTest.wav'); [y,FS,NBITS]=wavread('C:\Users\Administrator\Desktop\sc03.wav');figure(1)plot(y(1:500));title('语言信号时域图');figure(2)y=abs(fft(y(1:1000)));df=(1:1000)*(FS/1000);plot(df,y(1:1000));title('语言信号频域图');y=(y*32767);y=int16(y);fid=fopen('input.dat','w');for m=1:2048fprintf(fid,'%d,\n',y(m)); %输出fclose(fid);(2)FIR滤波器程序#include "stdio.h"#define N 11 //FIR滤波器的级数+1(因为本实验中滤波器阶数为10)#define LEN 2048 //待滤波的输入数据长度#include"input.h" //输入数据文件long yn;int B[11] = { -64, 438, -530, -2519 , 8803, 20512,8803,-2519,-530,438,-64};//滤波器系数int input[LEN]; //输入缓冲,在仿真时将从内存载入int output[LEN]; //输出缓冲,直接存放在内存中void main(){int i,j;int *x;for(j=0;j<LEN-1;j++){x=&input[j];yn = 0;for(i=0; i<N-1; i++){yn += B[i]*(*x++); %滤波 }output[j]=yn>>15;}while(1);}(3)IIR滤波器程序#include "stdio.h"#include "input.h"#define N 11#define LEN 2048int NUM[10] = {69,691,3108,8289,14505,17406,14505,8289, 3108,691, 69}; int DEN[10] = {4096,10203,16248,16727,12645,6959,2837,828,166,20,1}; long yn,yn1,yn2;int input[LEN];int inputY[LEN];int output[LEN];void main(){int i,j;int *x,*y;for(j=0;j<LEN-1;j++){x=&input[j];y=&inputY[j];for (i=0;i<NL;i++){yn1+=NUM[i]*(*x++);yn2+=DEN[i]*(*y++);}yn=yn1-yn2;output[j]=yn>>15; }while(1);}。

相关文档
最新文档