实验一CCS及基本指令实验.docx
- 文档编号:28234873
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:24
- 大小:134.20KB
实验一CCS及基本指令实验.docx
《实验一CCS及基本指令实验.docx》由会员分享,可在线阅读,更多相关《实验一CCS及基本指令实验.docx(24页珍藏版)》请在冰豆网上搜索。
实验一CCS及基本指令实验
实验一CCS及基本指令实验
一、实验目的
1)了解TMS320C54x汇编语言程序的基本格式,以及使用CCS进行汇编、链接的基本过程。
2)熟悉硬件仿真器Emulator和软件仿真器Simulator的使用方法。
3)通过软件仿真器各窗口观察TMS320C5402内部资源和修改内部寄存器状态。
4)初步熟悉C54x汇编语言COFF公共目标格式文件。
二、实验设备
1)微机一套,操作系统为WINWODS98、WINDOWS2000SP2或WINDOWSXPSP1或具有更高级的补丁。
2)5000CCS2.0软件版本。
3)程序及链接命令文件见D:
\EXPER\EXP1目录下的.asm和.cmd文件。
三、开关设置
将开关K9拨到右边,即仿真器选择连接右边的CPU2。
四、实验内容
1)系统连接
进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:
2)仿真口选择开关K9拨到右侧,即仿真器选择连接右边的CPU:
CPU2;
接通实验箱后面220V输入电源,系统会自动上电复位,在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,,此时,仿真器上的“红色小灯”应点亮,否则DSP开发系统有问题。
3)在D:
\USER下建立自己的目录,并将实验所用的源程序和链接器命令文件复制到自建的子目录下。
如D:
\USER\LLD
4)启动CCS,待计算机启动成功后,开关置“ON”,实验箱上电,启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,则掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。
5)建立项目文件:
如果还没有建立项目文件,则使用[Project]-[New]菜单中新建一个项目。
在选porjectcreat对话框中的Projectlocation中选择或填入新建项目的路径(如D:
\USER\LAN),在project中添入项目名称(如test.pjt)并选择完成。
这样就在D:
\USER\LAN\TEST\目录下建立了一个名称为test.pjt的项目文件。
注意:
实验程序所在的目录不能包含中文,目录不能过深
打开项目文件:
如果项目已经建立,则使用在[Project]-[Open]菜单,通过改变目录打开该目录下面下的项目文件“test.pjt”,不必重新添加文件。
选择location右边按钮
6)在项目中添加源程序文件和链接器命令文件。
使用[Project]-[Addfilestoproject]命令分别添加扩展名为.asm和.cmd的两个文件(注意:
在选择添加文件前要修改文件的察看类型为ALLFILE(*.*),如果有.asm文件、.cmd文件、.c文件和.lib文件也要添加),再选择[Project]-[Save]保存新建的项目。
7)在左边树状列表框内双击[Project]展开目录树,双击[ex1.asm]打开源程序文件(或者打开自己编写的程序),参考程序中的注释仔细阅读源程序;选择[Project]-[Build]可对源程序进行编译,生成.out文件。
7)使用[File]-[LoadProgramm]中加载输出执行代码文件test.out(文件在D:
\USER\LAN\TEST\DEBUG\目录下)。
8)选择[View]-[CPURegister](或点击左边工具栏的快捷按钮)打开处理器映射寄存器窗口。
9)选择[View]-[Memory](或点击左边工具栏的快捷按钮),在弹出的[WindowsMemoryOptions]对话框的Address文本框中输入0x2060,Page下拉框中选中Data,确定后将打开数据存储器查询窗口,此时数据存储器地址0x2060~0x2063就对应着ex1.asm中声明的标号为DAT0~DAT3的四个单元。
10)调整源程序、[memory]、[CPURegisters]三个窗口的大小,以便于观察。
11)依次把光标移动到反汇编窗口中标号为bk?
(?
表示从0开始的整数)段的最后一个nop指令处,选择菜单[Debug]-[Breakpoint](或者点击快捷按钮手行按钮)设置断点,断点设置后,都将以红色原点显示。
如果想取消断点,可以将光标移动到该行处,重新作一次断点设置操作。
12)选择[Debug]-[Run](也可以按快捷键F5或点击快捷按钮)执行程序。
13)程序将停止在第一个断点bk0位置,bk0标号下的指令将以黄色箭头指示,在存储器映射CPU寄存器窗口和数据存储器查询窗口中双击相应操作数的内容,即可进行修改(注意:
如步骤9所述,DAT0~DAT3对应地址为0X2060~0X2063),然后在存储器映像cpu寄存器窗口中和数据存储器查询窗口中观察指令执行结果。
可试着修改一下指令操作数的内容,然后重新进行编译、链接、载入程序,最后执行,观察存储器中内容的变化。
14)重复执行9、10步骤,依次观察加法指令、减法指令、乘法指令、除法指令、平方指令以及3数累加宏指令的执行结果,调用子程序前后堆栈指针及堆栈中数值的变化。
15)全部程序执行后,程序转到bk0处,可再次重复以上指令的实验。
16)可使用[Debug]-[Restart]重新执行程序,或者[Debug]-[ResetCPU]将5402复位。
五、实验报告:
1)TMS320C54X在复位时,PC=?
ST0=?
ST1=?
PMST=?
注意:
硬件复位是在硬件仿真条件下进行的,使用菜单执行[Debug]-[ResetCPU]进行复位。
2)如何检查程序存储器和数据存储器的内容?
3)给出每段执行后的结果。
即START段执行后的DP和SP值,Bk0,Bk1,Bk2Bk4段执行后A的值,Bk3段之行后数存2062和2063单元的值,BK5执行后2063单元的值,BK6执行后2003单元的值。
六、源程序及链接命令文件
1、exp1.asm
*************************************************
*FileName:
ex1.asm*
*Description:
DSP指令实验*
*Writeby:
lanrunze*
*Date:
2004-2-10*
*Update:
2006-10-30*
*************************************************
*注意:
如果使用硬件仿真,由于在DSP中存在流水线的原因,因此观察存储器和
*寄存器变化时要多执行几个周期,才能看到相应的变化。
.title"ex1.asm";源程序名称
.mmregs;使用存储器映像寄存器
.def_c_int00;定义默认程序入口地址
DAT0.set60H;定义直接寻址所使用的低7位地址
DAT1.set61H
DAT2.set62H
DAT3.set63H
.bssData0,1;定义1字长变量
.bssData1,1
.bssData2,1
.bssData3,1
STK.usect"STACK",100h;定义堆栈段,长度100H
.sect".vectors";定义中断向量段,用于存储中断向量表
reset:
BD_c_int00;复位向量
stm#STK+100h,SP
.space4*16*31;为其它中断向量保留空间
.text;程序段开始
ADD3.MACROP1,P2,P3,ADDRP;定义实现三数相加的宏:
ADDRP=P1+P2+P3
LD@P1,A;宏即宏替换,在调用程序时进行宏展开
ADD@P2,A;宏的使用方法类似于子程序,但不同点在于宏可以带参数
ADD@P3,A
STLA,@ADDRP
.ENDM
_c_int00:
;默认程序入口地址
Bstart
start:
LD#40H,DP;置数据页指针from0x2000toox207f
STM#3000h+100h,SP;置堆栈指针
SSBXINTM;禁止中断
ldmPMST,A;修改IPTR段
and#0x3f,A;去掉IPTR
or#0x3f80,A;将IPTR位域改为7fH,
stlma,PMST;写入IPTR即中断向量表首地址为0x3f80
bk0:
ST#0012h,@DAT0;加法
LD#0023h,A
ADD@DAT0,A;
NOP
NOP
NOP
NOP
bk1:
ST#0054h,@DAT0;减法
LD#0002h,A
SUB@DAT0,A
NOP
NOP
NOP
NOP
bk2:
ST#0345h,@DAT0;乘法
STM#0002h,T
MPY@DAT0,A
NOP
NOP
NOP
NOP
bk3:
ST#1000h,@DAT0;除法1000h/41h
ST#0041h,@DAT1
RSBXSXM
LD@DAT0,A
RPT#15
SUBC@DAT1,A
STLA,@DAT2
STHA,@DAT3
NOP
NOP
NOP
NOP
bk4:
ST#0333h,@DAT0;求平方
SQUR@DAT0,A
NOP
NOP
NOP
NOP
bk5:
ST#0034h,DAT0;调用宏进行求和运算
ST#0243h,DAT1
ST#1230h,DAT2
ADD3DAT0,DAT1,DAT2,DAT3
NOP
NOP
NOP
bk6:
ST#0034h,Data0;调用子程序进行求和运算
ST#0243h,Data1
ST#1230h,Data2
calladd_sub;
NOP
NOP
NOP
NOP
bk7:
ST#0h,@DAT0;循环运行前将各数存单元清零
ST#0h,@DAT1
ST#0h,@DAT2
ST#0h,@DAT3
ST#0h,@Data0
ST#0h,@Data1
ST#0h,@Data2
ST#0h,@Data3
NOP
NOP
NOP
Bstart;程序循环执行
add_sub:
STM#Data0,AR2;求和子程序
RPTZA,#2
ADD*AR2+,A
STLA,*AR2
RET
.end
2、链接器命令文件exp1.cmd
MEMORY
{
PAGE0:
VECS:
origin=0xff80,length=0x80
PROG:
origin=0x1000,length=0x1000
PAGE1:
DATA:
origin=0x2000,length=0x1000
STACK:
origin=0x3000,length=0x1000
}
SECTIONS
{
.vectors:
{}>VECSPAGE0
.text:
{}>PROGPAGE0
.data:
{}>DATAPAGE1
STACK:
{}>STACKPAGE1
}
第4章附录
附录1:
TMS320C5402CPU及外设存储器寄存器映射表
0
IMR
中断屏蔽寄存器
1
IFR
中断标志寄存器
2-5
-
测试保留
6
ST0
状态寄存器0
7
ST1
状态寄存器1
8
AL
累加器A低字(15-0比特)
9
AH
累加器A高字(31-16比特)
A
AG
累加器A保护位(39-32比特)
B
BL
累加器B低字(15-0比特)
C
BH
累加器B高字(31-16比特)
D
BG
累加器B保护位(39-32比特)
E
T
暂存寄存器
F
TRN
传送寄存器
10-17
AR0-AR7
辅助寄存器ARnn=0~7
18
SP
堆栈指针
19
BK
循环缓存区大小寄存器
1A
BRC
块重复计数器
1B
RSA
块重复开始地址
1C
REA
块重复结束地址
1D
PMST
状态寄存器
1E
XPC
程存扩展寻址寄存器
1E-1F
-
保留
20
McBSP0_DRR2
带缓存串口0数据接收寄存器2
21
McBSP0_DRR1
带缓存串口0数据接收寄存器1
22
McBSP0_DXR2
带缓存串口0数据发送寄存器2
23
McBSP0_DXR1
带缓存串口0数据发送寄存器1
24
TIM
定时器计数器
25
PRD
定时器周期寄存器
26
TCR
定时器控制寄存器
27
-
保留
28
SWWSR
等待状态产生寄存器
29
BSCR
Bank-switching控制寄存器
2A
-
保留
2B
SWCR
扩展等待控制寄存器
2C
HPIC
主机接口控制寄存器
2D-2F
-
保留
30
TIM1
定时器计数器
31
PRD1
定时器周期寄存器
32
TCR1
定时器控制寄存器
33-37
-
保留
38
McBSP0_SPSA
多缓冲串口0子地址寄存器
39
McBSP0_SPSD
多缓冲串口0子数据寄存器
3A-3B
保留
3C
GPIOCR
GPI/O引脚控制寄存器
3D
GPIOSR
GPI/O引脚状态寄存器
3E-3F
保留
40
McBSP1_DRR2
带缓存串口1数据接收寄存器
41
McBSP1_DRR1
带缓存串口1数据发送寄存器
42
McBSP1_DXR2
带缓存串口1控制寄存器
43
McBSP1_DXR1
带缓存串口1控制扩展寄存器
44-47
-
保留
48
McBSP1_SPSA
多缓冲串口1子地址寄存器
49
McBSP1_SPSD
多缓冲串口1子数据寄存器
4A-53
54
DMPREC
DMA优先允许控制寄存器
55
DMSA
DMA子地址寄存器
56
DMSDI
57
DMSDN
58
CLKMD
时钟方式寄存器
59-5F
-
保留
附录2:
C5402中的中断标志寄存器(IMR)和中断屏蔽寄存器(IFR)
1)中断标志寄存器IFR
IFR中某位为1表明有相应中断,再次写1清除中断。
2)中断屏蔽寄存器IMR
要开放某个中断,只需向IMR中相应位(中断允许位)写1。
而ST1中INTM位为中断屏蔽总开关。
IFR和IMR寄存器各位功能描述
位号
名称
功能描述
15-14
——
保留
13
DAMC5
DMA通道5中断标志/屏蔽位
12
DMAC4
DMA通道4中断标志/屏蔽位
11
BXINT1/DMAC3
McBSP1发送中断标志/屏蔽位或
DMA通道3中断/标志屏蔽位
10
BRINT1/
DMAC2
McBSP1接收中断标志/屏蔽位或
DMA通道2中断标志/屏蔽位
9
HPINT
主机接口中断标志/屏蔽位
8
INT3
外部中断3中断标志/屏蔽位
7
TINT1/
DAMC1
TIMER1中断标志/屏蔽位或
DMA通道1中断标志/屏蔽位
6
DMAC0
DMA通道0中断标志/屏蔽位
5
BXINT0
McBSP0发送中断标志/屏蔽位
4
BRINT0
McBSP0接收中断标志/屏蔽位
3
TINT0
Timer0中断标志/屏蔽位
2
INT2
外部中断2中断标志/屏蔽位
1
INT1
外部中断1中断标志/屏蔽位
0
INT0
外部中断0中断标志/屏蔽位
注:
所有DMA通道控制均由DMPREG寄存器来控制
附录3:
TMS320C5402中断向量表与优先级
中断号
优先级
名称
位置
功能
0
1
-RS/SINTR
0
复位(软、硬件)
1
2
-NMI/SINT16
4
非屏蔽中断
2
-
SINT17
8
软件中断17
3
-
SINT18
C
软件中断18
4
-
SINT19
10
软件中断19
5
-
SINT20
14
软件中断20
6
-
SINT21
18
软件中断21
7
-
SINT22
1C
软件中断22
8
-
SINT23
20
软件中断23
9
-
SINT24
24
软件中断24
10
-
SINT25
28
软件中断25
11
-
SINT26
2C
软件中断26
12
-
SINT27
30
软件中断27
13
-
SINT28
34
软件中断28
14
-
SINT29
38
软件中断29
15
-
SINT30
3C
软件中断30
16
3
-INT0/SINT0
40
外部中断0
17
4
-INT1/SINT1
44
外部中断1
18
5
-INT2/SINT2
48
外部中断2
19
6
TINT/SINT3
4C
定时器0中断
20
7
BRINT0/SINT4
50
缓存串口0接收中断
21
8
BXINT0/SINT5
54
缓存串口0发送中断
22
9
保留DMAC0,SINT6
58
保留(缺省)DMAC0
23
10
TINT(DMAC1),SINT7
5C
定时器1中断或DMA通道1中断
24
11
-INT3/SINT8
60
外部中断3
25
12
HPINT/SINT9
64
HPI口中断
26
13
BRINT1(DMAC2)/SINT10
68
带缓存串口1接收中断
27
14
BXINT1(DMAC3)/SINT11
6C
带缓存串口1发送中断
28
15
DMAC4,SINT12
70
DMA通道4中断
29
16
DMAC5,SINT13
74
DMA通道5中断
30-31
-
78-7F
保留
附录4:
TMS320C5402状态和控制寄存器
1)状态寄存器0(ST0),结构如下:
15~13
12
11
10
9
8~0Bit
ARP
TC
C
OVA
OVB
DP
各状态位功能描述
位号
名称
功能描述
15~13
ARP
辅助寄存器指针。
当寻址不修正时,要求ARP=0
12
TC
测试/控制标志位。
保存ALU的测试结果
11
C
进位位。
加法时产生进位或减法时产生借位置C=1
10
OVA
累加器A和B溢出标志位
9
OVB
累加器A和B溢出标志位
8~0
DP
数据存储器页指针。
在直接寻址时作为数存的高9位地址
2)状态寄存器1(ST1),结构如下:
15
14
13
12
11
10
9
8
7
6
5
4~0
BRAF
CPL
XF
HM
INTM
0
OVM
SXM
C16
FRCT
CMPT
ASM
各状态位功能描述
位号
名称
功能描述
15
BRAF
块重复操作标志位。
为1时表示进行块重复操作
14
CPL
直接寻址编辑方式位。
CPL=0时直接寻址指针为DP,CPL=1时直接寻址指针为SP
13
XF
XF引脚状态位。
通过改变该寄存器的值可以改变XF引脚的输出
12
HM
保持方式位。
处理器响应hold信号时,HM=0时表示处理器继续执行内部操作,而将外部接口置成高阻,当HM=1时,表示处理器暂停内部操作
11
INTM
中断方式位。
当INTM=0时,开放所有可屏蔽中断,当INTM=1时,关闭所有可屏蔽中断
10
0
读时总是0
9
OVM
溢出方式位。
OVM=0时,忽略溢出,当OVM=1时,发生溢出时填充007fffffffh(正溢出)或0080000000h(负溢出)
8
SXM
符号扩展方式位。
SXM=0时禁止符号扩展,SXM=1时数据进入ALU时进行符号扩展
7
C16
双16位/双精度算术方式位。
C16=0时进行双精度算术运算,C16=1时进行双16位算术运算
6
FRCT
小数方式位。
在小数乘法时乘法器输出左移一位,来消除多余符号位。
5
CMPT
修正方式位,决定ARP是否进行修正。
CMPT=0时,间接单数存操作数操作时,不进行ARP修正,CMPT=1时,用AR0进行修正。
4~0
ASM
累加器移位方式位。
3)处理器工作方式状态寄存器(PMST),结构如下:
15~7
6
5
4
3
2
1
0Bit
IPTR
MP/MC
OVLY
AVIS
DROM
CLKOFF
SMUL
SST
各状态位功能描述
位号
名称
功能描述
15~7
IPTR
中断向量指针。
指向中断向量位置
6
MP/
微处理器/微控制器工作方式位。
若MP/
=0使用片内ROM,若MP/
=1则片内ROM不安排到程序空间,此状态由外部引脚决定,但是可以软件修改
5
OVLY
RAM重复占位位。
当OVLY=0,DARAM只能映射到程序空间,当OVLY=1时,DARAM同时映射到程序存储空间。
注意:
数据页0不能映射到程序空间。
4
AVIS
地址可见位。
设置寻址内部程序空间时地址线是否在外部地址引脚输出,当AVIS=1时,则内部程序寻址时,在地址总线上同时输出。
3
DROM
数据ROM位。
DROM=0时,片内ROM不映射到程序存储区,DROM=1时,片内ROM映射到数据存储区。
2
CLKOFF
CLKOUT时钟输出关断位。
CLKOUT=1时,禁止CLKOUT的输出,并且保持高电平。
1
SMUL
乘法饱和方式位。
当SMUL=1时,并且OVM=1,FRCT=1时,在进行乘法累加运算时,作饱和处理。
0
SST
存储饱和位。
附录5:
片内4K掩模ROM的内部资源
地址为:
F800h—FFFFh,其内部资源,其中
F000h–F7FFh保留
F800h–FBFFh程序自动载入程序
FC00h–FCFFh256-word的μ律扩展表
FD00h–FDFFh256-word的A律扩展表
FE00h–FEFFh256-word的sin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 CCS 基本 指令