DSP芯片原理与应用指导书精.docx

上传人:b****4 文档编号:12187402 上传时间:2023-04-17 格式:DOCX 页数:24 大小:121.48KB
下载 相关 举报
DSP芯片原理与应用指导书精.docx_第1页
第1页 / 共24页
DSP芯片原理与应用指导书精.docx_第2页
第2页 / 共24页
DSP芯片原理与应用指导书精.docx_第3页
第3页 / 共24页
DSP芯片原理与应用指导书精.docx_第4页
第4页 / 共24页
DSP芯片原理与应用指导书精.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DSP芯片原理与应用指导书精.docx

《DSP芯片原理与应用指导书精.docx》由会员分享,可在线阅读,更多相关《DSP芯片原理与应用指导书精.docx(24页珍藏版)》请在冰豆网上搜索。

DSP芯片原理与应用指导书精.docx

DSP芯片原理与应用指导书精

实验一CCS开发环境练习

一、实验目的

掌握加减法运算指令。

掌握ccs编译环境的使用

二、实验设备

计算机、SEED-DTK实验箱、5416EVM板

三、实验原理

参见教材第3章

四、实验内容

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

五、实验步骤

1、用仿真机将计算机与SEED-DTK系列实验箱连接好,然后打开实验箱电源,再运行CCStudiov3.3软件。

2、新建一个项目:

点击Project-New,将项目命名为experiment2,然后点击OK,系统会自动生成一个与项目同名的文件夹。

注意项目名要用英文名,不要将项目取名为中文名,因为CCS软件不能识别以中文命名的文件夹。

3、新建一个源文件:

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

4、在项目中添加源文件:

在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。

添加方法是在工程管理器中右键单击experiment2.pjt,在弹出的菜单中选择AddFilestoproject,然后将刚才建立的example4.asm文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击example4.asm,将出现文本编辑窗口,在该文本编辑窗口中输入

如下内容:

*****************************************

**

*计算z=x+y-w*

**

*****************************************

.title"example4.asm"

.mmregs

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

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

.bssy,1

.bssw,1

.bssz,1

.def_c_int00

.data

table.word10,26,23;x,y,w

.text

_c_int00:

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

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

STM#x,AR1;AR1指向x

RPT#2

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

CALLSUMB

end:

Bend

SUMB:

LD*(x,A

ADD*(y,A

SUB*(w,A

STLA,*(z

RET

.end

6、编写链接配置文件:

新建一个源文件:

点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目同名的一个文件夹下面(experiment2,保存类型选择*.cmd,我们在这里将保存名字命名为dec5416.cmd。

输入以下文本内容:

MEMORY

{

PAGE0:

VECT:

origin=0x28100,len=0x100

IPROG1:

origin=0x200,len=0x7c00

IPROG2:

origin=0x28200,len=0x7c00

IPROG3:

origin=0x38000,len=0x8000

FLASHL:

origin=0x40000,len=0x40000

FLASHH:

origin=0x4000000,len=0x80000

PAGE1:

SPRAM:

origin=0x60,len=0x20

DARAM:

origin=0x80,len=0x3f80

/*×öÏàÓ¦ÉèÖúóÒ²¿ÉÒÔÊÇFLASH¿Õ¼ä*/

SARAM:

origin=0x8000,len=8000

}

SECTIONS

{

.vector:

{}>VECTPAGE0

.text:

{}>IPROG2PAGE0

.cinit:

{}>IPROG2PAGE0

.switch:

{}>IPROG2PAGE0

.const:

{}>IPROG2PAGE0

.stack:

{}>IPROG1PAGE0

.data:

{}>DARAMPAGE1

.bss:

{}>DARAMPAGE1

.cio:

{}>IPROG1PAGE0

}

7、编写中断向量表文件

新建一个源文件:

点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目同名的一个文件夹下面(experiment2,保存类型选择*.asm,我们在这里将保存名字命名为vector.asm。

输入以下文本内容:

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

.ref_c_int00;/*引用外部定义的标号*/

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

B_c_int00;/*引用start*/

.end

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

再从3.4.4Convolve文件夹下将dek-boot.gel文件拷到本项目所在的文件夹(experiment2并添加该gel文件。

把example4.asm、vector.asm、dec5416.cmd依次添加到项目后,点击Project-RebuildAll,编译成功之后并对该项目进行链接,生成*.out文件。

9、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:

File-LoadPrograme再在项目文件夹下的子文件夹debug中选择生成的example4.out文件就可以将程序装载到DSP的内部存储器中。

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

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

点击View-Memory,弹出“MemoryWindowOptions”

对话框,把欲查看的地址改为0x0080,如右图所示。

b点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:

11、修改汇编源程序文件

将以上项目源程序中SUMB子程序的寻址方式改成间接寻址方式,运行程序并查看程序运行结果。

并记录下程序运行结束后CPU寄存器的结果。

12、建立其它项目工程文件

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

.title"example4.asm"

.mmregs

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

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

.bssm,1

.bssb,1

.bssy,1

.def_c_int00

.data

table.word15,3,20;x,m,b

.text

_c_int00:

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

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

STM#x,AR1;AR1指向x

RPT#2

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

CALLSUMM

end:

Bend

SUMM:

LD*(x,T

MPY*(m,A

ADD*(b,A

STLA,*(y

RET

.end

操作步骤与前面相似,需要观察的数据存储器的地址均为0x0080;

下面是该项目程序的实验运行结果:

example5的结果

并记录下程序运行结束后CPU各寄存器的结果。

实验二定点运算实验

一、实验目的

掌握各种乘法指令。

二、实验设备

计算机、SEED-DTK实验箱、5416EVM板

三、实验原理

参见教材第三章。

四、实验内容

编写程序,实现y=Σaixi。

五、实验步骤

1、用仿真机将计算机与SEED-DTK实验箱连接好,并依次打开实验箱电源、仿真机电

源,然后运行CCStudiov3.3软件。

2、新建一个项目:

点击Project-New,将项目命名为zhao4,并将项目保存在自己定义

的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。

3、新建一个源文件:

点击File-New-SourceFile可以打开一个文本编辑窗口,点击

保存按键,保存在和项目相同的一个文件夹下面(zhao4,保存类型选择*.ASM(如果源文件

是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM

为保存类型),我们在这里将保存名字命名为zhao4.asm。

4、在项目中添加源文件:

在新建立了一个源文件以后,要想使用CCS编译器对该源文件

进行编译还需要将源文件添加到项目中去。

添加方法是在工程管理器中右键单击zhao4.pjt,

在弹出的菜单中选择AddFiles,然后将刚才建立的zhao4.asm文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击zhao4.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下

内容:

*************************************************

**

*用单操作数指令方案实现*

*y=(a1*x1+a2*x2+···a19*x19+a20*x20*

**

*************************************************

.title"zhao4.asm"

.mmregs

STACK.usect"STACK",30H

.bssa,20

.bssx,20

.bssy,2

.data

table:

.word1,2,3,4,5,6,7,8,9,10,11

.word12,13,14,15,16,17,18,19,20

.word21,22,23,24,25,26,27,28

.word29,30,1,2,3,4,5,6,7,8,9,10

.def_c_int00

.text

_c_int00:

STM#a,AR1

RPT#39

MVPDtable,*AR1+

LD#0,B

STM#a,AR2

STM#x,AR3

STM#19,BRC

RPTBdone-1

LD*AR2+,T;单操作数指令

MPY*AR3+,A;单操作数指令

ADDA,B

done:

STHB,*(y

STLB,*(y+1

end:

Bend

.end

6、编写链接配置文件:

参照实验二,可不作修改

7、编写中断向量表文件

参照实验二,可不作修改。

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

把zhao4.asm、vectors.asm、zhao4.cmd依次添加到项目后,点击Project-CompileFile,

在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。

9、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点

击:

File-LoadPrograme再选择生成的zhao4.out文件就可以将程序装载到DSP的内部存储

器中。

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

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

点击View-

Memory,弹出“MemoryWindowOptions”对话框,把欲

查看的地址改为0x0080,如右图所示。

b点击OK按钮,然后点击Debug-Run让程序在

DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:

11、查看执行的周期数:

a关闭上述数据观察窗口,在文件zhao4.asm的“end:

Bend”处设置断点:

在该语句的左边灰色区域双击鼠标即可,如下图所示:

b点击菜单Profiler——EnableClock,使EnableClock上出现一个小钩(如右图所示;然后再点击Profiler——ViewClock,则会在CCS窗口中出现一个“Clock=0”的小窗口。

c对项目进行重新编译下载:

点击Project-RebuildAll,编译成功后点击File——ReloadProgram,最后点击Debug

——Run运行程序,则可发现Clock窗口中出现“Clock=?

?

?

”,显然这个数字即是程序运行所耗机器周期数N。

12、试使用双操作数指令方案实现上述程序的功能:

试用双操作数乘法指令和RPTZ指令来代替

RPTBdone-1

LD*AR2+,T;单操作数指令

MPY*AR3+,A;单操作数指令

ADDA,B

并完成上述程序的功能。

并查看程序运行的周期数。

13、试用分支指令实现上述程序的功能:

试用BANZ指令来代替

RPTBdone-1

LD*AR2+,T;单操作数指令

MPY*AR3+,A;单操作数指令

ADDA,B

并完成上述程序的功能。

并查看程序运行的周期数。

实验三FIR滤波器

一、实验目的

(1)了解FIR滤波器的原理及使用方法;

(2)了解使用Matlab语言设计FIR滤波器的方法;

(3)了解DSP对FIR滤波器的设计及编程方法;

(4)熟悉对FIR滤波器的调试方法;

二、实验内容

本试验要求设计滤波器采样频率为8000hz,截止频率2400hz的高通滤波器,

并设计FIR滤波器实现上面要求。

输入信号频率为800HZ,1800HZ和3300HZ的合成信号,目的是通过我们设计的滤波器将800HZ和1800HZ的信号滤掉,余下3300HZ的信号成分,达到滤波的效果。

三、实验原理

一个线性位移不变系统的输出序列y(n和输入序列x(n之间的关系,应满

足常系数线性差分方程:

x(n:

输入序列,y(n:

输出序列,ai、bi:

滤波器系数,N:

滤波器的阶数。

在式上式中,若所有的ai均为0,则得FIR滤波器的差分方程:

对上式进行z变换,可得FIR滤波器的传递函数:

FIR滤波器的结构

在数字滤波器中,FIR滤波器具有如下几个主要特点:

①FIR滤波器无反馈回路,是一种无条件稳定系统;

②FIR滤波器可以设计成具有线性相位特性。

本实验程序设计的就是一种偶对称的线性相位滤波器。

程序算法实现采用循环缓冲区法。

算法原理:

①在数据存储器中开辟一个N个单元的缓冲区(滑窗,用来存放最新的N个输入样本;

②从最新样本开始取数;

③读完最老样本后,输入最新样本来代替最老样本,而其他数据位置不变;

④用BK寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。

四、实验步骤

1.滤波器的Matlab语言设计

编写matlab程序,生成FIR滤波器系数后,附到DSP汇编语言程序中。

2.输入数据为800HZ,1800HZ和3300HZ的合成信号合成信号,采样率为8000hz,160个样点。

Input

.word0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1

.word0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216

.word0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4

.word0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E

.word0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688

.word0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C

.word0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2

.word0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF

.word0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1

.word0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216

.word0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4

.word0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E

.word0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688

.word0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C

.word0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1

.word0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF

3.打开CCS,新建立一工程文件fir.pjt。

4.将汇编源文件fir.asm、中断向量表vectors.asm和链接命令文件fir.cmd

添加到fir.pjt中。

fir5.asm文件内容如下:

.title"fir5.asm"

.mmregs

.def_c_int00

.data

fir_table.word-6,28,46,27,-35,-100,-93,26,191,240,52,-291

.word-497,-278,337,888,773,-210,-1486,-1895,-442,2870

.word6793,9445,9445,6793,2870,-442,-1895,-1486,-210,773

.word888,337,-278,-497,-291,52,240,191,26,-93

.word-100,-35,27,46,28,-6

.data

input.word0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1

.word0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216

.word0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4

.word0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E

.word0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688

.word0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C

.word0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2

.word0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF

.word0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1

.word0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216

.word0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4

.word0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E

.word0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688

.word0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C

.word0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1

.word0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF

fir_coff.usect"fir_coff",48

in_buf.usect"in_buf",48

.bssin,160

.bssout_buf,112

.text

_c_int00:

SSBxFRCT;小数乘法编程时,设置FRCT(小数方式位

STM#in,AR1

RPT#159

MVPDinput,*AR1+

STM#fir_coff,AR1

RPT#47

MVPDfir_table,*AR1+

STM#in_buf,AR1

RPT#47

MVPDinput,*AR1+

STM#in_buf+47,AR2

STM#fir_coff+47,AR3

STM#48,BK

STM#-1,AR0

STM#out_buf,AR6

STM#in+48

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1