文档库 最新最全的文档下载
当前位置:文档库 › DSP实验报告

DSP实验报告

实验三加减法和乘法运算一.实验目的

掌握加减法和乘法运算指令。

二.实验设备

计算机、ZY13DSP12BD实验箱、5402EVM 板。

三.实验内容

编写程序,分别实现计算z=x+y-w,y=mx+b、y=x1×a2+x2×a2,

∑i

i i

x

a

y

4

1

=

=

四.实验步骤

1.用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。

2.新建一个项目:点击Project-New,将项目命名为example4,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3.新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example4),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example4.asm 。

4.在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example4.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example4.asm 文件添加到该项目中去.

5.编写源程序:在工程管理器中双击example4.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

计算z=x+y-w

.title "example4.asm"

.mmregs

STACK .usect "STACK",10H ;堆栈的设置

.bss x,1 ;为变量分配4个字的存储空间

.bss y,1

.bss w,1

.bss z,1

.def start

.data

table .word 10,26,23 ;x,y,w

.text

start: STM #0,SWWSR ;插入0个等待状态

STM #STACK+10H,SP ;设置堆栈指针

STM #x,AR1 ; AR1指向x

RPT #2

MVPD table,*AR1+ ;把程序存储器中的数据移动到数据存储器

CALL SUMB

end: B end

SUMB: LD *(x),A

ADD *(y),A

SUB *(w),A

STL A,*(z)

RET

.end

6.编写链接配置文件:

/*example2.cmd */

vectors.obj /*中断向量的目标文件*/

example2.obj /*产生目标文件*/

-o example2.out /*产生可执行下载文件,文件名可以根

据不同项目而定*/

-m example2.map /*产生存储器映射文件,文件名可以

根据不同项目而定*/

-estart /*程序入口*/

MEMORY

{

PAGE 0: /*定义程序存贮区*/

EPROM:org=0090H len=0F70H /*定义EPROM区,起始地址0090H,

长度0F70H*/

VECS: org=0080H len=0010H /*定义VECS区,起始地址0080H,长

度0010H*/

PAGE 1: /*定义数据存贮区*/

SPRAM:org=1000H len=1000H /*定义SPRAM区,起始地址1000H,长

度1000H*/

DARAM:org=2000H len=2000H /*定义DARAM区,起始地址2000H,

长度2000H*/

}

SECTIONS

{

.text :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM区*/ .data :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM*/ .bss :>SPRAM PAGE 1 /*将.text段映射到PAGE1的SPRAM区*/ STACK :>DARAM PAGE 1 /*将.text段映射到PAGE1的DARAM区*/ .vectors :>VECS PAGE 0 /*将中断向量表定位到PAGE0的VECS*/ }

7.编写中断向量表文件

/* vectors.asm */

.title "vectors.asm" /*中断向量表的文件名*/

.ref start /*引用外部定义的标号*/

.sect ".vectors" /*定义初始化的段名*/

B start /*引用start*/

.end

8.对项目进行编译和链接:

把example4.asm 、vectors.asm 、example4.cmd 依次添加到项目后,点击Project -Compile File ,在项目编译成功之后点击Project -Build 选项对该项目进行链接,生成*.out 文件。

9.装载可执行文件:要让程序代码在DSP 内部运行必需将生成的*.OUT 文件装载到DSP 内部,装载方法是点击:File -Load Programe 再选择生成的example4.out 文件就可以将程序装载到DSP 的内部存储器中。

10.运行程序并查看结果:

a )首先打开欲查看的数据空间:点击

View -Memory ,弹出“Memory Window Options ” 对话框,把欲查看的地址改为0x1000,如下图所示。

b)点击OK 按钮,然后点击Debug -Run 让程序在DSP 内部运行,最后点击Debug -Halt ,再观察“Memory ”对话框,结果如下:

11.建立其它项目工程文件

建立项目工程文件example5,使之实现计算y=mx+b ;建立项目工程文件

example6,使之实现计算y=x1×a2+x2×a2;建立项目工程文件example8,使之实现计算∑i i i

x a y 41==。

example5的结果example6结果

e xample8的结果

实验九除法运算

一.实验目的

掌握除法运算的实现方法。

二.实验设备

计算机、ZY13DSP12BD实验箱、5402EVM板。

三.实验原理

在’C54x中没有除法器硬件,也就没有专门的除法指令。但是,可以利用一条条减法指令(SUMC指令)加上重复指令“RPT #15”就可以实现两个无符号数的除法运算。

四.实验内容

分别编写程序,实现计算0.4÷(-0.8)和16384÷512的值。

五.实验步骤

1.用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。

2.新建一个项目:点击Project-New,将项目命名为zhao9f,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。

3.新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao9f),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为zhao9f.asm 。

4.在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击zhao9f.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的zhao9f.asm文件添加到该项目中去。

5.编写源程序:在工程管理器中双击zhao9f.asm ,将出现文本编辑窗口,在该文本编辑窗口中编写程序计算0.4÷(-0.8)的值。

6.编写链接配置文件:参照实验三,将example4.cmd中的example4.obj改为zhao9f.obj,-o example4.out改为-o zhao9f.out,-m example4.map改为-mzhao9f.map。

7.编写中断向量表文件

8.对项目进行编译和链接:把zhao9f.asm、vectors.asm、zhao9f.cmd依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件.

9.装载可执行文件:要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-Load Programe再选择生成的

zhao9f.out文件就可以将程序装载到DSP的内部存储器中。

10.运行程序并查看结果:

(1)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x1000,如下图所示。

(2)点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,结果如下:

11.上述程序是商为小数的除法,下面编写商为整数的除法:

(1)建立项目工程文件zhao9g,编写源程序zhao9g.asm,计算16384÷512的值

(2)编写链接配置文件:参照实验三,将example4.cmd中的example4.obj 改为zhao9f.obj,-o example4.out改为-o zhao9f.out,-m example4.map改为-m zhao9f.map。

(3)编写中断向量表文件

(4)把各文件添加到项目中并对项目进行编译和链接并下载到DSP内部,具体方法请参照前面的步骤。

(5)运行程序并查看结果:首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options” 对话框,把欲查看的地址改为

0x1000,如下图所示。运行程序后,结果如下:

实验十四IIR滤波器的DSP实现方法一.实验目的

掌握IIR滤波器的设计方法。

二.实验设备

计算机、ZY13DSP12BD实验箱、5402EVM板。

三.实验原理

用双操作数指令实现二阶IIR滤波器;

反馈通道:x0=w(n)=x(n)+A1*x1+A2*x2;

前向通道:y(n)=B0*x0+B1*x1+B2*x2 。

四.实验内容

将DSP处理后的信号波形在CCS中显示出来。

五.实验步骤

1.用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。

2.新建一个项目:点击Project-New,将项目命名为IIR2,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。

3.新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(IIR2),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为IIR2.asm 。

4.在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击IIR2.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的

IIR2.asm文件添加到该项目中去。

5.编写源程序:

在工程管理器中双击IIR2.asm ,将出现文本编辑窗口,在该文本编辑窗口中编写asm程序。

6.编写链接配置文件。

7.编写中断向量表文件

8.建立文件in.txt,out.txt,即建立方波输入文件,和滤波后输出的文件。in.txt文件内容为:输入30个数字“16384”(相当于0.5,若是改为32767,则有可能出现溢出现象),30个数字“0”,每行只输入一个数字。out.txt文件为空内容,用来存放输出结果。

9.对项目进行编译和链接:把IIR2.asm、IIR2.cmd、vectors.asm依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out文件。

10.装载可执行文件:要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-Load Programe再选择生成的IIR2.out 文件就可以将程序装载到DSP的内部存储器中。

11.关联输入输出文件:打开IIR2.asm文件,把光标移到“MVDD *AR5,*AR3”

这一行,然后点击Porject Toolbar上的探针按钮;把光标移到“MVDD

*AR3,*AR2”这一行,同样的点击,然后再设置断点,即点击按扭。

此步设置文件关联。点击File——File I/O,在弹出的对话框中点击Add File,把in.txt添加进来,在Address栏中输入0x2003,Lenth输入0x0001(代表文件的输入地址即indata在内存中的输入地址),选中”Wrap Around”(表示输入文件中的数据是循环向DSP内存中的输入地址),下面是设置好的界面:

点击“Add Probe Point”按钮,在弹出的对话框:

在上图中点击一下“IIR2.asm line 45-->No Concection”然后在Connect下拉菜单中选择……in.txt文件(……代表路径),最后点击Replace按扭,点击确定,如下图所示。这样就把in.txt文件与第一个探针相关联了,以后程序运行到此探针处就会从in.txt文件中读取数据。

同理在上述窗口中点击File Output,点击Add File,把out.txt添加进来,在Address栏中输入0x2004,在Length栏中输入0x0001,其它按默认设置,下图是设置的结果:

完成上述步骤后,点击Add Probe Point,在弹出的窗口中点击IIR2.asm line 58-->No Connection,在Connect下拉菜单中选择out.txt文件,最后点击Replace,下图是设置好的窗口:

点击“确定”,然后再点击“确定”,此时即已完成文件关联设置操作。

12.其它设置:

点击View——Graph——Time/Frequence,出现“Graph Property Dialog”,按下图所示设置,点击OK。同时显示输入的波形和输出的波形。

13.在输入端加入高斯白噪声之后,波形显示如下图:

实验十九 IIR滤波器的DSP实现方法

(C语言版)

一.实验目的

1.熟悉设计IIR数字滤波器的原理与方法。

2.掌握数字滤波器的计算机仿真方法。

3.通过观察对实际信号的滤波作用,获得对数字滤波器的感性认识。二.实验设备

计算机、ZY13DSP12BD 实验箱、示波器、5402EVM 板。

三.实验原理

IIR 与FIR 数字滤波器的比较:

(1)在相同技术指标下,IIR 滤波器由于存在着输出对输入的反馈,因而可用比FIR滤波器较少的阶数来满足指标的要求。

(2)FIR 滤波器可得到严格的线性相位,而IIR 滤波器选择性愈好,相位的非线性愈严重。

(3)FIR 滤波器主要采用非递归结构,因而从理论上以及从实际的有限精度的运算中,都是稳定的。IIR 滤波器必须采用递归结构,极点必须在z 平面单位圆内,才能稳定,这种结构,运算中的四舍五入处理,有时会引起寄生振荡。四.实验内容及实验步骤

1.打开电源APW1 和APW2。用示波器观察信号源的S1。调节S1 幅度调节(RW8)和频率调节(RW2)使得S1 输出的信号频率为 1.5KHz,幅度为1V 左右。同理调节信号S2 的使得输出的频率为15KHz,幅度为1V 左右。

AD 的输入信号ADIN 的偏移量为 1.2V,信号幅度的最大值小于 2.5V(5510A 的输入信号的幅值小于4V),信号幅度的最小值大于0V。

5.观察低通滤波器的效果。设置断点,点击“Animate”按钮,如下图所示。

图19-1 断点设置

6.点击View->Graph->Time/Frquence 打开图形属性对话框,如下设置。采用双综观察 2 路信号输入变量xin 和IIR 滤波后的输出变量y。观察点数

为128 点。

7.点击“OK”后,可以得到如下波形。

8.改变图形显示方式可以观看到频域的滤波效果。

图19-4滤波前的频域

图19-1 滤波后的图形

六.实验收获

通过此实验了解了IIR滤波器的设计原理,实践了DSP的C语言编程,从

实际的信号滤波结果看到了IIR滤波器的滤波效果,并有了些感性的认识。

实验十五 FIR 滤波器的DSP 实现方法

一.实验目的

掌握FIR 滤波器的设计方法。

二.实验设备

计算机、ZY13DSP12BD 实验箱、5402EVM 板。

三.实验原理

FIR 滤波器是有限长单位脉冲响应数字滤波器,其系统函数一般为:

1

0()()N n n H z h n z --==∑

其实现方法与前面介绍的IIR 滤波器结构的实现方法类似。

四.实验内容

将采集到的信号经过DSP 处理,将FIR 处理后的波形在CCS 中显示出来。

五.实验步骤

1.用仿真机将计算机与 ZY13DSP12BD 实验箱连接好,并依次打开实验 箱电源、仿真机电源,然后运行 CCS 软件。

2.新建一个项目:点击 Project -New ,将项目命名为 fir1,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为 CCS 软件不能识别以中文命名的文件夹。

3.新建一个源文件:点击 File -New -Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(fir1),保存类型选择*.ASM (如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为 fir1.asm 。

4.在项目中添加源文件:在新建立了一个源文件以后,要想使用 CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击 fir1.pjt ,在弹出的菜单中选择 Add Files ,然后将刚才建立的 fir1.asm 文件添加到该项目中去。

5.编写源程序、链接配置文件和中断向量表文件。

6.对项目进行编译和链接:把fir1.asm 、fir1.cmd 、sintable2.asm 依次添加到项目后,点击 Project -CompileFile ,在项目编译成功之后点击 Project -Build 选项对该项目进行链接,生成*.out 文件。

7.装载可执行文件:要让程序代码在 DSP 内部运行必需将生成的*.OUT 文件装载到 DSP 内部,装载方法是点击:File -Load Programe 再选择生成的 fir1.out 文件就可以将程序装载到 DSP 的内部存储器中。

8.运行程序并查看结果:由于单位脉冲响应的输出结果(afterfir 段)分配在空间 0x2015 处,所以:

a)点击 View ——Graph ——Time/Frequence ,出现“Graph Property

Dialog”,按下图所示设置,然后点击 OK ,即会出现一个图形窗口。

图15-1 图形窗口设置

b)打开文件fir1.asm,在其倒数第二行处设置断点(即MVDK *AR5+,@XN 处)。

图15-2 FIR滤波器的单位脉冲响应运行结果

c)按F12 运行程序(注意不要直接运行程序)。此时即可看到如图15-2所示的结果,且图形不断闪烁(在更新)。

六.实验收获

通过本实验,自己查阅学习和掌握了FIR滤波器的设计方法,熟悉了CSS 开发环境,通过FIR滤波器的作用,我们可以清楚的观察到自己输入的单位脉冲响应的输出结果,对FIR滤波器有着一种直观的理解。

实验二十 FIR 滤波器的DSP 实现方法

(C 语言版)

一.实验目的

1.掌握用窗口函数法设计FIR 数字滤波器的原理和方法。

2.熟悉线性相位FIR 数字滤波器特性。

3.了解各种窗口函数对滤波特性的影响。

二.实验设备

计算机、ZY13DSP12BD 实验箱,示波器、5402EVM 板。

三.实验原理

1.有限冲击响应数字滤波器的基础理论。

FIR 数字滤波器是一种非递归系统,其冲击响应h(n)是有限长序 列,其差分方程表达式为:

1

0()()()N i y n h i x n i -==-∑

N 为FIR 滤波器的阶数。

在数字信号处理应用中往往需要设计线性相位的滤波器,FIR 滤 波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位 特性。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实 序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。 这样,当N 为偶数时,偶对称线性相位FIR 滤波器的差分方程表达式 为:

/21

()()(()(1))N i y n h i x n i x N n i -==-+---∑

有上可见,FIR 滤波器不断地对输入样本x(n)延时后,再做乘法 累加算法,将滤波器结果y(n)输出,因此,FIR 实际上是一种乘法累加 运算。而对于线性相位FIR 而言,利用线性相位FIR 滤波器系数的对称 性,可以采用结构精简的FIR 结构将乘法器数目减半。

2.加窗法设计FIR 滤波器步骤:

a) 给出希望设计的滤波器的频率响应函数()jw d H e ;

b) 根据允许的过渡带宽度及阻带宽度衰减,初步选定窗口函数和N 值; c) 计算以下积分,求出()d h n ;

1()()2jw jwn d d h n H e e dw πππ-=?

d) 将()d h n 与窗口函数相乘得FIR 数字滤波器的冲击响应h(n);

()()()d h n h n w n =?

e) 计算FIR 数字滤波器的频率响应,并验证是否达到所要求的指标;

四.实验内容与步骤

1.打开电源APW1和APW2。用示波器观察信号源的S1。调节S1幅度调节(RW8)和频率调节(RW2)使得S1输出的信号频率为1.5KHz,幅度为1V 左右。同理调节信号S2的使得输出的频率为15KHz,幅度为1V左右。

AD的输入信号ADIN的偏移量为1.2V,信号幅度的最大值小于2.5V(5510A 的输入信号的幅值小于4V),信号幅度的最小值大于0V。

5.观察低通滤波器的效果。设置断点,再点击“Animate”按钮,如下图所示。

图20-1 设置断点

6.点击View->Graph->Time/Frquence打开图形属性对话框,如下设置。采用双综观察2路信号输入变量xin和FFT滤波后的输出变量data2_imag。观察点数为64点。

相关文档