DSP[附录2] tms320c54x 指令速查表

合集下载

06-第三章-TMS320C54x的指令系统-1

06-第三章-TMS320C54x的指令系统-1

与所有的微处理器助记符指令一样 , TMS320C54x 的助记符指令也是由操作符和 操作数两部分组成的。 操作符指出指令应完成何种操作;操作 数用来描述该指令的操作对象,它可以是数 据本身,也可以是指出如何获取操作数的信 息。
指令的寻址方式是指硬件寻找指令指定 的参与运算的操作数的方法。
助记符指令的基本形式: 标号,操作符,操作数1,操作数2,操作数3 其中,标号是可选项; 操作数可以没有或 有多个,其内容可以是立即数、寄存器、程 序地址、数据地址、I/O地址等。 TMS320C54x 中源操作数一般在操作数 1 的位置,指令执行结果存放到目的操作数单 元中,源操作数不变。
使用堆栈寻址方式访问堆栈的指令共有4条:
PSHD:把一个数据存储器的值压入堆栈。 PSHM:把一个存储器映像寄存器的值压入 堆栈。 POPD:把一个数据存储器的值弹出堆栈。 POPM:把一个存储器映像寄存器的值弹出 堆栈。 堆栈存放数据是从高地址向低地址进 行的。压入堆栈时,先减小SP,再将数据压 入堆栈;弹出堆栈时,先从堆栈弹出数据, 再增加SP值。
循环缓冲器实现的关键是循环寻址的 实现。循环缓冲器大小寄存器(BK)的内容 确定了循环缓冲器的大小。BK中的数值 由指令“STM #lk,BK”设定。 长度为R的缓冲器必须从N位地址的边 界开始(即循环缓冲器基地址的N个最低有 效位必须为0) 。
循环寻址的算法:
if 0≤index+step≤BK; index=index+step. else if index+step≥BK; index=index+step-BK. else if index+step<0; index=index+step+BK.

TMS320C54x的指令

TMS320C54x的指令

26
3. 条件存储指令 举例
A AR6 指令操作前 00 0756 DEFBH 0232H F0F0H 6666H A AR6 BRC 0232H 指令操作后 00 0756 DEFBH 0231H F0F0H F0F0H
SRCCD *AR6-,AGT
BRC 数据存储器 0232H
27
4. 并行执行指令 举例
举例
5
3.
乘法指令
乘法指令的功能是将T 寄存器或一个数据 存储器的值与另一个数据存储器的值或一 个立即数相乘,并将乘积存放于目的累加 器A或B中。
举例 RSBX FRCT LD TEMP1,T MPY TEMP2,A
6
4.乘加和乘减指令
方法
乘加指令先完成一个乘法操作,然后再将 乘积与源累加器的内容相加。而乘减指令 完成从累加器B(或源累加器src或目的累 加器dst)减去T寄存器(或一个操作数与 另外一个操作数的乘积)的操作,并将其 运算结果存入累加器B(或源累加器src或 目的累加器dst)中去。
数据存储器 FFFFH 0222H 12ABH 0233H
29
汇编语言伪指令 汇编语言源程序中,以.asm为程序的扩展名, 用“段”伪指令来组织程序的结构。 程序一般由数据段、堆栈段和代码段组成。 .data用于存放有初值的数据段;.usect用于 为堆栈保留一块存储空间;.text用于设置代 码段。
TMS320C54x的指令系统
TMS320C54x的指令系统分为算术运算指 令、逻辑运算指令、程序控制指令及装载和 存储指令四种基本类型。
1
TMS320C54x指令系统概述
● ● ● ● 算术运算指令; 逻辑运算指令; 装载和存储指令; 程序控制指令;

TMS320C54x的指令系统

TMS320C54x的指令系统
例:MPY 13, A ;将T寄存器的值乘以数据存储器第8
页第13个地址单元里的数据。
第2部分 TMS320C54x的指令系统
算术运算指令—双精度(双字)
双字加(DADD)
例:DADD *AR3+, A, B ;将辅助寄存器AR3所指定的
地址里的数据与累加器A中的数据相加,计算结果存入累加 器B中。
33
34 35
K
k3 k5
少于9位的短立即数
3位立即数(0≤k3≤7) 5位立即数(-16≤k5≤15)
36
37 38 39 40
k9
lk Lmem mmr,MMR
9位立即数(0≤k9≤511)
16位长立即数 利用长字寻址的32位单数据存储器操作数 存储器映像寄存器
MMRx,MMRy 存储器映像寄存器,AR0~AR7或SP
9 10
∧ |
按位异或运算 按位或运算
第2部分 TMS320C54x的指令系统
从左至右 从左至右
C54x指令系统
指令系统的主要特点如下:
(1)可同时读入2或3个操作数。 (2)支持双精度运算的32位长操作数指令。 (3)单条指令重复和块指令重复操作。 (4)块存储器传送指令。 (5)并行操作(并行存储和加载、并行存储和加/减法、并 行存储和乘法、并行加载和乘法)指令。 (6)条件存储指令。 (7)延迟操作指令。 (8)从中断快速返回指令。 (9)特殊用途指令(支持FIR滤波、最小均方算法、多项式计 算以及浮点运算)。 (10)空转(省电方式)指令。
第2部分 TMS320C54x的指令系统
加载和存储类指令的区别
加载指令LD的源操作数可以是内存或立即数, 目的操作数则是累加器或特殊寄存器。 存储指令ST的源操作数可以是累加器、特殊寄 存器或者立即数,目的操作数则是内存(包括 MMR) 可以认为二者功能相反,LD是从内存读取,ST 是往内存存储。

第3章TMS320C54x的指令系统详解

第3章TMS320C54x的指令系统详解
15~7
9位数据页指针DP值 图3.1.2
6~0
7位IR值
CPL=0时, 16位数据存储单元的地址
② 当CPL=1时,将堆栈指针SP的16位地址 与指令中的7位地址相加,形成16位的数据 存储器地址,如图:
15~0
16位堆栈指针SP
15~7 0 0 0 0 0 0 0 0 0 6~0 7位IR值
有效存储地址 图3.1.3 CPL=1时, 16位数据存储单元的地址
下图列出了双操作数寻址的指令代码格式:
15~8 操作码 7 Xmod 6 5 Xar 4 3 Ymod 2 1 Yar 0
图3.1.5双操作数寻址的指令代码格式
表3.1.7 双操作数的各位说明:
位 15~8 7~6 5~4 3~2 1~0
名称 操作码 Xmod Xar Ymod Yar
功能 8位代码包含了指令的操作码 定义了用于寻址Xmem操作数的间接寻址方式的类型 2位代码确定了存储Xmem地址的辅助寄存器 定义了用于寻址Ymem操作数的间接寻址方式类型 2位代码确定存储Ymem地址的辅助寄存器
3.1.3 累加器寻址
累加器寻址是将累加器的内容作为地址 去访问程序存储器单元,即将累加器中的 数作为地址,用来对存放数据的程序存储 器寻址。有两条指令可以采用累加器寻址。 ① READ A Smem ② WRIT A Smem
3.1.4 直接寻址
直接寻址是利用数据指针和堆栈指针寻 址,其特点是数据存储器地址由基地址和 偏移地址共同构成,共16位。 基地址位于数据存储器地址的高9位, 偏移地址位于数据存储器地址(dmad)的 低7位。 下面分别给出了直接寻址的指令代码格 式以及各位说明。
由于只有2位可以用于选择辅助寄存器,所以 根据Xar或Yar的值可以选择4个寄存器。 下表列出了Xar或Yar同辅助寄存器的对应关系:

第3章 TMS320C54x的指令系统1

第3章 TMS320C54x的指令系统1

Email:ccitdsp@
第三章:C54x指令系统__3.3 寻 址DSP原理及应用 方式
程序存储器寻址: ② 程序存储器寻址: 如:MVPD,TABLE,*AR7-;(TABLE)→(AR7) and AR7=AR7-1 MVPD,TABLE, AR7 I/O端口寻址 端口寻址( ③ I/O端口寻址(2条) 如:PORTR,FIFO,*AR5;从端口FIFO读数据→(AR5) PORTR,FIFO, AR5 PORTW, AR2 BOFO; PORTW,*AR2,BOFO;将(AR2)→BOFO端口 K)寻址 用一个符号或常数确定一个数据M 寻址: ④ *(1K)寻址:用一个符号或常数确定一个数据M地址 如:LD,*(BUFFER),A; LD, BUFFER),A;
1. 立即寻址
含义:指令中已包含有执行指令所需的操作数; 含义:指令中已包含有执行指令所需的操作数; 用途:主要用R 用途:主要用R或M的初始化; 的初始化; 说明: 说明:① 在数值或符号前加‘#’表示立即数; 在数值或符号前加‘ 表示立即数; 立即数有两种形式:短和长 ② 立即数有两种形式 短和长 例如: 例如: LD #10 , A ; 立即数10→A累加器 立即数10→A累加器 10→A
9 位 数 据 页 指 针 DP 7 位 dm ad
• 当ST1中的CPL=1时,将指令中的7位地址与16位 ST1中的 中的CPL 将指令中的7位地址与 位地址与16位 堆栈指针SP相加 形成16位的数据存储器地址 相加, 位的数据存储器地址。 堆栈指针 相加,形成 位的数据存储器地址。
16 位 堆 栈 指 针 SP
;将立即数40传送给ARl 将立即数40传送给 传送给ARl
begin: begin: LD

TMS320C54X DSP 芯片的指令系统

TMS320C54X DSP  芯片的指令系统

分成512页,每页128个单元 DP取值范围:0~511 7位偏移地址范围:0~127 不改变基地址,可寻址连续的128个单元 DP复位值为0

直接寻址
DP值 00000 0000 偏移量 000 0000 „ 111 1111 000 0000 „ 111 1111 000 0000 „ 111 1111 „ 000 0000 „ 111 1111 数据存储器 第0页:0000H--007FH
例:MVDM 2000H,T RPT #19 ;数据块的复制 ;SAMPLE为常数表示 ;的地址 MVKD 0200H,*AR2+ MVMD AR2,SAMPLE

程序存储器地址(pmad)寻址
确定程序存储器中的一个地址 主要指令:

FIRS MACD MACP MVDP MVPD
Xmem, Smem, Smem, Smem, pmad,
位倒序寻址

主要用于FFT算法。 8点FFT的位码倒序:

若输入顺序:X(0)、X(1)、X(2) 、X(3)、 X(4) 、X(5) 、X(6)、X(7); 则输出顺序:Y(0)、 Y(4)、Y(2) 、Y(6)、 Y(1) 、Y(5) 、Y(3)、 Y(7).

16点FFT的位码倒序:表3.1.6

累加器:

Src,dst,dst_,A,B

移位值:

ASM,TS,SHFT,SHIFT K,k3,k5,k9,lk

立即数:


运算符及其优先级,表3.2.2
3.1 寻址方式


两种:数据寻址和程序寻址 数据寻址(7种基本方式)
立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址

TMS320C54x汇编指令系统

TMS320C54x汇编指令系统

表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
2.2 逻辑运算指令
● 逻辑指令包括与、或、异或(按位)、移位和测试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令表4-15 中断指令表4-16 返回指令
表4-17 重复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
2.3 程序控制指令
● 程序控制指令包括分支转移指令、子程序调用指令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表4-14、表4-15、表4-16、表4-17、表4-18及表419所示。
TMS320C54x汇编指令系统
1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
2 指令系统
● 2.1 算术运算指令 ● 2.2 逻辑运算指令 ● 2.3 程序控制指令
返回首页
2.1 算术运算指令
● C54x的算术运算指令包括加法指令、减法指令、乘法指令、乘累加指令与乘法减法指令、双字/ 双精度运算指令及专用指令。分别如表4-2、表4-3、表4-4、表4-5、表4-6、表4-7所示。

DSP指令一览表

DSP指令一览表

无符号数乘法
11
SQUR Smem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQUR A,dst
dst=A(32—16)*A(32—16) 累加器 A 的高位平方
11
1
4. 乘法累加/减指令
句法
表达式
说明
字周 数期
MAC Smem,src
src=src+T*Smem
操作数与 T 寄存器值相乘后加到累加器
操作数移位后加至累加器 操作数左移 16 位加至累加器
11 11
ADD Smem[,SHIFT],src[,dst] dst=src+Smem<<SHIFT 操作数移位后加到累加器
22
ADD Xmem,SHFT,src
src=src+Xmem<<SHFT 操作数移位后加到累加器
11
ADD Xmem,Ymem,dst
, 操作数与累加器 A 高位相乘后加到累加器 B 1 1
MACA T,src[,dst]
dst=src+T*A(32—16)
T 寄存器值与累加器 A 高位相乘
11
MACAR Smem[,B]
B=rnd(B+Smem*A(32—16)) , T 寄存器值与累加器 A 高位相乘后加到累加
T=Smem
B(带舍入)
11
SUB Xmem,Ymem,dst
dst=Xmem<<16—Ymem<<16 两个操作数分别左移 16 位后相减
11
SUB #lk[,SHFT],src[,dst] dst=src—#1k<<SHFT

c54xx系列DSP汇编指令详解

c54xx系列DSP汇编指令详解
x
意义 或运算 异或运算
减1 赋值于 表示一个立即数 x 的补码
|x|
x 的绝对值
0x
十六进制数据
>>
右移
<<
左移
×
乘法
*
指针指向的地址
TMS320C54xx 系列 DSP 的指令一共有 129 条,按功能分为如下几类:算术指令、逻 辑指令、程序控制指令、存储和装入指令以及循环指令。下面根据每种指令功能的不同,
目的累加器的反 if dst=A,then dst_=B if dst=B then dst_=A
E 地址总线 EAB 地址寄存器 23 位立即数表示的程序存储器地址 ST1 寄存器中的分数方式位 十六进制数据 十六进制数据 累加器 A 的高端(位 32~16) ST1 寄存器中的保持方式位 中断标志寄存器 ST1 寄存器中的中断屏蔽位 少于 9 位的短立即数
3 位立即数(0 ≤ k3 ≤ 7 ) 5 位立即数(-16 ≤ k5 ≤ 15 ) 9 位立即数(0 ≤ k9 ≤ 115 )
16 位长立即数 使用长字寻址 32 位单数据存储器操作数 存储器映射寄存器,AR0~AR7 或 SP
存储器映射寄存器,AR0~AR7 或 SP
紧跟 XC 指令的字数,n=1 或 2 指定在 RSBX、SSBX 和 XC 指令中修改的状态寄存器 N=0,状态寄存器 ST0 N=1,状态寄存器 ST1 ST0 寄存器中的累加器 A 的溢出标志 ST0 寄存器中的累加器 B 的溢出标志 目的累加器(A 或 B)的溢出标志 目的累加器反(A 或 B)的溢出标志 源累加器(A 或 B)的溢出标志 ST1 寄存器中的溢出方式位 16 位立即数表示的端口地址
③ 乘法指令

DSP TMS320C54X系列芯片结构与基本特征

DSP TMS320C54X系列芯片结构与基本特征

ST0各位的含义
ST0主要反映寻址要求和计算的中间运行状态。
bit 15-13 12 TC 11 C 10 OVA 9 OVB 8-0 DP 位定义 ARP
ARP(AssistantRigisterPointer):辅助寄存器指针
TC(TestControlSignal):测试/控制标志。 C(Carry):进位标志。加法进位时置1。减法借位时清0。 OVA(OverflowA):累加器A的溢出标志。 OVB(OverflowB):累加器B的溢出标志。
DP(DataMemeryPagePointer):数据存储器页指针。DP 的9位数作为高位将指令中的低7位作为低位结合,形成 16位直接寻址方式下的数据存储器地址。
ST1各位含义
ST1主要反映寻址要求、计算的初始状态设置、I/O及中 断控制 。其各位定义如下:
bit 含义 bit 含义 15 14 BRAF CPL 8 SXM 7 C16 13 XF 12 HM 11 INTM 5 CMPT 10 9 0 OVM 4-1 ASM
桶形移位器(40位)用来为输入的数据进行定标,可以进行以下操 作: ①ALU运算前,对来自数据存储器的操作数或者累加器的值进行定 标; ②对累加器的值进行算术或逻辑移位; ③对累加器归一化处理; ④对累加器的值存储到数据存储器之前进行定标。
桶形移位寄存器的控制: ① 操作数带符号位/不带符号位扩展控制:ST1寄存器的SXM位: 当SXM=1时,执行符号位扩展。 ② 移位位数的控制: 指令中的移位数就是移位的位数。正值表示左移,负值表示右移。 移位数可以用以下方式定义: (1)指令操作数中给定的一个4或5位的立即数值表示一个移位数值, 范围为(-16~15)。 ⑵状态寄存器STl的累加器移位方式(ASM)位,共5位,表示一个范 围为-16~15的移位数。 ⑶T寄存器中最低6位的数值表示一个范围为-16~31的移位数。 例如: ADD A,-4,B ;累加器A右移4位后加到累加器B ADD A,ASM,B ;累加器A按ASM规定的移位数移位后加到累 加器B NORM A ;按T寄存器中的数值对累加器归一化

DSP指令大全(最全)

DSP指令大全(最全)

DSP指令大全(最全)附录6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术运算指令二、逻辑运算指令三、程序控制指令6.注:?条件―真‖,§条件―假‖,※延迟指令。

四、加载和存储指令4.6.7.五.伪指令2.初始化常数(数据和存储器)的伪指令3.调整段程序计数器伪指令(SPC).align 把SPC调整到页边界.even 把SPC调整到偶数字边界4.控制输出列表格式化伪指令5.条件汇编伪指令.break [well-defined expression] 如果条件真结束.loop汇编,.break结构是可选项.else 如果.if条件为假,汇编代码块.else结构是可选项.elseif well-defined expression——如果if条件为假且.elseif 条件为真,汇编代码块.else结构是可选项.endif 结束.if代码块.endloop 结束.1oop代码块.if well-defined expression 如果条件为真则汇编代码块.loop [well-defined expression] 开始代码块的重复汇编6. 汇编符号.asg [”] character string [”],substitution symbol——把字符串赋予替代的符号..endstruct 结束结构定义.equ 使值和符号相等.eval well-defined expression,substitution symbol 根据数字替代符号完成运算.newblock 取消局部标号.set 使数值和符号相等.struct 开始结构定义.tag 把结构属性赋予标号7.宏指令宏定义:Macname .macro[参数1],[…],[参数n]宏调用:[标号][:] macname [参数1],[…],[参数n]8.编译软件指令①汇编器:asm500.exeasm500[input file[object file [listing file] [-options]]-c—使汇编语言文件中大小没有区别。

C54x DSP的寻址方式及代数汇编指令

C54x DSP的寻址方式及代数汇编指令

C54x DSP的寻址方式及代数汇编指令c54xdsp的寻址方式及代数汇编指令附录三:c54xdsp的寻址方式及代数汇编语言指令c54xdsp的串行方式tms320c54x系列dsp的存储空间包括程序存储空间、数据存储空间和i/o空间。

每个空间都有64k字的大小。

因此,如果采用直接的寻址方式则需16位的地址。

为了节省程序存储空间和提高程序的运行速度,经常采用间接寻址等方法以便使指令字节数减少。

在本章内将对c54x的寻址方式做较为详细的介绍。

1.程序空间串行16位直接寻址方式主要应用于程序的调用(callpmad)、跳转指令(gotopmad)和块重复指令((d)blockrepeat)中。

具体说明如下:1、pmad所指的就是16十一位程序计数器pc的内容,它代表的就是程序存储空间的地址(programmemoryaddress);2、call指令和goto指令包含无条件的call和goto和有条件的call和goto。

3、块重复指令(d)blockrepeat的初始地址藏于寄存器rsa(repeatstartingaddress)中,结束地址存于寄存器rea(repeatendingaddress)中,重复次数存于寄存器brc(blockrepeatcounter)中。

4、pc、brc、rsa、rea坐落于pagen(programaddressgenerator)当中,见到图(3a-1)。

rcbrcrsarea图(3a-1)pagen程序计数器pc2.数据空间串行数据空间的寻址正如同8086微机的寻址问题一样重要,只有正确掌握c54x数据空间的c54x提供了7种基本寻址方式:?立即寻址.1寻址方式才能正确编制c54x的汇编程序。

绝对串行.?累加器串行.?轻易串行.辅助寄存器间接寻址.?内存映射寄存器寻址.?堆栈寻址.在本节中将详尽表明这7种串行方式。

坚信详尽写作本节可以有利于对c54x处理器的重新认识和认知,并在程序的基本建设中熟练地运用这些串行方式。

TMS320C54x的数据传送指令

TMS320C54x的数据传送指令

9 STL src , Smem
Smem = src(15-0)
累加器低阶位存入存储单元
10 STL src ,ASM ,Smem Smem = src(15-0)<<ASM 累加器低阶位移位后存入存储单元
11 STL src ,SHFT ,Xmem Xmem = src(15-0)<<SHFT 累加器低阶位移位后存入存储单元
(4) STRCD Xmem,cond
功能: 若满足cond条件,则将T寄存器中的内容存入 Xmem中。
2023年10月16日7时21分
DSP原理及应用
15
4.混合装载和存储指令 用于完成数据存储器、程序存储器以及I/O口
之间的数据传输,共计12条。
(1) MVDD Xmem,Ymem
功能: Ymem = Xmem 将数据存储器Xmem中的数据传送
功能: Smem = pmad 将以pmad为地址的程序存储器中 的数据传送到数据存储器Smem中。
(9) PORTR PA,Smem
功能: Smem = PA 将以PA为地址的I/O口中的数据传送
到数据存储器Smem中。
2023年10月16日7时21分
DSP原理及应用
18
4.混合装载和存储指令
(10) PORTW Smem,PA
累加器高阶位存入存储单元
6 STH src ,ASM ,Smem Smem = src(31-16)<<ASM 累加器高阶位移位后存入存储单元 7 STH src ,SHFT ,Xmem Xmem = src(31-16)<<SHFT 累加器高阶移位后存入存储单元
8 STH src [,SHIFT],Smem Smem = src(31-16)<<SHIFT 累加器高阶位移位后存入存储单元

TMS320C54x系列DSP内部结构功能笔记

TMS320C54x系列DSP内部结构功能笔记

大家在阅读的时候使Word成折叠模式看着会更舒服些。

关于文档里边用到的中文参考资料,附下载地址:/icview-161578-1-1.html前言DSP的本质还是单片机-微机,个人认为,微机类芯片,不论是MCU,ARM还是DSP 甚至是PC上的处理器,我们在学习这类芯片的使用时,首先要学习的便是这些芯片的CPU 核,存储器组织和中断系统。

只有把这几方面的内容掌握之后,你才能说根据其特点来使用这块芯片,Debug时你心中才有数。

至于片上外设,与芯片本身其实并没有太大关系,大可以要使用时再去学习,而且不同芯片的外设其实还都是相通的。

基于此,我把我在学习这类芯片时对于这几块的学习的笔记摘录出来(这篇文档中对是对Ti的TMS320C54x系列的学习笔记),以供大家参考。

我的笔记虽然可能次序,排版,没有市面上的书本组织得好,但我可以说,我决对是面面向应用来写的,而不是为了出书来写的。

市面上的技术类的书,大多数其实只是简单的把官方的文档翻译过来而已,而且在翻译的过程中还省略了很多细节,这些细节其实对于我们的理解和工程开发都是很重要的,另外很多翻译还不准确。

在我的笔记中,中文资料我只是作为一个参考,或者作为一种线索,真正有价值的信息都是来自于我对于官方文档的学习。

每一部分的记录都是以一个新手的态度来写的,这些问题都是新手在学习过程中很可能会遇到或想到的。

虽然排版不好,但当你遇到相关问题或想了解某一块时,把我写的这个Word 文档下载下来,然后使用Word文档的搜索功能搜索自己感兴趣的内容,相信一定会让你得到较为满意的结果的。

不仅是DSP芯片方面的知识笔记,在我向信号处理工程师奋斗的路程上,我对我每一天的学习都作了笔记记录,这些笔记记录都是面向新手,面向细节,面向工程的,都是自己用心的体会。

当有笔记成熟或自成一块时,我会把这些笔记都陆续分享给大家,以供大家在学习或开发过程的参考,希望能为大家节省点时间。

附一张目前自己的笔记文件夹的图。

3.1 TMS320C54x的指令系统1

3.1   TMS320C54x的指令系统1
16
直接寻址——地址形成过程

② CPL=1(SP寻址)
15~8 指令 → 操作码 7 I=0 6~0 数据存储器地址 ( dmad )
堆栈指针 SP→
16 位堆栈指针 SP 偏移地址 ( dmad )
16 位数据存 储器地址 →
16 位 SP +dmad
SP范围:0~65535(可指向存储器任意一个地址 ) dmad:0~127。



定义 以累加器中的内容作为地址去寻址程序存储器— —存放数据的程序存储器。 用途 用于程序存储器和数据存储器之间的数据交换。 仅两条指令(READA、WRITA)可以采用累加器寻址 ① READA Smem

以累加器A中的内容为地址去读取程序存储器,写入 Smem所指向的数据存储器。 将Smem所指向的数据存储器内容写入以累加器A中的 内容为地址的程序存储器。
DP dmad
0 0000 0100
000 0000
@y
@y @y
数据存储器
0500← 0000 操作码 0100 000 0000 0 000 0200 0 0000
0000001500
20
直接寻址举例

例2:数据存储器存储数据如图所示,采用堆 栈指针SP直接寻址,求堆栈中距栈顶两个数x, y的单元的和。(SP=0200H)
支持立即寻址的指令
3位 立即数 5位 立即数 8位 立即数 9位 立即数 16位 立即数 ADD ADDM AND AND MBITF LD #0F930h,A LD MAC CMPM LD F930h,A ORM LD OR RPT RPTZ ST STM SUB XOR XORM
LD

DSP指令一览表

DSP指令一览表
SUBSmem[,SHIFT],src[,dst]dst=src—Smem<<SHIFT操作数移位后与累加器相减22
SUBXmem,SHFT,srcsrc=src—Xmem<<SHFT操作数移位后与累加器相减11
SUBXmem,Ymem,dstdst=Xmem<<16—Ymem<<16两个操作数分别左移16位后相减11
MPYXmem,Ymem,dst dst=Xmem*Ymem,T=Xmem两个操作数相乘11
MPYSmem,#lk,dstdst=Smem*#lk,T=Smem长立即数与操作数相乘22
MPY#lk,dstdst=T*#lk长立即数与T寄存器值相乘22
MPYAdstdst=T*A(32-16)T寄存值与累加器A高位相乘11
SUB#lk[,SHFT],src[,dst]dst=src—#1k<<SHFT长立即数移位后与累加器相减22
SUB#lk,16,src[,dst]dst=src—#1k<<16长立即数左移16位后与累加器相减22
SUBsrc[,SHIFT][,dst]dst=dst—src<<SHIFT源累加器移位后与目的em<<16,A=rnd(A*T+B)求多项式的值11
RNDsrc[,dst]dst=src+215累加器舍入运算11
SATsrcsaturate(src)累加器饱和运算11
SQDSTXmem,YmemB=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16求距离的平方11
1
4. 乘法累加/减指令
句法表达式说明


DSP指令一览表

DSP指令一览表

CMPLsrc[,dst]
dst=—s —r —c
累加器取反
11
DELAYSmem
(Smem+1)=Smem
存储器单元延迟
11
EXPsrc
T=numberofsignbits(src)—8
求累加器的指数
11
FIRSXmem,Ymem,pmad B=B+A*pmad,A=(Xmem+Ymem)<<16
DSP 指令一览表
?附录 6TMS320C54x 指令系统一览表(按指令功能排列)
一、算术运算指令
1.加法指令
句法
表达式
说明
字周 数期
ADDSmem,src
src=src+Smem
操作数加至累加器
11
ADDSmem,TS,src
src=src+Smem<<TS
操作数移位后加至累加器
11
ADDSmem,16,src[,dst] dst=src+Smem<<16
T 寄存值与累加器 A 高位相乘
11
MPYASmem
B=Smem*A(32-16),T=Smem 操作数与累加器 A 高位相乘
11
MPYUSmem,dst
பைடு நூலகம்
dst=uns(T)*uns(Smem) 无符号数乘法
11
SQURSmem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQURA,dst
1
1
MACRXmem,Ymem,src[,dst]
dst=rnd(src+Xmem*Ymem) T=Xmem

3.2TMS320C54x的指令表示方法

3.2TMS320C54x的指令表示方法

XF ST1中的外部标志状态位 XPC 程序计数器扩展寄存器 Xmem 16位双数据存储器操作数,用于双数据操作数指令 16位双数据存储器操作数,用于双数据操作数指令 Ymem 和单数据操作指令
9
第3章 TMS320C54x的指令系统 3.2.1 指令系统中的符号 2.指令操作码符号和缩略语
序号 1 2 3 4 5 6 7 8 9 10
8
第3章 TMS320C54x的指令系统 1.指令系统中的符号和缩略语
序号 71 72 73 74 75 76 77 78 79 80
2019年1月15日
符 号 T TC TOS TRN TS uns


暂存器 ST0中的测试/控制标志 堆栈顶部 状态转移寄存器 由T寄存器的5~0位所规定的移位数(-16~31) 无符号数
7
第3章 TMS320C54x的指令系统 1.指令系统中的符号和缩略语
序号 61 62 63 64 65 66 67 68 69 70
2019年1月15日
符 号 RSA SBIT SHFT SHIFT Sind Smem SP src ST0,ST1 SXM


块重复起始地址寄存器 用于指定状态寄存器位的4位地址(0~15) 4位移位值(0~15) 5位移位值(-16~15) 间接寻址的单数据存储器操作数 16位单数据存储器操作数 堆栈指针寄存器 源累加器(A或B) 状态寄存器0,状态寄存器1 ST1中的符号扩展方式位
第3章 TMS320C54x的指令系统
移位逻辑运算指令:例1
2019年1月15日
30
第3章 TMS320C54x的指令系统
测试指令:例1
2019年1月15日
31
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特指某个辅助寄存器(0≤x≤7)
ARP
ST0中的辅助寄存器指针位;这3位指向当前辅助寄存器(AR)
ASM
ST1中的5位累加器移位方式位(-16≤ASM≤15)
B
累加器B
BRAF
ST1中的块循环有效标志
BRC
块循环计数器
BITC
4位数决定位测试指令对指定的数据存储器值的哪一位进行测试
C16
ST1中的双16位/双精度算术方式位
MAC Smem, # lk, src[,dst]
与长立即数相乘再加到ACC中
MACR Smem, src
带四舍五入与T寄存器相乘再加到ACC中(凑整)
MACR Xmem, Ymem,src [,dst]
带四舍五入双操作数相乘再加到ACC中(凑整)
MACA Smem, [,B]
与ACCA的高端相乘再加到ACCB中
累加器值带TC位循环左移
ROR src
累加器值循环右移
SFTA src, SHIFT[,dst]
累加器值算术移位
SFTC src
累加器值条件移位
SFTL src, SHIFT[,dst]
累加器值逻辑移位
(5)测试指令
BIT Xmem, BITC
测试指定位
BITF Smem, # lk
测试由立即数指定位
N
指定在RSBX,SSBX和XC指令中修改的状态寄存器(ST0或ST1)
OVA
ST0中的累加器A的溢出标志
OVB
ST0中的累加器B的溢出标志
OVdst
目的累加器(A或B)的溢出标志
OVdst_
目的累加器反(A或B)的溢出标志
Ovsrc
源累加器(A或B)的溢出标志
OVM
ST1中的溢出方式位
PA
16位立即数表示的端口地址(0≤PA≤65535)
从累加器中减去一个操作数
SUB Smem, TS, src
移位后再与ACC相减
SUB Smem, 16, src[,dst]
把左移16位的操作数与ACC相减
SUB Smem, [,SHIFT], src[,dst]
把移位后的操作数与ACC相减
SUB Xmem, SHFT, src
把移位后的操作数与ACC相减
ST1
状态存储器1
SXM
ST1中的符号扩展方式位
T
暂存器
TC
ST0中测试/控制标志位
TOS
堆栈栈顶
TRN
状态转移寄存器
TS
T寄存器的5-0位确定的移位数(-16≤TS≤31)
uns
无符号的数
XF
ST1中的外部标志状态位
XPC
程序计数器扩展寄存器
Xmem
在双操作数指令和一些单操作数指令中使用的16位双数据存储器操作数
SUB Xmem, Ymem, dst
把两个操作数分别左移16位,然后相减
SUB # lk [,SHFT], src [,dst]
长立即数移位后与ACC相减
SUB # lk, 16, src[,dst]
把左移16位的长立即数与ACC相减
SUB src, [,SHIFT][,dst]
移位再相减
SUB src, ASM[,dst]
两个数据存储器操作数相乘
MPY Smem, # lk, dst
长立即数与单数据存储器操作数相乘
MPY # lk, dst
长立即数与T寄存器的值相乘
MPYA dst
ACCA的高端与T寄存器的值相乘
MPYA Smem
单数据存储器操作数与ACCA的高端相乘
MPYU Smem, dst
T寄存器的值与符号数相乘
求累加器值的反码
DELAY Smem
存储器延迟
EXP src
求累加器指数
FIRS Xmem, Ymem, pmad
对称有限冲击响应滤波器
LMS Xmem, Ymem
求最小均方值
MAX dst
求累加器的最大值
MIN dst
求累加器的最小值
NEG src[,dst]
求累加器的反值
NORM src[,dst]
MACP Smem, pmad, src
与程序寄存器值相乘再累加
MACSU Xmem, Ymem, src
带符号数与无符号数相乘再累加
MAS Smem, src
与T寄存器相乘再与ACC相减
MASR Smem, src
带四舍五入与T寄存器相乘再与ACC相减(凑整)
MAS Xmem, Ymem, src[,dst]
移位再相减,移动位数为ASM的值
SUBB Smem, src
带有借位位的加法
SUBC Smem, src
条件减法
SUBS Smem, src
带符号扩展的减法
(3)乘法指令
MPY Smem, dst
T寄存器与单数据存储器操作数相乘
MPYR Smem, dst
T寄存器带四舍五入与单数据存储器操作数相乘
MPY Xmem, Ymem, dst
ST0中的9位数据存储器页指针(0≤DP≤511)
dst
目的累加器(A或B)
dst_
另一个目的累加器
EAB
E地址总线
EAR
EAB地址寄存器
extpmad
23位立即数表示的程序存储器地址
FRCT
ST1中的分数方式位
hi (A)
累加器A的高端(31-16位)
HM
ST1中的保持方式位
IFR
中断标志寄存器
INTM
可选择延时的无条件调用
CC[D] pmad,cond[,cond[,cond]]
可选择延时的条件调用
FCALA[D] src
可选择延时的远程无条件调用
FCALL[D] extpmad
可选择延时的远程条件调用
(3)中断指令
INTRK
软件中断
TRAPK
软件中断
MACA T, src[,dst]
T寄存器与ACCA的高端相乘再加到ACC中
MACAR Smem[,B]
带四舍五入与ACCA的高端相乘再加到ACCB (凑整)
MACAR T, src[,dst]
T寄存器带四舍五入与ACCA高端相乘,再加到ACC中(凑整)
MACD Smem, pmad, src
带延时的与程序寄存器值相乘再累加
双操作数相乘再与ACC相减
MASR Xmem, Ymem, src[,dst]
双操作数带四舍五入相乘再与ACC相减
MASA Smem [,B]
从ACCB中减去单数据存储器操作数与ACCA的乘积
MASA T, src[,dst]
从src中减去ACCA高端与T寄存器的乘积
MASAR T, src[,dst]
当AR不为0时转移
BC[D] pmad, cond[,cond[,cond]]
可以选择延时的条件转移
FB[D] extpmad
可以选择延时的远程无条件转移
FBACC[D] src
远程转移到ACC所指向的地址
(2)调用指令
CALA[D] src
可选择延时的调用ACC所指向的子程序
CALL[D] pmad
从src中减去ACCA高端与T寄存器的乘积(凑整)
SQURA Smem, src
平方后累加
SQURS Smem, src
平方后相减
(5)双操作数指令
DADD Lmem, src[,dst]
双重加法
DADST Lmem, dst
T寄存器与长立即数的双重加法和减法
DRSUB Lmem, src
长字的双16位减法
SBIT
4位数指明在指令RSBX,SSBX和XC中修改的状态寄存器位数(0≤SBIT≤15)
SHFT
4位移位数(0≤SHFT≤15)
SHIFT
5位移位数(-16≤SHIFT≤15)
Sind
使用间接寻址的单数据存储器操作数
Smem
16位单数据存储器操作数
SP
堆栈指针
src
源累加器(A或B)
ST0
状态存储器0
[附录2] TMS320C54X指令速查表
TMS320C54X指令一共有129条,按功能分为算术指令、逻辑指令、程序控制指令、存储和装入指令、单个循环指令5类。
要读懂指令系统,首先须理解其中的符号所代表的意义,见下表:
符号
意义
A
累加器A
ACC
累加器
ACCA
累加器A
ACCB
累加器B
ALU
算术逻辑单元
ARx
ADD src, [,SHIFT][,dst]
移位再相加
ADD src, ASM[,dst]
移位再相加,移动位数为ASM的值
ADDC Smem, src
带有进位位的加法
ADDM # lk, Smem
把长立即数加到存储器中
ADDS Smem, src
带符号扩展的加法
(2)减法指令
SUB Smem, src
把移位后的操作数加到ACC中
ADD Xmem, SHFT, src
把移位后的操作数加到ACC中
ADD Xmem, Ymem, dst
把两个操作数分别左移16位,然后相加
ADD # lk [,SHFT], src [,dst]
长立即数移位后加到ACC中
ADD # lk, 16, src[,dst]
把左移16位的长立即数加到ACC中
DSADT Lmem, dst
T寄存器与长操作数的双重减法
DSUB Lmem, src
相关文档
最新文档