TMS320C5402 实验

41
1 TMS320C5402 实实

description

TMS320C5402 实验. 实验 1 CCS 的使用与汇编语言程序设计入门. 1) 实验目的 (1) 了解 CCS 的安装方法和设置方法 (2) 熟悉 DSP 集成开发环境; (3) 掌握使用 CCS 开发程序的步骤;. 2) 实验内容 (1) 安装和设置 CCS ; (2) 熟悉 DSP 集成开发环境;掌握基本的操作; (3) 设计一汇编程序,实现 2 个数相加,并观察其结果。. 3) 预备知识 - PowerPoint PPT Presentation

Transcript of TMS320C5402 实验

Page 1: TMS320C5402 实验

1

TMS320C5402 实验

Page 2: TMS320C5402 实验

2

1) 实验目的 (1) 了解 CCS 的安装方法和设置方法(2) 熟悉 DSP 集成开发环境;(3) 掌握使用 CCS 开发程序的步骤;

实验 1 CCS 的使用与汇编语言程序设计入门

2) 实验内容 (1) 安装和设置 CCS ; (2) 熟悉 DSP 集成开发环境;掌握基本的操作; (3) 设计一汇编程序,实现 2 个数相加,并观察其结果。

Page 3: TMS320C5402 实验

3

3) 预备知识

( 1 )复习教材第六章的内容,熟悉 CCS 的安装与设置;了解常用菜单的基本作用和使用方法;了解用 CCS 开发程序的基本过程和步骤

( 2 )熟悉七种基本的数据寻址模式和常用汇编指令、伪指令的使用方法

( 3 )熟悉汇编源文件的格式和书写规则

( 4 )编写实现 2 个数相加的源程序和连接程序 4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

Page 4: TMS320C5402 实验

4

5) 实验步骤

(1) 安装、设置、运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,或输入参考程序及链接命令文件 (.cmd 文件 ) ,使一组所给的数累加;

(3) 新建一个工程;

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;

(5) 编译、链接工程中的所有文件,生成 .out 文件;

(6) 装载上述 .out 文件,并运行。

Page 5: TMS320C5402 实验

5

6) 实验现象与结果

运行程序后 , 用 CCS 观察相应的寄存器和存储单元的变化情况,并察看结果是否正确并抄下相应寄存器和存储单元的值作为试验数据。

7) 思考题

修改参考程序 , 实现所给的一组数的连乘。

Page 6: TMS320C5402 实验

6

.title "ADD32".mmregs.def start,_c_int00 .bss xhi , 2,1,1.bss yhi , 2,1,1.bss zhi , 2,1, 1.data

table .long 13578468H .long 1020B30AH .text _c_int00

b start nopnop

start: LD #xhi ,DPSTM #xhi,AR1RPT #3MVPD table,*AR1+DLD xhi , ADADD yhi , ADST A ,zhi

END: B END.end

参考程序如下:

Page 7: TMS320C5402 实验

7

-o add32.out -m add32.map MEMORY {PAGE 0: RAM: origin=1000h,length=80h PAGE 1: DARAM1: origin=0100h,length=500h } SECTIONS { .text :>RAM PAGE 0 .data :>RAM PAGE 0 .bss :>DARAM1 PAGE 1 }

Page 8: TMS320C5402 实验

8

实验 2 CCS 使用与数据块传送程序的设计

1) 实验目的 (1) 熟悉 DSP 集成开发环境;(2) 掌握 TMS320C54x DSP 程序空间的分配;(3) 掌握 TMS320C54x DSP 数据空间的分配;(4) 掌握 TMS320C54x DSP 数据传送指令。

Page 9: TMS320C5402 实验

9

2) 实验内容

设计一段汇编程序,在数据存储器中初始化 2 个数组,并将其中的一个数组复制到数据存储器的另一位置,将另一个数组复制到程序存储器的某一位置。并上机调试,观察其存放情况。

Page 10: TMS320C5402 实验

10

(1)(1) 数据存储器之间的数据传送数据存储器之间的数据传送 (1)(1) 数据存储器之间的数据传送数据存储器之间的数据传送 MVDK SmemMVDK Smem ,, dmaddmad

MVKD dmadMVKD dmad ,, SmemSmem

MVDD XmemMVDD Xmem ,, YmemYmem

3) 预备知识

C54xC54x 有有 1010 条数据传送指令,共分为四类:条数据传送指令,共分为四类:

Page 11: TMS320C5402 实验

11

(2)(2) 数据存储器与数据存储器与 MMRMMR 之间的数据传送 之间的数据传送 (2)(2) 数据存储器与数据存储器与 MMRMMR 之间的数据传送 之间的数据传送

MVDM dmadMVDM dmad ,, MMRMMR MVMD MMRMVMD MMR ,, dmaddmad MVMM MMRxMVMM MMRx ,, MMRyMMRy

(3)(3) 程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送 (3)(3) 程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送

MVPD pmadMVPD pmad ,, SmemSmem MVDP SmemMVDP Smem ,, pmadpmad READA SmemREADA Smem WRITA SmemWRITA Smem

Page 12: TMS320C5402 实验

12

4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

5) 实验步骤

(1) 运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,分别保存;或输入参考程序及相应的链接命令文件 (.cmd 文件 );

(3) 新建一个工程;

Page 13: TMS320C5402 实验

13

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;(5) 编译、链接工程中的所有文件,生成 .out 文件; (6) 装载上述 .out 文件,并运行。

6) 实验现象与结果

运行程序后 , 用 CCS 观察相应的存储单元的变化情况,并察看结果是否正确并抄下存储单元的值作为试验数据。

Page 14: TMS320C5402 实验

14

参考程序如下:

.mmregs .def _c_int00 .dataTBL: .word0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1 7,18,

19 .word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1PROM: .usect "PROM",20 .bss a,20 .bss x,20 .bss y,20DATA: .usect "DATA",20 .text

Page 15: TMS320C5402 实验

15

_c_int00 b start nop nopstart: STM #a,AR1;a[20]={0,1,2,3,4,5,6,7,8,9,10,

;11,12,13,14,15,16,17,18,19} RPT #39 ;x[20]={1,1,1,1,1,1,1,1,1,1 MVPD TBL,*AR1+ ;1,1,1,1,1,1,1,1,1,1} STM #x,AR2; 将数据存储器中的数组 x[20] 复制到数组 y[20] STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+

Page 16: TMS320C5402 实验

16

STM #a,AR1; 将数据存储器中的 a[20] 写入到程序存储器 PROM LD #PROM,A STM #19,AR3LOOPP: WRITA *AR1+ ADD #1,A,A BANZ LOOPP,*AR3- LD #PROM-1,A ; 读程序存储器 PROM 中 20 个数据存入 DATA STM #DATA,AR1 ST #19,BRC RPTB LOOP2 ADD #1,A,ALOOP2: READA *AR1+ ;该指令为单字指令WAIT: NOP B WAIT

Page 17: TMS320C5402 实验

17

-o mymove.out -m mymove.map MEMORY {PAGE 0: RAM: origin=1000h,length=800h RAM1: origin=2000h,length=300h PAGE 1: DARAM1: origin=0100h,length=100h DARAM2: origin=0200h,length=100h }

Page 18: TMS320C5402 实验

18

实验 3 加、减、乘运算程序的设计

1) 实验目的 (1) 熟悉 DSP 集成开发环境;(2) 掌握 TMS320C54x DSP 加、减、乘指令的用法;(3) 学会使用断点调试程序。

Page 19: TMS320C5402 实验

19

2) 实验内容 设计一段汇编程序,实现: z1=x1+y1 、 z2x1-y1 、 z3=x1×y1 、 z4=x2×y2 。并上机调试,观察其存放情 况和结果。

3) 预备知识 复习 16 位定点加法和定点减法有关的知识,掌握相关 的指令的用法;复习 16 位定点整数乘法和 Q15 小数乘法和 其它 Q 格式小数的乘法有关的知识,掌握相关指令的用 法。

Page 20: TMS320C5402 实验

20

4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

5) 实验步骤

(1) 运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,分别保存;或输入参考程序及相应的链接命令文件 (.cmd 文件 );

(3) 新建一个工程;

Page 21: TMS320C5402 实验

21

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;(5) 编译、链接工程中的所有文件,生成 .out 文件; (6) 装载上述 .out 文件,并运行。

6) 实验现象与结果

运行程序后 , 得到试验数据如下:

Page 22: TMS320C5402 实验

22

参考程序: .title "suanshu.asm".mmregs

.def start,_c_int00 .bss x1,1

.bss x2,1 .bss y1,1

.bss y2,1 .bss z1,1

.bss z2,1

.bss z3_h,1

.bss z3_l,1

.bss z4,1

v1 .set 014H ; 20-----x1 v2 .set 036H ; 54 -----y1 v3 .set 04000H ; 0.5(fraction)----x2 v4 .set 00b548H ; -0.5837(fraction)-----y2

Page 23: TMS320C5402 实验

23

_c_int00b start nopnop

start: LD #x1 , DP ST #v1 , x1

ST #v2 , y1; * * * * * * * * * * test ADD * * * * * * * * * * * *

LD x1 , A ; load x1 -> A ADD y1 , A ; A + y1 -> A STL A , z1 ; save A(low 16 bits) ->z1

NOP; * * * * * * * * * * test SUB * * * * * * * * * * * *

LD x1 , ASUB y1 , ASTL A,z2NOP

Page 24: TMS320C5402 实验

24

; * * * * * * * * * * test MPY (integer) * * * * * * * * * * * * RSBX FRCT ; 准备整数乘法

LD x1 , T ; x1 -> T MPY y1 ,A ; x1*y1 -> A (result is 32 bit) STH A , z3_h ; 乘法结果高 16 位在 z3_h 单元中 STL A , z3_l ; 乘法结果低 16 位在 z3_l 单元中 NOP ST #v3 , x2 ST #v4 , y2

; * * * * * * * * * * test MPY ((fraction) * * * * * * * * * * * * * ; * * * * * * * 0.5*(-0.58374)=-0.29187(0x0daa4) * * * * * * * *

SSBX FRCT ; 准备小数乘法 LD x2 , 16 ,A ; load x2 into A (high 16 bits) MPYA y2 ; x2*y2 -> B, and y2 -> T STH B , z4 ; 结果在 z4 单元中 nop end: B end

Page 25: TMS320C5402 实验

25

实验 4 除法运算程序的设计

1) 实验目的 (1) 熟悉 DSP 集成开发环境;(2) 掌握 TMS320C54x DSP 除法指令的用法;(3) 学会查看寄存器的值和利用 CCS 修改寄存器的值。

Page 26: TMS320C5402 实验

26

2) 实验内容 设计一段汇编程序,先实现被除数的绝对值小于除数的绝对值的两个数相除,然后修改程序,再实现被除数的绝对值大于除数的绝对值的两个数相除。并上机调试,观察其结果。

Page 27: TMS320C5402 实验

27

3) 预备知识条件减法指令:条件减法指令: SUBC Smem, src SUBC Smem, src 功能:功能: (src)-(Smem)(src)-(Smem)<<<<15→ALU15→ALU 输出端输出端 若若 ALUALU 输出输出 00 ,则,则 ((ALUALU 输出输出 ))<<<<1+1→src1+1→src 否则否则 ((srcsrc))<<<<1→src1→src

重复指令:重复指令: RPT #K RPT #K 功能:功能: RC=#K,RC=#K, 重复执行下条指令重复执行下条指令 KK+1+1 次。次。

Page 28: TMS320C5402 实验

28

4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

5) 实验步骤

(1) 运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,分别保存;或输入参考程序及相应的链接命令文件 (.cmd 文件 );

(3) 新建一个工程;

Page 29: TMS320C5402 实验

29

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;(5) 编译、链接工程中的所有文件,生成 .out 文件; (6) 装载上述 .out 文件,并运行。

6) 实验现象与结果

运行程序后 , 得到试验数据如下:

参考程序:见书例 7-6

Page 30: TMS320C5402 实验

30

实验 5 长字运算程序的设计

1) 实验目的 (1) 熟悉 DSP 集成开发环境;(2) 掌握 TMS320C54x DSP 长字指令的用法;(3) 掌握长操作数偶地址寻址法和奇地址寻址法。

2) 实验内容 设计一段汇编程序,实现 W64=X64+Y64-Z64 的程序。并上机调试,观察其结果。

Page 31: TMS320C5402 实验

31

长字指令:长字指令: DLD Lmem,dstDLD Lmem,dst DST src,LmemDST src,Lmem DADD Lmem,src[,dst]DADD Lmem,src[,dst] DSUB Lmem,src[,dst]DSUB Lmem,src[,dst] DRSUB Lmem,src[,dst]DRSUB Lmem,src[,dst]

长字指令:长字指令: DLD Lmem,dstDLD Lmem,dst DST src,LmemDST src,Lmem DADD Lmem,src[,dst]DADD Lmem,src[,dst] DSUB Lmem,src[,dst]DSUB Lmem,src[,dst] DRSUB Lmem,src[,dst]DRSUB Lmem,src[,dst]

;dst=Lmem ;dst=Lmem 单周期单周期 ;Lmem=src ;Lmem=src 双周期双周期 ;dst=src+Lmem ;dst=src+Lmem 单周期单周期 ;dst=src-Lmem ;dst=src-Lmem 单周期单周期 ;dst=Lmem-src ;dst=Lmem-src 单周期单周期

;dst=Lmem ;dst=Lmem 单周期单周期 ;Lmem=src ;Lmem=src 双周期双周期 ;dst=src+Lmem ;dst=src+Lmem 单周期单周期 ;dst=src-Lmem ;dst=src-Lmem 单周期单周期 ;dst=Lmem-src ;dst=Lmem-src 单周期单周期

’’C54xC54x可以利用可以利用 3232 位长操作数进行长字运算。位长操作数进行长字运算。

3) 预备知识

Page 32: TMS320C5402 实验

32

运算过程:运算过程:运算过程:运算过程:WW6464

::

WW6464

::XX6464::XX6464::ww33 w w22 w w11 w w00

xx33 x x22 x x11 x x00 ++++ss11 s s00 ss11 s s00

CCCC

ss33 s s22 ss33 s s22 SS6464::SS6464::

SS6464=s=s33ss22ss11ss00 SS6464=s=s33ss22ss11ss00

ss11ss00=w=w11ww00+x+x11xx00

ss33ss22=w=w33ww22+x+x33xx22+C+C YY6464::YY6464:: yy33 y y22 y y11 y y00 yy33 y y22 y y11 y y00 ----

zz11 z z00 zz11 z z00

CC′′CC′′

zz33 z z22 zz33 z z22 ZZ6464::ZZ6464:: ZZ6464=z=z33zz22zz11zz00 ZZ6464=z=z33zz22zz11zz00

zz11zz00=s=s11ss00-y-y11yy00 zz11zz00=s=s11ss00-y-y11yy00

zz33zz22=s=s33ss22-y-y33yy22- C′- C′ zz33zz22=s=s33ss22-y-y33yy22- C′- C′

Page 33: TMS320C5402 实验

33

4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

5) 实验步骤

(1) 运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,分别保存;或输入参考程序及相应的链接命令文件 (.cmd 文件 );

(3) 新建一个工程;

Page 34: TMS320C5402 实验

34

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;(5) 编译、链接工程中的所有文件,生成 .out 文件; (6) 装载上述 .out 文件,并运行。

6) 实验现象与结果

运行程序后 , 得到试验数据如下:

参考程序:见书例 7-9

Page 35: TMS320C5402 实验

35

实验 6 并行运算程序的设计

1) 实验目的 (1) 熟悉 DSP 集成开发环境;(2) 掌握 TMS320C54x DSP 并行指令的用法;(3) 掌握( ASM-16 )移位方式的处理方法。

2) 实验内容 利用并行指令设计一段汇编程序,实现 Z=X+Y 和 F=D+E的程序。并上机调试,观察其结果。

Page 36: TMS320C5402 实验

36

LD||MAC[R]LD||MAC[R] LD||MAS[R]LD||MAS[R]

例如:例如: LD Xmem,dst1LD Xmem,dst1 ||MAC[R] Ymem,[,dst2]||MAC[R] Ymem,[,dst2] 功能:功能: dst1=Xmem<<16;dst1=Xmem<<16; dst2=dst2+T*Ymemdst2=dst2+T*Ymem 。。

LD||MAC[R]LD||MAC[R] LD||MAS[R]LD||MAS[R]

例如:例如: LD Xmem,dst1LD Xmem,dst1 ||MAC[R] Ymem,[,dst2]||MAC[R] Ymem,[,dst2] 功能:功能: dst1=Xmem<<16;dst1=Xmem<<16; dst2=dst2+T*Ymemdst2=dst2+T*Ymem 。。

并行加载和乘法指令:并行加载和乘法指令: 并行加载和乘法指令:并行加载和乘法指令:3) 预备知识

Page 37: TMS320C5402 实验

37

ST||LDST||LD

例如:例如: ST src,Ymem ST src,Ymem ||LD Xmem,dst||LD Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=Xmem<<16dst=Xmem<<16。。

ST||LDST||LD

例如:例如: ST src,Ymem ST src,Ymem ||LD Xmem,dst||LD Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=Xmem<<16dst=Xmem<<16。。

并行加载和存储指令:并行加载和存储指令: 并行加载和存储指令:并行加载和存储指令:

Page 38: TMS320C5402 实验

38

ST||MPYST||MPY ST||MAC[R]ST||MAC[R] ST||MAS[R]ST||MAS[R] 例如:例如: ST src,Ymem ST src,Ymem ||MAC[R] Xmem,dst||MAC[R] Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=dst+T*Xmemdst=dst+T*Xmem 。。

ST||MPYST||MPY ST||MAC[R]ST||MAC[R] ST||MAS[R]ST||MAS[R] 例如:例如: ST src,Ymem ST src,Ymem ||MAC[R] Xmem,dst||MAC[R] Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=dst+T*Xmemdst=dst+T*Xmem 。。

并行存储和乘法指令:并行存储和乘法指令: 并行存储和乘法指令:并行存储和乘法指令:

Page 39: TMS320C5402 实验

39

ST||ADDST||ADD ST||SUBST||SUB 例如:例如: ST src,Ymem ST src,Ymem ||ADD Xmem,dst||ADD Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=dst+Xmemdst=dst+Xmem 。。

ST||ADDST||ADD ST||SUBST||SUB 例如:例如: ST src,Ymem ST src,Ymem ||ADD Xmem,dst||ADD Xmem,dst 功能:功能: Ymem=src>>(16-ASM);Ymem=src>>(16-ASM); dst=dst+Xmemdst=dst+Xmem 。。

并行存储和加并行存储和加 //减指令:减指令: 并行存储和加并行存储和加 //减指令:减指令:

Page 40: TMS320C5402 实验

40

4) 实验设备

Windows 98 或以上 PC 机操作系统、 CCS 集成开发环境。

5) 实验步骤

(1) 运行 CCS 软件;

(2) 用汇编语言设计一程序并输入相应的链接命令文件 (.cmd 文件 ) ,分别保存;或输入参考程序及相应的链接命令文件 (.cmd 文件 );

(3) 新建一个工程;

Page 41: TMS320C5402 实验

41

(4) 向工程添加汇编程序及链接命令文件 (.cmd 文件 ) ;(5) 编译、链接工程中的所有文件,生成 .out 文件; (6) 装载上述 .out 文件,并运行。

6) 实验现象与结果

运行程序后 , 得到试验数据如下:

参考程序:见书例 7-11