TMS320C5402 实验

Post on 17-Jan-2016

196 views 0 download

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 实验

1

TMS320C5402 实验

2

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

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

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

3

3) 预备知识

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

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

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

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

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

4

5) 实验步骤

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

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

(3) 新建一个工程;

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

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

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

5

6) 实验现象与结果

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

7) 思考题

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

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

参考程序如下:

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 }

8

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

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

9

2) 实验内容

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

10

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

MVKD dmadMVKD dmad ,, SmemSmem

MVDD XmemMVDD Xmem ,, YmemYmem

3) 预备知识

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

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

12

4) 实验设备

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

5) 实验步骤

(1) 运行 CCS 软件;

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

(3) 新建一个工程;

13

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

6) 实验现象与结果

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

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

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+

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

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 }

18

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

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

19

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

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

20

4) 实验设备

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

5) 实验步骤

(1) 运行 CCS 软件;

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

(3) 新建一个工程;

21

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

6) 实验现象与结果

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

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

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

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

25

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

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

26

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

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 次。次。

28

4) 实验设备

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

5) 实验步骤

(1) 运行 CCS 软件;

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

(3) 新建一个工程;

29

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

6) 实验现象与结果

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

参考程序:见书例 7-6

30

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

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

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

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) 预备知识

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′

33

4) 实验设备

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

5) 实验步骤

(1) 运行 CCS 软件;

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

(3) 新建一个工程;

34

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

6) 实验现象与结果

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

参考程序:见书例 7-9

35

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

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

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

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) 预备知识

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。。

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

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 。。

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

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 。。

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

40

4) 实验设备

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

5) 实验步骤

(1) 运行 CCS 软件;

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

(3) 新建一个工程;

41

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

6) 实验现象与结果

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

参考程序:见书例 7-11