实验一 DSP指令实验

2019-09-01 18:44

实验一 DSP指令实验

实验目的:

了解DSP的结构及管脚功能(请参阅TMS320C5000系列原理说明书) 掌握DSP的基本指令 实验要求:

让学生了解怎样连接对DSP进行简单的编程操作,运算控制等基本汇编语言及算术语言实验测试及除错验证。 实验说明:

DSP指令实验,主要是对54系列DSP一个基本的了解实验,主要是熟悉54系列的语句、了解54系列DSP的基本框架、了解DSP的特征。该实验所需硬件主要是TMS320C5402DSP芯片,以及发光二极管等有可观性电路。实验过程是:让学生了解怎样连接对DSP进行简单的编程操作,运算控制等基本汇编语言及算术语言实验测试及除错验证。 实验步骤:

安装CCS的Simulator方式:双击桌面上的Setup CCS C5000 图标,关闭Import Configuration窗口,在System Configuration中的My System的下面可看到一个类似板卡的图标,如果该图标的名称是“tisim54x”的话,就可直接关闭该窗口,不存盘退出。如果该图标的名称不是“tisim54x”的话,在该图标上点击右键,选择remove删除该结构,然后在Available Board Types中双击“tisim54x”的图标(如果有的话),弹出Board Properties的对话框点击“next”、“finish”然后关闭Code Composer Setup窗口,存盘退出即可。如果在Available Board Types中没有“tisim54x”的图标,则在右边框内单击“Install a Device Driver”,在路径“c:\\ti\\driver\\”中打开tisim54x.dvr文件,在Available Board Types中可看到“tisim54x”的图标,然后按上述操作。即生成CCS的Simulator方式。

1、以Simulator方式启动CCS,在[Project]-[Open]菜单中打开ex1.mak;

2、在左边树状列表框内双击[Project]展开目录树,双击[ex1.asm]打开源程序文件(或者打开自己编写的程序),参考程序中的注释仔细阅读源程序;

3、在[Project]-[Build]菜单中编译项目文件,编译成功后在下端的状态窗口中显示Build Complete,0 Errors,0 Warnings;

4、在[File]-[Load Programm]中加载输出执行代码文件ex1.out,此时,反汇编窗口将显示在前端,当前PC指针为0000:0080(黄色高亮显示),指令代码将以汇编语言方式显示,可以在反汇编窗口中点击鼠标右键,在弹出菜单中选择[Properties]-[Dis-Assembly Options]打开反汇编选项对话框,在[Dis-Assembly Style]选项中选择[Algebraic],以算术语言方式显示指令代码(注意:此时可能标号显示异常,按PageUP再按PageDown即可刷新显示);

5、选择[View]-[CPU Registers]-[CPU Register](或点击左边工具栏的快捷按钮)打开处理器映射寄存器窗口;

6、选择[View]-[Memory](或点击左边工具栏的快捷按钮),在弹出的[Windows Memory Options]对话框的Address文本框中输入0x0200,Page下拉框中选中Data,确定后将打开数据存储器查询窗口,此时数据存储器地址0x0200~0x0203将对应ex1.asm中声明的标号DAT0~DAT3; 7、调整[Dis-Assembly][memory][CPU Registers]三个窗口的大小,以便于观察;

8、依次把光标移动到反汇编窗口中标号为bk?(?表示从0开始的整数)的标号行下的指令处,选择菜单[Debug]-[Breakpoint](或者点击快捷按钮)设置断点,断点设置后,都将以紫色高亮显示;

9、选择[Debug]-[Run](也可以按快捷键F5或点击快捷按钮)执行程序;

10、程序将在第一个断点bk0处停止,bk0标号下的指令将以半黄半紫高亮显示,在处理器映射寄存器窗口和数据存储器查询窗口中双击相应操作数的内容,即可进行修改(注意:如步骤6所述,DAT0~DAT3对应地址为0X0200~0X0203),试修改下一条指令操作数的内容,然后按F5执行程序,再在处理器映射寄存器窗口中或数据存储器查询窗口中观察指令执行结果;

11、重复执行9、10步骤,依次观察加法指令、减法指令、乘法指令、除法指令、平方指令以及3数累加宏指令的执行结果;

12、 上指令执行完毕后,程序转到bk0处,可再次进行熟悉运算控制的实验。

************************************************ ;注释,从第一列开始的注释必须 * FileName:

ex1.asm * 以*号开头,其它处开始的可用*

* Description: DSP指令实验 * 号也可用;号。 ************************************************

.title \ ;在清单页头上打印标题ex1

.mmregs ;输入存储器映射寄存器进符号表,即为存储器映射寄存

器定义符号名,相当于用.set伪指令为00h~31h的所有存储器映射寄存器定义相应的符号,后面语句可直接使用其符号表示该存储器映射寄存器

.def _c_int00 ;指定定义在当前模块中可被其它模块使用的一个或多个

符号,

DAT0 .SET

60H ;给标号DAT0设定值为60h,此值作为数据页的页

内地址(7位二进制代码)

DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H

.text ;以下指令汇编进.text(可执行代码)段

ADD3 .MACRO P1,P2,P3,ADDRP ;三数相加宏定义: ADDRP = P1 + P2 + P3,宏名为

ADD3,宏参为P1、P2、P3、ADDRP

LD P1,A ;将P1的内容装入累加器A

ADD P2,A ;将A中内容跟P2相加,结果存于A中 ADD P3,A ;将A中内容跟P3相加,结果存于A中 STL A,ADDRP ;将A中40位内容的低16位储存到ADDRP中 .ENDM

;结束宏定义

_c_int00: ;定义标号为_c_int00的代码块

B start ;无条件转移到标号为start的代码块

;置数据页指针DP,DP为16位地址的高9位,将立即数004h

装载到状态寄存器ST0(06h)的0~8位(DP字段),此时ST0 中的值为ST0=xxx4h ,DP=0004h

STM #1000h,SP ;置堆栈指针SP,SP是一16位的特殊功寄存器(18h),用于

存放堆栈指针,此时(SP)=1000h

SSBX INTM

;禁止中断,SSBX是位操作指令,将状态寄存器ST1(07h)

中的中断方式控制位INTM置1用来关闭所有可屏蔽中断 此时INTM=1

start: LD #004h,DP

bk0: ST #0012h,DAT0 ;该行标号为bk0,将立即数0012h储存到由DP(页号9位)

作为高9位和DAT0的值(7位)作为低7位拼接成的16位 地址为0260h(000000100 1100000b)的数据存储器 中,此时数据存储器(0260h)=0012h

LD #0023h,A ;立即数0023h装载到A中, (A)=0023h ADD DAT0,A

;加法操作: A = A + DAT0,将DAT0为页内地址指定的内容(数

值0012h)跟A中的内容(数值0023h)相加,结果(数值0035h) 放在A中,(A)=0035h

NOP ;执行以下4条空操作 NOP NOP NOP

bk1: ST #0054h,DAT0 ;将立即数0054h储存到地址为0260h的数据存储器中,此时

(0260h)=0054h

LD #0002h,A ;将立即数0002h装载到A中, (A)=0002h SUB DAT0,A

;减法操作: A = A - DAT0,(A)=FFFFFFAEh

因A=2h-54h,即00000002+FFFFFFFACh NOP NOP NOP NOP

bk2: ST #0345h,DAT0 ;(DAT0)=(0260h)=0345h

STM #0002h,T ;将立即数0002h储存到(存储器映象寄存器)暂存寄存器T

(0Eh)中, T=0002h

MPY DAT0,A ;乘法操作: A = DAT0 * T,将T寄存器的值跟DAT0指定的值相乘

(0002h*0345h=068Ah),并将结果放在A中,(A)=00000068Ah NOP NOP NOP NOP

;无符号除法操作: DAT0 ÷ DAT1 ; 结果: DAT2:商; DAT3:余数 bk3: ST #1000h,DAT0 ;(DAT0)=(0260h)=1000h

ST #0041h,DAT1 ;(DAT1)=(0261h)=0041h RSBX SXM

;复位SXM,SXM是(位于ST1中的)符号扩展方式控制位,

SXM=1表示数据进入ALU之前进行符号位扩展(高的空位填 符号值),SXM=0表示不进行符号位扩展(高的空位填0),此 处进行符号位扩展(由于是正数,故高的空位填0)

LD DAT0,A ;(A)=(DAT0)=0000001000h

RPT #15 ;单指令循环,表示紧跟其后的一条语句重复执行15次

SUBC DAT1,A ;将DAT1的内容(0000000041h)左移15位(0000208000h),

再将A中的内容减去DAT1左移15 位后的内容

(0000001000h-0000208000h<0),所得结果的第31位作为符 号位,若该位为1,则A中原来的内容左移1位右边补0存入 A中,说明不够除,继续第二次(0000002000h-0000208000h<0),


实验一 DSP指令实验.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三年级下册语文(第二单元)听写

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: