3986.net
小网站 大容量 大智慧
当前位置:首页 >> 工学 >>

DSP指令


TMS320C54x的指令系统
? TMS320C54x的指令系统分为算术运算指 令、逻辑运算指令、程序控制指令及装载和 存储指令四种基本类型。

1

TMS320C54x指令系统概述
● ● ● ● 算术运算指令; 逻辑运算指令; 装载和存储指令; 程序控制指令;

2

算术运算指令
1.加法指令 2.减法指令 3.乘法指令 4.乘加和乘减指令 5.双操作数指令 6.特殊运算指令

3

1.加法指令
特 点 注 意

将一个16位的操作数加到指令指 定的累加器中
操作数左移时低位加0,右移时若SXM=1, 则高位进行符号扩展;若SXM=0,则高位加0。

举例

LD TEMP1,A ADD TEMP2,A STL A,TEMP3

4

2.减法指令
特 点

将从指定的累减器中减去一个16位的 减数
LD TEMP1,B RPT #15 SUBC TEMP2,B STL B,TEMP3 STH B,TEMP4 举例
5

3.

乘法指令

乘法指令的功能是将T 寄存器或一个数据 存储器的值与另一个数据存储器的值或一 个立即数相乘,并将乘积存放于目的累加 器A或B中。

举例 RSBX FRCT LD TEMP1,T MPY TEMP2,A
6

4.乘加和乘减指令
方法

乘加指令先完成一个乘法操作,然后再将 乘积与源累加器的内容相加。而乘减指令 完成从累加器B(或源累加器src或目的累 加器dst)减去T寄存器(或一个操作数与 另外一个操作数的乘积)的操作,并将其 运算结果存入累加器B(或源累加器src或 目的累加器dst)中去。

7

5.双操作数指令
方法 举例
DADD *AR3-,A,B

该指令在ST1 中的双16位/双 精度算术运算 方式位C16的 控制下完成一 个32位的加法 运算或两个16 位的加法运算。

A B AR3 C16 数据存储器 0100H 0101H

00 5678 8933H 00 0000 0000H 0100H 1 1534H 9456H

A B AR3 C16 0100H 0101H

00 5678 8933H 00 6BAC 1D89H 00FEH 1 1534H 9456H
8

6. 特殊运算指令

TMS320C54x指令系统还提 供了15条特殊的运算指令。 在需要的场合灵活应用这些 指令,可以大大提高程序的 编写速度和执行速度,缩短 程序的长度,减少指令执行 的周期。
9

逻辑运算指令
逻辑与(AND)运算指令 逻辑或(OR)运算指令 逻辑异或(XOR)运算指令 移位(SHIFT)指令 测试(TEST)指令

10

1. 逻辑与(AND)运算指令 举例
A

指令操作前 00 00FF 1200H 0100H A AR3

指令操作后 00 0000 1000H 0101H

AND *AR3+,A

AR3 数据存储器 0100H

1500H 0100H

1500H

11

2.逻辑或(OR)运算指令

OR *AR3+,A
指令操作前 A AR3 数据存储器 0100H 1500H 0100H 1500H 00 00FF 1200H 0100H A AR3 指令操作后 00 00FF 1700H 0101H

12

3. 逻辑异或(XOR)运算指令

XOR *AR3+,A
指令操作前 A AR3 数据存储器 0100H 1500H 0100H 1500H 00 00FF 1200H 0100H A AR3 指令操作后 00 00FF 0700H 0101H

13

4. 移位指令 SFTL A,-8,B
指令操作前 A B C FF 8765 0055H FF 8000 0000H 0 A B C 指令操作后 FF 8765 0055H 00 0087 6500H 1

14

5. 测试指令 BIT *AR2+,12

指令操作前 TC AR2 数据存储器 0100H X 0100H 7688H TC AR2

指令操作后 1 0101H

0100H

7688H
15

程序控制指令
分支转移指令 调用子程序指令 中断指令 返回指令 堆栈操作指令 重复指令 其它控制指令
16

1. 分支转移指令 举例
A

指令操作前 00 0000 3000H 1F45H A PC

指令操作后 00 0000 3000H 3000H

BACC A

PC

17

2. 调用子程序指令 举例
指令操作前 A 00 0000 3000H 0025H 1111H 4567H A PC SP 1110H 指令操作后 00 0000 3000H 3000H 1110H 4567H

CALAD 1000H

PC SP 数据存储器 1110H

18

3. 中断指令 特点

发生中断时INTM被置1,屏蔽所有 可屏蔽中断,并设置IFR中相应的 中断标志位。

19

4. 返回指令 特点

返回指令用于执行完子程序调用或中断服务 程序执行完后,使程序返回到子程序调用指 令或中断发生的地方以继续往下执行。如果 是延迟返回,则先取出并执行紧跟在该指令 后面的两条单字指令或一条双字指令。
20

5.重复指令 举例

RPT # 99 ;循环执行NOP指令100 ;次,RC=63H,单字指令 NOP RPT # 0FFFFH;将紧跟在RPT后面的下一条指 令循环执行FFFFH次
21

6. 堆栈操作指令

FRAME K POPD Smem POPM MMR PSHD Smem PSHM MMR

22

7. 其他程序控制指令

? 其它程序控制指令包括:修改辅助寄存器内 容的MAR、保持空闲状态直到产生非屏蔽中 断或复位操作的INLE、不引起任何操作只 完成PC=PC+1的NOP指令等。

23

加载和存储指令
加载和存储指令 条件存储指令 并行的加载和存储指令 并行的加载和乘法指令 并行的加载和加减指令

24

1. 加载指令 举例
指令操作前 A 00 0000 2000H 0000H A AR2 指令操作后 00 4567 1234H 0102H

ST # 0100H,AR2 DLD *AR2+,A

AR2 数据存储器 0100H 0101H

4567H 1234H

0100H 0101H

4567H 1234H

25

2. 存储指令 举例
T 指令操作前 8765H 0222H T AR7 指令操作后 8765H 0221H

ST T *AR7-

AR7 数据存储器 0222H

1234H

0222H

8765H

26

3. 条件存储指令 举例
A AR6 指令操作前 00 0756 DEFBH 0232H F0F0H 6666H A AR6 BRC 0232H 指令操作后 00 0756 DEFBH 0231H F0F0H F0F0H

SACCD *AR6-,AGT

BRC 数据存储器 0232H

27

4. 并行执行指令 举例
A B ASM 指令操作前 00 0000 001CH FF 8421 1234H 1CH 1 0232H 0233H 0000H 8001H A B ASM SXM AR6 AR7 0232H 0233H 指令操作后 FF 8001 0000H FF 8421 1234H 04H 1 0231H 0234H F842H 8001H

ST B,*AR6- || LD AR7+,A

SXM AR6 AR7 数据存储器 0232H 0233H

28

5. 其他加载和存储指令 举例
AR2

指令操作前 0222H 0233H AR2 AR4

指令操作后 0223H 0234H 12ABH 12ABH

MVDD *AR4+,*AR2+

AR4 0222H 0233H

数据存储器 FFFFH 0222H 12ABH 0233H

29

汇编语言伪指令 汇编语言源程序中,以.asm为程序的扩展名, 用“段”伪指令来组织程序的结构。 程序一般由数据段、堆栈段和代码段组成。 .data用于存放有初值的数据段;.usect用于 为堆栈保留一块存储空间;.text用于设置代 码段。

30

汇编指令
常用的汇编命令
.usect

.bss .data .sect .text .word .int .title .end

为未初始化变量保留存储空间的自 定义段 (长度) 通常为未初始化的变量留出的空间 已初始化数据段 建立包含代码和数据的自定义段 ,常用于 定义中断向量表 紧随其后的是汇编程序正文 初始化一个或多个16位整数(有符号) 初始化一个或多个16位整数 (无 符号) 在列表页头显示一个标题 结束程序

31

举例

对一个数组进行初始化 X[5]={0,0,0,0,0} .bss x,5 STM #x,AR1 RPTZ A,#4 STL A,*AR1+

32

;该程序在0x1000开始的8个地址填写0xaaaa, 然后读出,并存储到0x1008开始的8个地址。 .text main: stm #1000h,ar1 rpt #07h st #0aaaah,*ar1+ stm #7h,ar3 stm #1000h,ar1 stm #1008h,ar2 loop: ld *ar1+,t st t,*ar2+ banz loop,*ar3.end ;MVDD *ar1+, ,*ar2+
33

;将数据存储器中的数组x[20]复制到数组y[20]
.bss x,20 .bss y,20 … STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+
34

;指示灯闪烁 .text dm1: ssbx xf call delay rsbx xf call delay b dm1 delay: stm #270fh,ar6 stm #0f9h,ar7 banz banz .end
35

;9999 ;249 ;2周期

loop1:
loop2: ret

loop2,*ar7loop1,*ar6-

DSP应用程序设计
? 应用程序设计包含两个方面的内容:一是选 择合适的编程语言编写程序;二是选择适当 的开发环境和开发工具。

36

? DSP的软件开发大体有三种方式:一种是直 接编写汇编语言程序进行编译连接;一种是 编写C语言程序,用C语言优化软件进行编 译连接;还有一种是混合编程,对于速度要 求比较高的代码部分如滤波、FTT等算法, 应用汇编语言来编写;对于一些控制代码, 可用C语言来写,这样可加快开发速度。

37

C源 程 序 C源 程 序 C源 程 序 宏源文件 归档器 宏库 C编 译 器 汇编源文件 汇编器 助记符指令转 换为代数指令 汇编源文件

归档器

COFF 目标文件

建立可用库

目标文件库

连接器

运行支持库 调试工具

COFF 可执行文件 Hex格 式 转 换 EPROM 编 程 器 绝对列表 交叉引用列表

TMS320C54x
38

顺序结构程序
? 顺序结构是最基本的程序结构形式,程序的 语句或者结构被连续执行

39

分支结构程序
? 程序分支主要是靠条件转移指令来实现的, 利用这些指令可以执行分支操作,循环控制 等。

40

循环程序结构
? 循环程序设计主要用于某些需要重复进行的 操作,简化程序,节约内存。

41

子程序结构
? 子程序是一个独立的程序段,具有确定的功 能,可以被其他程序调用,调用它的程序一 般是主程序。

42

DSP集成开发环境

43

介绍TI公司的集成开发环境 CCS(Code Composer Studio).CCS 提供了环境配置、源文件编辑、程序调 试、跟踪和分析等工具,可以帮助用户 在一个软件环境下完成编辑、编译链接、 调试和数据分析等工作.

44

? CCS一般工作在两种模式下:软件仿真器和 与硬件开发板相结合的在线编程.前者可以 脱离DSP芯片,在PC机上模拟DSP的指令集 与工作机制,主要用于前期算法实现和调试. 后者实时运行在DSP芯片上,可以在线编制 和调试应用程序.

45

CCS 集成开发环境应用
?
?

概述

利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、 程序编辑、编译链接、调试和数据分析等工作环节.使用CCS开发应 用程序的一般步骤为: ? 打开或创建一个工程文件.工程文件中包括源程序(C或汇编)、目标 文件、库文件、连接命令文件和包含文件.

46

? 编辑各类文件.如头文件(.h文件),命令文件(.cmd文件)和源程 序(.c,.asm文件)等.可以使用一般的编辑软件或CCS集成编辑 环境进行各类文件编辑. ? 对工程进行编译.如果有语法错误,将在构建(Build)窗口中显示 出来.用户可以根据显示的信息定位错误位置,更改错误. ? 排除程序的语法错误后,用户可以对计算结果/输出数据进行分 析,评估算法性能.CCS提供了探针、图形显示、性能测试等工 具来分析数据、评估性能.

47

? 一个典型的CCS集成环境窗口示例.整个窗口由 主菜单、工具条、工程窗口、编辑窗口、图形 显示窗口、内存单元显示窗口和寄存器显示窗 口等构成. ? 工程窗口用来组织用户的若干程序构成一个项 目,用户可以从工程列表中选中需要编辑和调试 的特定程序. ? 在源程序编辑/调试窗口中用户既可以编辑程序, 又可以设置断点和针(对于C程序),调试程序

48

49

? 反汇编窗口可以帮助用户查看机器指令,查找错误 (汇编程序探针、断点的设置应在反汇编窗口中进 行). ? 内存和寄存器显示窗口可以查看、编辑内存单元和 寄存器. ? 图形显示窗口可以根据用户需要直接或经过处理后 显示数据. ? 用户可以通过主莱单Windows条目来管理各窗口. 在CCS窗口中单击鼠标右键都可以弹出与此窗口内 容相关联的菜单.
50

编辑源程序
? CCS集成编辑环境可以编辑任何文本文件 (对C程序和汇编程序),可以打开多个窗口或 对同一文件打开多个窗口,进行多窗口显示. 点击主莱单命令File New Source File 弹出编辑窗口进行编辑.

51

? CCS提供的单步执行操作有4种类型,它们在调试工 具条上分别有对应的快捷按钮. ? (1)单步进入(快捷键F8). 此操作将进入语句内部 (如子程序或软件中断)调试. ? (2)单步执行(快捷键F10)..此命令将函数或子程 序当作一条语句执行,不进其内部调试. ? (3)单步跳出(快捷键Shift+F7)..此命令将从子程 序中跳出. ? (4)执行到当前光标处(快捷键Ctrl+F10). 此命 令使程序运行到光标所在的语句处.
52

查看、编辑内存
? CCS允许显示特定区域的内存单元数据. 可 显示指定地址的内存单元.改变内存窗口显 示属性(如数椐显示格式,是否对照显示等)

53

54

? 显示寄存器 ? CCS将在CCS窗口下方弹出一寄存器查看 窗口 ? 编辑变量 ? 命令Edit 可以直接编辑用户定义的数 据变量,在对话框中填入变量名(Variable) 和新的数值(Value)即可.

55

通过观察窗口查看变量
? 在程序运行中,用户可能需要不间断地观察 某个变量的变化情况.CCS提供了观察窗口 (Watch Window)用于在调试过程中实时 查看和修改变量值.

56


推荐相关:

DSP指令一览表_信息与通信_工程科技_专业资料。DSP指令一览表 DSP 指令一览表附录 6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术运算指令 1. 加法...


DSPC2000汇编指令_法律资料_人文社科_专业资料。第六章 DSP 的寻址方式和汇编指令当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据 程序...


访问堆栈的指令有四条:PSHD,PSHM,POPD,POPM DSP 指令实例: 指令实例: DSP 直接寻址(只能寻址 C28x 的低 4M 数据地址空间) :(1)@6 位二进制立即数方式,...


1. MACR *AR3-, *AR4-, A, B 指令执行前 00 0000 1000H 00 0000 2200H 0003H 0 0100H 0200H 0345H 0400H 指令执行后 00 0000 1000H 00 000D ...


从功能 上可以分为配置指令、算术指令、逻辑指令、程序控制指令以及装载与存储指令 等5大类,总共有300多条指令。 1)配置指令配置指令主要用来对DSP芯片的工作模式...


DSP指令读取与数据读取是走同一Pipeline中的,但是在不同的阶段完成的。指令获 取是在PG/PS/PW/PR/DP中完成的,它把指令送到执行单元。执行单元经过DC,后开始...


DSP指令填空大三_计算机硬件及网络_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 DSP指令填空大三_计算机硬件及网络_IT/计算机_专业资料。电气工程实践...


DSP 芯片的特点: 1.采用哈佛结构实现内部总线;2.采用流水线操作实现指令操作; 3.乘法采用专用的硬件乘法器实现;4.具有高效的 DSP 指令 哈佛结构的特点:将程序和...


DSP 汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) D15 D14 D13 D12 D11 1 0 1 1 1 D10 0 D9 1 D8 1 D7 0 D6 1 D5 1 D4 ...


dsp指令分类伪指令及其表示格式 具体描述 段定义伪指令 .asect “段名” , 地址 汇编到一以绝对地址为起始的段中 .bss 符号,字数[,块标号] 在未初始化...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com