DSP实验指导书

DSP实验指导书

实验一CCS开发环境的使用

【实验目的】

1.熟悉Code Composer Studio开发环境,了解相关的开发工具。

2.掌握DSP软件开发流程。通过使用CCS软件,学会创建工程、编译、连接工程

3.掌握CCS软件的调试方法。学习使用CCS的探针和断点调试工程,能够用图形窗口观察数据。

【实验原理】

CCS (Code Composer Studio)是TI公司为其TMS320系列DSP提供的一个高度集成的软件开发和调试环境,它将DSP工程项目管理、源代码的编辑、目标代码的生成、调试和分析都打包在一个环境中,使其可以基本涵盖软件开发的每一个环节。CCS主要包括以下工具:

1. C编译器、汇编优化器和连接器(代码生成工具)

2.指令集仿真器(Simulator)

3.实时的基础软件(DSP/BIOS)

4.主机和目标机之间的实时数据交换(RTDX)

5.实时分析和数据可视化

利用CCS,用户可以方便地建立一个DSP的工程项目,并对相应的源文件进行管理或编辑修改。所有源文件的编译、汇编和连接只需要一个按钮就可以一次完成,用户不必再通过输入冗长的命令行来完成这些操作。

经过上面的过程产生的目标代码可以在CCS的环境下通过硬件仿真工具,如XDS510等,下载到用户目标系统中进行调试和运行。如果没有用户目标系统,还可以将目标代码装载到Simulator中运行。Simulator利用计算机的资源模拟DSP的运行情况,可以帮助用户熟悉DSP的内部结构和指令,在有的情况下还可以对部分的程序功能进行非实时的验证。在CCS中,用户可以利用其提供的数据可视化工具按照数据的格式来观察数据,如眼图、星座图、FFT瀑布图等,较好的分析数据。

【实验内容与步骤】

1.创建一个新项目工程

1)从菜单或者快捷方式中打开CCS。

DSP实验指导书

2)选择Project→New。在myprojects文件夹中建立一个以自己姓名拼音命名的新的工程文件,如”zhangsan”,如下图所示:

3) 在Target中选择器件类型"TMS320C54xx"。

4) 点击完成。这样CCS就新建了一个名为“zhangsan.pjt”的工程文件。

2.向工程中添加文件

1)选择Project→Add Files to Project,将volume. c添加至工程。

2)选择Project→Add Files to Project,选择汇编源文件(*.asm)类型的文件,将vector. asm

和load.asm添加至工程。vector. asm文件定义了中断向量表,其中RESET中断将跳转至C语言程序的入口地址c_ int00。

3)选择Project→Add Files to Project,添加volume.cmd文件。该文件将源程序中定义的

程序段、数据段、和堆栈段等定位到相应的程序存储器和数据存储器中。

4)选择Project→Add Files to Project,进入c:\ti\c5400\cgtools\lib,文件类型选择日标文件

和库文件(*.o*,*.lib),添加rts.lib文件。这是一个C语言运行环境库。

5)在Project View中展开文件夹,如下图所示。注意,你不必自己向你的工程中添加Include文件,因为CCS在编译过程中会自动地寻找Include文件并将已们添加至工程中。在你编译完你的工程以后,你就可以在你的Project View中找到Include文件。在编译一个程序时,ccs将按照下列顺序在工程文件中查找文件:

·包含源文件的文件夹

·在Include搜索路径中列出的文件夹

·在C54X_ C_ DIR(编译器)和C54X_ A_ DIR(汇编器)环境变量的定义中列出的文件夹。

此时,工程中文件有:

·volume.c这是主程序的源代码。

·volume.h这是volume.c包含的头文件,用来定义不同的变量和结构。

·load. asm这个文件包含了模拟对DSP形成运算负载的程序。

·vectors.asm这是定义中断向量的表文件。

·volume.cmd这个CMD文件。

·rts.lib DSP运行环境库。

如果你要从你的工程中删除一个文件,在Project View中右击文件,在弹出的菜单中选择“Remove from Project"。

DSP实验指导书

3.查看源代码

双击volume.c,源代码会出现在CCS窗口的右半窗口。在此C程序中应注意以下部分:

·主函数main输出第一条信息后,进入一个无限循环。在该循环内,主函数调用了函数dataIO和processing。

·函数processing将输入缓冲区中取出的每一个值乘以增益(gain),然后将结果送入输出缓冲区。它也调用了汇编加载程序,这在变量调入的处理过程中会消耗大量指令周期。

·本程序中的函数dataIO完成返回(return)操作,使用探针从文件中将数据读入缓冲区,其效率大大超过了用C代码来完成I/O操作。

4.编译和运行程序

按以下步骤编译运行程序:

1)选择Project→Rebuild All或者单击窗口菜单,CCS将编译、连接工程中的

所有文件,这个工程的编译连接消息将在底部的一个窗口显示。默认方式编译过程中,在当前项目文件存在目录下将生成一个Debug子目录,生成可执行zhangsan.out文件放在该目录下。

2)选择File→Load Program,选择在\zhangsan\debug目录刚刚生成的zhangsan.out文件。

CCS将把程序载入到DSP内,并且打开一个反汇编(Disassembly)窗口。在反汇编窗口你可以看到一个绿色的箭头,它表示当前DSP的程序指针地址(PC值),注意此时PC 指针将指向c_ int00的位置。

3)在反汇编窗口中点击一条汇编指令,按下F1,CCS寻找该条指令的帮助文件。这是一个熟悉的汇编指令的帮助信息的好办法。

4)选择Debug→Go Main,使程序从主函数main处开始执行程序,这一进程将在main 处暂停显示 符号。

5)选择Debug→Run或单击工具条中的。

6)选择Debug→Halt或单击工具条中的,使程序退出运行状态。

5.使用断点和观察窗

当你开发并测试一个程序的时候,你经常需要查看在程序执行过程中一个变量的值的变

DSP实验指导书

化。本节中,你将使用断点和观察窗口来查看这些值,你也可以在到达断点以后使用单步调试命令。

1)选择File→load Program,装载zhangsan.out。

2)双击打开volume.c程序,把你的光标移到这一行:

dataIO( );

3)单击Toggle Breakpoint工具栏按钮,或者按下F9,此时将在这一行设置一个断点,用红色的小点表示。

4)选择View→Watch Window或者,一个单独的窗口将出现在CCS窗口的右下方。在程序运行中,该区域将显示被观察的变量的值。在默认方式下,首先选中的是Watch Locals 选项,在函数执行时,局部变量被显示出来。

5)程序如果未回到main处,选择Debug→Go Main.

6)选择Debug→Run或者按下F5或者。

7)选择Watch1选项,在Name栏单击表达式按钮,并将dataIO作为变量名输入。单击观察窗口的空白处保存设置,变量值会立即显示出来。

9)单出(Step Over)或按F10键单步调用执行指令dataIO()。

10)结束本练习,使用,清除所有断点。

6.使用观察窗口查看结构体变量

1)选择Watch1选项。

2)在Name栏单击表达式按钮,并将str作为变量名输入。

3)单击观察窗口的空白处保存设置,变量值会立即显示出来。

4)重新查看源程序会发现一个PARMS类型的结构体变量已经在volume.c中被初始化并定义为全局变量。该结构体类型是在volume.h中定义的。

5)单击str旁的+号,CCS将扩展该行并列出该结构体中的所有元素及其值(显示出的链接可能有所不同),通过双击其中元素值可更改选中的元素值。

6)在观察窗口的value列中,改变一个变量的值。注意此时观察窗口的值已经改变,同时该变量的颜色变为红色,表明已经改变了该变量的值。

7)窗口中选择str变量并按Delete键,并对观察窗口中的所有表达式重复该步骤。

8)选择Debug→Breakpoint,在Breakpoint栏中单击Delete All并单击OK。

DSP实验指导书

8.为文件的I/O添加探针(Probe Point)

在本节中,你将添加一个探针,这个探针将从你的电脑上的文件中读取数据,探针是在算法开发中十分有用的工具。你可以通过以下几条途径使用它们:

·通过一定的算法,把主机电脑文件中的输入数据向目标板上的缓冲区传输。

·把目标板上缓冲区内的输出数据向主机传输,用于分析。

·更新窗口,比如一个图表等。

探针和断点有些相似,因为他们都可以中止目标板来完成已们的行为。但是,他们也有所不同,具体如下:

·探针即刻停止目标板,完成一个单独的行为,然后继续目标板的执行过程。

·断点停止CPU的工作,直到它的执行过程重新被手动继续。

·探针允许输入输出文件自动的被执行,而断点不行。

本节显示了如何使用探针向目标板传送数据。并且使用了一个断点在运行到探针的时候来更新所有打开的窗口。窗口中包括输入和输出的窗口。

1)选择Project→Rebuild All或者单击。

2)选择File→Load Program,将zhangsan.out加载到DSP中。

3)在volume.c中dataIO();这一行设置一个断点。

4)单击,在dataIO();这一行前面出现一个蓝色菱形标志,表示在这一行插入探针。

5)选择File→FileI/O。出现了文件I/O对话框,这样你就可以选择输入输出的文件。选择AddFile,选择sine.dat文件,添加到FileI/O的对话框中。这时出现了一个sine.dat 的窗口,当你运行程序时,你可以用这个窗口开始,停止,回放数据文件。在File I/O 对话框中,把Address改为“inp_buffer",把Length改为“100",在WrapAround选项前打钩。如下图所示:

其中,Address栏指出了文件中的数据将置于何处。Length栏指每一次程序运行到探针时从数据文件中读取数据的长度。Wrap Around选项使CCS循环从文件中读取数据。这就使数据文件被视为连续的数据流。

一个关于sine.dat文件的控制窗口显示出来。

6)单击Add Probe Point,出现Break/Probe/Frofile对话框。选中在上面步骤中建立的探针,在Connect列表中选取sine.dat文件。单击Replace,这时候探针和sine.dat文件就建立了连接。

点击绿色一行,如下图所示。

点击Connect,下拉菜单,如下图所示

点击add,可以得到:

7)单击确定完成Add Probe Point设置。

8)单击确定,关闭File I/O对话框。

9显示图形

DSP实验指导书

CCS提供了许多种用图表显示数据的方法,在这个例子中,你将看到一个基于时间的信号图。

1)选择View → Graph → Time/Frequency。对弹出的对话框依照下图对应修改。这样就为输入缓冲区inp_ buffer建立了一个波形观察窗口。

2)在Graph Propert对话框中,按下图所示设置Graph Title,Star Address,Acquisition Buffer Size,Display Data Size,DSP Data Type,Autoscale,Maximum Y-value的值;向下移动滚动条或改变窗口大小可以看出所有的属性值。

2}同1}的方法为输出缓冲区out buffer建立了一个波形观察窗口。改变Graph Title为Output,Star Address为out_buffer,其它设置一律不变。设置如下:

DSP实验指导书

图13 图形显示设置对话框(2)

9.启动程序并显示图形

在本节中,将设置一个断点来更新所有的窗口,并且使用Animate功能在到达断点之后能够自动的继续程序的执行。

1)重新加载程序volume.out

2)在volume.c窗口中,在dataIO()的那一行设置断点

3)单击Animating运行程序。

Animate和Run命令有些类似,它使目标板一直运行直到遇到一个断点,这时目标板被停止,所有的窗口被更新。但和run命令不同的是,Animate继续运行程序直到下一

DSP实验指导书

个断点。这样的过程直到手动停止目标板的工作。

4)注意到每个图表都有一个正弦信号,不同的是两者反相了。每次遇到一个探针,CCS

从dine.dat文件中得到100个值,并把他们写入inp_buffer的地址中。信号反向是因为输入缓冲区包含的从sine.dat中读到的数据,而输出缓冲区包含的processing函数产生的数据。

11调整Gain的值

从volume.c中,我们可以看出,processing函数利用gain和输入缓冲区的每一个值相乘,并且把结果置十输出缓冲区。在循环中,执行下列语句:

*output++=*iuput++*gain

gain初始被置为MINGAIN,这在volume.h中有定义。为了修改输出值,你需要修改gain的值,一种方法是使用一个观察变量(watch window )。

1)选择View}Watch Window。在watch窗口中添加gain变量,观察其值,如下:2)如果你已经停止了目标板,单击重新运行程序

3)在Watch窗口中把gain的值改成l0。观察波形的变化,如下:

【实验思考题】

1.如何产生测试正弦信号的数据文件“sine.dat”?参考教材280页

2.探针的作用是什么?

3.建立一项工程文件,一般包括哪些文件,每个文件的作用是什么?

实验二基本算术运算

【实验目的】

1.练习TMS320C54X汇编程序的编写与调试方法,重点练习C54X程序流程控制方法

2.掌握用C54X进行算术运算的基本方法和使用的基本语句

3. 掌握汇编指令系统的使用方法,重点练习一些在功能上有所扩展的特殊指令

【实验内容】

1.创建一个新项目工程

将“x:…\base_operation文件夹”复制到“c:\Program Files\ti\myprojects文件夹”下。2.打开工程调试程序

DSP实验指导书

1)阅读工程exer1.prj下exer1.asm程序,读懂加、减、乘、除汇编代码;

2)单击,编译、连接工程,生成exer1.out;选择File→load Program,装载exer1.out;

选择Debug→Restart,光标移动到这一行“_c_int00: ”

3)使用添加断点,使用单步调试,通过View→Memory观察存储空间(首地址为0x080)的内容,分析运算结果。

DSP实验指导书

DSP实验指导书

4)整个的参考结果如图所示:

DSP实验指导书

DSP实验指导书

3. 编程y=0.5*0.4+0.6*0.5。

【实验思考题】

1. 编程y=0.4/0.5+0.6*0.5,尽量采用子程序调用的方式(乘法,除法)实现,并且注

释程序。

实验三 FFT 谱分析实现

【实验目的】

1.了解FFT 算法的原理

2.了解在DSP 中FFT 的设计及编程方法

3.掌握C54x 的存储器管理、辅助寄存器的使用及位码倒序寻址方式等技巧 【实验原理】 1.FFT 原理

对于有限长离散数字信号{][n x },10-≤≤N n ,它的频谱离散数学值(){}K X 可由离散傅立叶变换(DFT )求得。DFT 定义为

()∑-=-=1

)/2(][N N nk N j e n x K X π 1,,1,0-=N k

也可以方便地把它改写成如下形式

DSP实验指导书

()∑-==1

0][N N nk

N

W n x K X 1,,1,0-=N k 式中,N W 代表nk

N j e

)/2(π-。不难看出,nk

N W 是周期性的,且周期为N ,即

nk

N

lN k m N n N W W =++))(( ,2,1,0,±±=l m nk

N

W 的周期性是DFT 的关键之一。为了强调,常用表达式N W 取代W 以便明确地给出nk

N

W 的周期为N 。 由DFT 的定义可以看出,在][n x 为复数序列的情况下,完全可以直接运算N 点的DFT 需要()2

1-N 次复数乘法和)1(-N N 次复数加法。因此,对于一些相当大的N 值来说,直

接计算它的DFT 所需要的计算量是很大的。一个优化的实数FFT 算法是一个组合以后的算法。原始的2N 个点的实输入序列组成一个N 点的复序列,然后对复序列进行N 点的FFT 运算,最后再将N 点复数输出拆分成2N 点的复数序列,这2N 点的复数序列与原始的2N 点的实数输入序列的DFT 输出一致。

FFT 的基本思想在于:将原来的N 点序列分成两个较短的序列,这些序列的DFT 可以简单地组合起来得到原序列的DFT 。例如,若N 为偶数,将原有的N 点序列分成两(N /2)点序列,那么计算N 点DFT 将只需要约[]

2/2)2/(22N N =?次复数乘法,即直接计算少进行一半乘法。因子()2

2/N 表示直接计算(2/N )点DFT 所需要的乘法次数,而乘数2

代表必须完成两个DFT 。上述处理方法可以反复使用,即(2/N )点的DFT 计算也可以简化成两个(N /4)点的DFT (假定N /2为偶数),从而又少进行一半乘法。使用这种方法,在组合输入和拆分输出的操作中,FFT 的运算量均减半。这样,利用实数FFT 算法来计算实输入序列的DFT 的速度几乎是一般FFT 的两倍。

假定序列{][n x }的点数N 是2的幂,按上述处理方法,定义两个分别为][n x 的偶数项和奇数项的(2/N )点序列][1n x 和][2n x ,即

]2[][1n x n x = 12,

,2,1,0-=N n []12][2+=n x n x 12

,,2,1,0-=N

n

{][n x }的N 点DFT 可写成

()∑∑-=+-=++

=

1

2/0

)12(212/0

]12[][N N k n N

nk N

N N W

n x W

n x K X

因考虑到k

N W 可写成

DSP实验指导书

[]

2/)2//()2(2

/)2(N N j N

j k N W e e W ===--ππ

故()K X 可写为

())

()( ]12[][2112/0

2

/2

22

/12/0

1

K X W K X W

n x W

W

n x K X k

N N N nk N k N

nk

N N N +=++=

∑∑-=-=

式中,)(1K X 和)(2K X 是][1n x 和][2n x 的(2/N )点DFT 。上式表明,N 点的DFT

()K X 可分解为按上式的规则加以组合的两个(2/N )点DFT 。

2.DSP 的FFT 算法 2.1 码位倒序

FFT 的码位倒置实际上是将输入数据进行倒序,以便在输出时得到正确的序列,以N =8为例说明码位倒置的原理。设输入序列为][n x ,对N =8,其自然序列号是0,1,2,3,4,5,6,7。第一次按奇、偶分开,得到两组N /2点的DFT ,][n x 的序号为

0,2,4,6 | 1,3,5,7

对每一组再按奇、偶分开,这时应将每一组按自然顺序排列,故抽取后得到四组,每组序号为

0,4 | 2,6 | 1,5 | 3,7

这是一种直观的解释,实际编程时应考虑运算速度。下面再讲述一种汇编常用的算法。还以上面为例,设输入序列为][n x ,对N =8,把][n x 的序号1,,2,1,0-=N n 写成二进制数,即[]7,],0[x x 对应为

]000[x ,]001[x ,]010[x ,]011[x ,]100[x ,]101[x ,]110[x ,]111[x

采用加N /2逆向进位法,即将前一个数加上[100],如果有进位则向低位进位,如

[110]+[100] 逆向进位得到[001],那么可得到如下序列:

]000[x ,]100[x ,]010[x ,]110[x ,]001[x ,]101[x ,]011[x ,]111[x

对应十进制序号为

]0[x ,]4[x ,]2[x ,]6[x ,]1[x ,]5[x ,]3[x ,]7[x

这也是按奇、偶抽取得到的顺序。掌握这一规律才能正确编程。 2.2 W 因子的生成及分布规律

在FFT 中,乘法主要来自旋转因子,因为)/2sin()/2cos(N r j N r W r

ππ-=,所以在对r

W 相乘时,必须产生相应的正、余弦函数。在编程时,正、余弦函数产生的方法一般有两种:一种是在每一步直接产生,另一种是在程序开始预先计算出r

W ,将

DSP实验指导书

1,,1,0-=N r 这N 个独立的值存于数组中,等效建立了一个正、余弦函数“表”,在程

序执行时可直接查“表”得到。这样可提高运算速度,但占用了更多的内存。

每一级r

W 因子分布有如下规律:

m =0级,r W 2,r =0 m =1级,r W 4,r =0,1 m =2级,r W 8,r =0,1,2,3

m =M -1级,r

N

W ,r =0,1,2,12/,-N 因此,可以得出r

W 因子的一般分布规律为 第m 级,r

m W 12+,r =0,1,2,m 2, 2.3 蝶形运算的基本原理

对于任何一个2的整数幂M

N 2=,总可以通过M 次分解后成为2点的DFT 计算。这样的M 次分解,也构成了从][n x 到)(k X 的M (即N 2log )级迭代计算,每级由2/N 个蝶形运算组成。可以得计算方程

)()()(1q X W p X p X m k

N m m +=+ )()()(1q X W p X q X m k N m m +=+

完成M

N 2=点的DFT 计算需要N 2log 级迭代运算,那么计算256点的DFT 就要8级迭代运算。

2.4 功率谱的计算

用FFT 计算][n x 的频谱,即计算

∑-=-=1

0][)(N N nk

N

W n x k X ()k X 一般是实部)(k X R 和虚部)(k X I 组成的复数,即

)()()(k jX k X k X I R +=

因此,只需要将FFT 变好的数据按照虚部的平方加上实部的平方,然后再对得到的数据进行开方,就能得到功率谱密度。

DSP实验指导书

根据FFT算法,设计程序并上机调试。

【实验内容与步骤】

1.运用MA TLAB信号处理工具箱中FFT函数编程实现FFT,注意fft(x)和fft(x,N)的区别。要求绘制原始信号波形图和幅频图。

参考代码如下:

%此程序仿真fft过程的是实验

%利用Matlab产生余弦信号:

clear all;

N=256;

y=zeros(1,N);

for i=0:N-1

y(i+1)=(sin(2*pi*(i*10)/256)+sin(100*pi*i/256))/2;

end

%绘制时域余弦信号

figure(1)

stem(y);

%绘制时域余弦信号的频谱

m=fft(y,N);

y1=abs(m);

figure(2)

plot(y1);

%验证ifft函数

figure(5)

plot(ifft(m));

%利用Matlab产生方波信号:

j=1;

A=1;

a1=1;

y=zeros(1,N);

for i=1:N

if(i/20==a1)

j=(-1)*j

a1=a1+1;

end

if (j==1)

y(i)=50;

else

y(i)=-50;

end

end

%绘制时域方波信号

figure(3)

DSP实验指导书

stem(y);

%绘制时域方波信号的频谱

y1=abs(fft(y,N));

figure(4)

plot(y1)

运行结果如下:测试点数N=256时

DSP实验指导书

测试点数N=64时

DSP实验指导书

2.启动CCS,创建工程FFT,添加相关文件,或者将“x:…\fft文件夹”复制到“c:\Program

Files\ti\myprojects文件夹”下。

3.打开fft.asm源程序,单击,进行编译,链接生成fft.out并装入5402存储器。

4.将光标移动到“call get_input”行,并设置一个探针点。光标移动到下一行“nop”语句,使用工具设置一个断点。

5.选择File→File I/O,使用Add File打开FFT目录下的方波数据文件fft.dat,然后修改”Address”为“d_input_addr”,修改”Length”为256。并选择“Wrap Around”,循环使用该数据文件。

6.选择“Add Probe Point”,将探针点与该数据文件连接起来。选择探针点,然后在“ Connect”选项中选择需要使用的数据文件名,再选择“Replace”,按确定完成。

DSP实验指导书

7.完成探针设置后,可以使用F5或”Run ”命令或者

启动程序运行。程序执行到探针

点时自动从数据文件读出256个点的数据放入缓冲d_input_addr 。

8.选择View → Graph → Time/Frequency 打开一个波形观察窗口。将“Star Address ”改为“d_input_addr ”,将“Acquisition Buffer Size ”改为128,将“DSP Data Type ”改为“16-Bit signed integer ”,这样即可显示128个输入点的小波形。

9.调整窗口大小,将光标移动到源程序的“b _c_int00”这行,使用Debug 中的“Run to Cursor ”项,程序将执行到这行并停下。这时FFT 程序已经计算完成。再打开一个波形窗口,这次仅仅将将“Star Address ”改为“d_output_addr ”, 便可以显示计算完成后的谱波形。

10.选择Debug →Animae 运行程序,这时程序将循环运行,不断从数据文件fft.dat 中读出数据,并计算其频谱。这时你可以看到连续的输入/输出波形。

11.选择原始数据波形窗口,单击鼠标右键,进入“Properties ”属性对话框。你可以将“Display Type ”改为“FFT Magnitude ”,这时输入数据将显示其频谱,对比两个图形,看看谱线的位置是否一样?

12. 选择File →File I/O ,使用Add File 打开FFT 目录下的正弦数据文件sine.dat ,重复7-11的操作。 【实验思考题】

1. 代码指令:ST B,*AR2 ||SUB *AR2+0%,B 功能是什么?

实验四 数字滤波器的设计

【实验目的】

1.了解FIR 、IIR 滤波器的原理及使用方法 2.熟悉使用MATLAB 语言设计FIR 、IIR 滤波器的方法 3.掌握DSP 对FIR 、IIR 滤波器的设计及编程方法 【实验原理及简要说明】

数字滤波器的输入][k x 和输出][k y 之间的关系可以用如下常系数线性差分方程及其Z

变换描述,即

∑∑==---=N

i i M i i i k y a i k x b k y 0

][][][

系统传递函数为

DSP实验指导书

∑∑=-=-+==

N k k

k M

k k

k z a z

b z X z Y z H 0

01)

()

()(

转换成零极点表示为

=--=N

j j

j p z z z C z H 1

)(

式中,j z 表示零点;j p 表示极点。)(z H 具有N 个零点和N 个极点,如果任何一个极点在Z 平面单位圆外,则系统不稳定。对于IIR 滤波器,有系数量化敏感的缺点。由于系统对输入序列施加的算法是加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现,且不影响系统总的传输函数。

如果系数j b 全部为零,滤波器成为非递归的FIR 滤波器,这时系统没有极点,因此FIR 滤波器总是稳定的。FIR 滤波器的常系数线性差分方程及其Z 变换描述,即

∑=-=M

i i i k x b k y 0

][][

系统传递函数为

∑=-==M

k k k z b z X z Y z H 0

)()

()(

【实验内容与步骤】

本实验要求设计采样频率为1200Hz 、截止频率为200Hz 的高通滤波器。设计FIT 、IIR 滤波器实现上述要求。输入信号为100Hz 和300Hz 的合成信号,目的是通过所设计的滤波器将100Hz 的信号滤掉,余下300Hz 的信号成份,达到滤波的效果。 1. 滤波器的MATLAB 语言设计

在MA TLAB 中使用滤波器设计工具箱(FDA )来设计滤波器,首先打开MA TLAB ,在命令窗口中输入FDAtool ,将实现滤波器设计工具箱。

图1是滤波器设计的主界面,可通过输入滤波器的参数可以设计各种满足用户要求的滤波器,包括滤波器的类型(IIR 或FIR )、滤波器的阶数(Specify order )、滤波器的截止频率(Fpass )、带宽、纹波系数(Apass )采样频率(Fs )等有关参数。

DSP实验指导书

DSP实验指导书

图1 IIR滤波器设计的主界面

图2、图3、图4和图5分别对应滤波器的频率特性、冲激响应特性图、阶跃响应特性图和零极点示意图。

DSP实验指导书

图2 滤波器的频率特性

DSP实验指导书

DSP实验指导书

图3 冲激响应特性图

DSP实验指导书

图4 阶跃响应特性图

DSP实验指导书

图5 零极点示意图

FIR设计:滤波器的类型为FIR、滤波器的阶数(Specify order)、滤波器的截止频率(Fc)、采样频率(Fs),指定滤波器采用的窗类型(Window)等有关参数。

DSP实验指导书

DSP实验指导书

图6 FIR滤波器设计的主界面

DSP实验指导书

图7 滤波器的频率特性

相关推荐
相关主题
热门推荐