C54x第二章 指令系统(1)

合集下载

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 是往内存存储。

TMS320C54x

TMS320C54x

TMS320C54xDSP CPU外设第一章综述1 总线结构C54x包括8条16比特宽度的总线,其中:●一条程序总线(PB)●三条数据总线(CB、DB、EB)●四条地址总线(PAB、CAB、DAB、EAB)2CPUC54x的CPU结构包括:●40比特的ALU,其输入来自16比特立即数、16比特来自数据存储器的数据、暂时存储器、T中的16比特数、数据存储器中两个16比特字、数据存储器中32比特字、累加器中40比特字。

●2个40比特的累加器,分为三个部分,保护位(39-32比特)、高位字(31-16比特)、低位字(15-0比特)。

●桶型移位器,可产生0到31比特的左移或0到16比特的右移。

●17×17比特的乘法器●40比特的加法器●比较选择和存储单元CSSU●数据地址产生器DAGEN●程序地址产生器PAGEN3外设C54x包括:●通用I/O引脚,XF和BIO●定时器●PLL时钟产生器●HPI口,8比特或16比特●同步串口●带缓存串口,BSP●多路带缓存串口,McBSP●时分复用串口,TDM●可编程等待状态产生器●可编程bank-switching模块●外部总线接口●IEEE1149.1标准JTAG口第二章 存储器一般而言,C54x 的存储空间可达192K16比特字,64K 程序空间,64K 数据空间,64KI/O 空间。

依赖其并行的工艺特性和片上RAM 双向访问的性能,在一个机器周期内,C54x 可以执行4条并行并行存储器操作:取指令,两操作数读,一操作数写。

使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。

1 存储空间分配图(以C549为例)复位后,中断矢量表位于程序区FF80H 位置,可重新定位于程序空间任何一个128字的页面(其地址高9比特即页号由PMST 中IPTR 确定)。

2 程序存储区C54x 有片内ROM 、DARAM 、SARAM ,这些区域可以通过软件配置到程序空间。

DSP原理及应用(C54X)

DSP原理及应用(C54X)

第一章绪论1.1 DSP的基本原理数字信号处理(简称DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科。

数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。

数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。

如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。

它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。

DSP可以代表数字信号处理技术(Digital SignalProcessing),也可以代表数字信号处理器(Digital Signal Processor)。

前者是理论和计算方法上的技术,后者是指实现这些技术的通用或专用可编程微处理器芯片。

数字信号处理包括两个方面的内容:1.法的研究 2.数字信号处理的实现数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。

数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。

数字信号处理在理论上的发展推动了数字信号处理应用的发展。

反过来,数字信号处理的应用又促进了数字信号处理理论的提高。

而数字信号处理的实现则是理论和应用之间的桥梁。

数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。

例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。

C54x的指令系统

C54x的指令系统

③ I/0端口(PA)寻址中;的数单据元送数入据累送加入器ARA1中寄存器
④ *(1k)寻址。
指定的数据存储单元中
资料仅供参考
第3章 TMS320C54x的指令系 统
▼ 绝对寻址
指令本身提供操作数的16位存储单元地址。即
提供一个绝对地址(0~64K)。 16位地址表示形式:
① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。
资料仅供参考
第3章 TMS320C54x的指令系 统
1.数据存储器地址寻址 用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。
MVKD EXAM1, *AR5
数据存储器的 16位地址dmad值
资料仅供参考
第3章 TMS320C54x的指令系 统
1.指令系统中使用的记号
序号
1 2 3 4 5 6 7 8 9 10 11 12 13 14
记号
黑体字符 斜体字符
[X] # (abc) xy r(n-m) <<nn || \\ // X |X| AAh


表示指令中的操作码
表示指令中的变量
表示操作数在指令中为任选项
x
直接寻址
利用数据页指针和堆栈指针寻 址
LD
@x,A
间接寻址 利用辅助寄存器作为地址指针 LD *AR1,A
存储器映像 寄存器寻址
快速寻址存储器映象寄存器
LDM ST1,B
立即数10 A 将A内容低16位存入y所在的存储 单元 将A的内容作为地址读程序存储器 ,并存入x存储单元 (DP+x的低7位地址) A

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种基本方式)
立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址

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中C54x指令系统

DSP中C54x指令系统

start: LD #100, A ;64HÆ(AL) LD #10h, 4, A ;10H<<4是100HÆ(AL) AL在内存地址是0008H LD #32768, B ; 32768是 8000HÆ(BL) BL在内存地址是000BH LD #0A000h, 16, B ;A000H<<16是A0000000HÆ(B) ; B在内存的地址是: 000BH和000CH
LD *(BUFFER),A ;将BUFFER符号所指的数据存储单元 ; 中的数传送到累加器A
需要注意的是: 1. 指令长度是2个字,包括要寻单元的地址。 2.指令有较强的针对性,RAMÆRAM,ROMÆRAM和端 口Æ RAM的操作。
ESIEE, Slide 6
三、累加器寻址
3.1 数据的寻址方式
ESIEE, Slide 1
一、立即寻址(续)
16 位长值常数 需要2 字,2周期 ARi初始化例子
3.1 数据的寻址方式
Example: STM #1234h, AR2
AR2赋值1234h.
短值 3, 5, 8, 9 位短值常数 需要1 字,1周期 为用于初始化短寄存器 或位域,如:
直接寻址 = 是相对一个基地址的随机访问。
直接寻址是在指令中,包含有数据存储器地址的
低7位(dmad)。该7位作为偏移地址值与基地址值
是数据页指针DP 9位或堆栈指针SP是16位。
数据存储器被分为: 512 pages of 128 words (512×128 = 216)。
数据页指针 DP(9位) : dmad(7位)
ESIEE, Slide 18
五、间接寻址模式 *ARi
3.1 数据的寻址方式

第2章 C54x指令系统逻辑运算指令.ppt

第2章 C54x指令系统逻辑运算指令.ppt

5
XORM #lk
,Smem
2019年10月30日
DSP原理及应用
6
第2章 TMS320C54x的指令系统
异或运算指令功能一览表
序号
指令
功能
说明
1 XOR Smem , src
src
=
srcSmem
源操作数与累加器 异或运算
2
XOR
#lk[,SHFT],src[,dst]
dst =
长立即数移位后与

39 ~ 32 31
累加器src 保护位
0① TC


0Leabharlann 2019年10月30日DSP原理及应用
10
第2章 TMS320C54x的指令系统
(4)移位操作指令
③ 带进位位循环右移
指令格式: ROR src
操作数src:累加器A或B
指令功能: 累加器src与进位位C循环右移一位。
执行过程:① C的值移入src的31位
4
第2章 TMS320C54x的指令系统
或运算指令功能一览表
序 号
指令
功能
说明
1 OR Smem , src
src = src | Smem
源操作数与累加器 或运算
2
OR
dst = src |
#lk[,SHFT],src[,dst]#lk<<SHFT
长立即数移位后与 累加器或运算
3
OR
#lk,16,src[,dst]
0
③ C

0

2019年10月30日
DSP原理及应用
9
第2章 TMS320C54x的指令系统

第2章 指令系统

第2章 指令系统
(8) LD #lk [,SHFT],dst
功能: dst = #lk<<SHFT 将长立即数lk移位后, 送入累加器A或B。
(9) LD #lk,16,dst
功能: dst = #lk<<16 将长立即数lk左移16位 后,送入累加器A或B。
8
第2章 指令系统
1.指令系统中的符号和缩略语
序号
41 42 43 44 45 46 47 48 49 50
2019/11/24
符号
n N OVA OVB OVdst OVdst_ OVsrc OVM PA PAR


XC指令后面的字数,取1或2 指定状态寄存器,N=0为ST0,N=1为ST1 ST0中的累加器A溢出标志 ST0中的累加器B溢出标志 指定目的累加器(A或B)的溢出标志 指定与Ovdst相反的目的累加器的溢出标志 指定源累加器(A或B)的溢出标志 ST1中的溢出方式位 16位立即端口地址(0PA65535) 程序存储器地址寄存器
2019/11/24
DSP原理及应用
19
第2章 指令系统
1.装载指令 即取数或赋值指令,用于将存储器内容或立即
数赋给目的寄存器,共计21条。
格式: 操作码 源操作数 [,移位数] ,目的操作数
功能: 源目操的作操数作按数DLLLLL移指LDDDDTDMRUD位定dTDA数的sPStM进寄累暂累位RLSX####行存AmmmKlkk加存加方MeeeK95页移器mmm器器器式指SSD小195位。移位A位位AAA6或针于RRR位,立立AAAB将9长MMM位 即 即中 中 中移立1TSS的数数的的的6SHH即位-IF短3111-16FT数266结616位T立位位位位64果移位5即数数数S移位TH位移数据据据SI送位移F数位T3入数位1数1数5

第2章 'C54x的指令系统

第2章 'C54x的指令系统
DSP原理及应用 DSP原理及应用
第2章 TMS320C54x的指令系统 TMS320C54x的指令系统
部分寻址缩略语
缩略语
Smem Xmem Ymem dmad pmad PA src dst 1k
2010年11月28日 2010年11月28日

16位单寻址操作数 16位单寻址操作数

16位双寻址操作数 16 位双寻址操作数 , 用于双操作数或部分单操作数指 位双寻址操作数, DB数据总线上读取 令,从DB数据总线上读取 16位双寻址操作数,用于双操作数指令, CB数据总 16位双寻址操作数,用于双操作数指令,从CB数据总 位双寻址操作数 线上读取 16位立即数:数据存储器地址( 16位立即数:数据存储器地址(0~65 535) 535) 位立即数 16位立即数:程序存储器地址( 16位立即数:程序存储器地址(0~65 535) 535) 位立即数 16位立即数:I/O口地址 16位立即数:I/O口地址(0~65 535) 口地址( 535) 位立即数 源累加器(A或B) 源累加器( 目的累加器( 目的累加器(A或B) 16位长立即数 16位长立即数
主要用于初始化 利用16位地址寻址存储单 利用16位地址寻址存储单 元 将累加器中的内容作为地 址 利用数据页指针和堆栈指 针寻址 利用辅助寄存器作为地址 指针 快速寻址存储器映象寄存 器 压入/ 压入/弹出数据存储器和 存储器映像寄存器MMR 存储器映像寄存器MMR
LD #10,A #10, STL A,*(y) A, READA x LD @x,A @x, LD *AR1,A *AR1, LDM ST1,B ST1, PSHM AG
程序存储器 立即数的数值形式: 立即数的数值形式: 短立即数。 单字指令; ① 短立即数。3、5、8、9位,单字指令; 操作码 长立即数。16位 双字指令。 ② 长立即数。16位,双字指令。

附录 TMS320C54X汇编语言指令系统

附录 TMS320C54X汇编语言指令系统

指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。

按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。

下面分别对各类指令进行介绍。

Ⅰ、算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。

1.加法指令加法指令共有13条,如表1.1.1所示。

表1.1.1 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。

例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。

小数符号和上面整数的表示一样,但必须注意如何安排小数点的位置。

2.减法指令减法指令共有13条,见表1.1.2所示。

表1.1.2 减法指令3.乘法指令乘法指令共有10条,见表1.1.3。

表1.1.3乘法指令续表4.乘加和乘减指令乘加和乘减指令共有22条,见表1.1.4所示。

表1.1.4 乘加和乘减指令续表5.双操作数指令双操作数指令共有6条,见表1.1.5所示。

表1.1.5双操作数指令续表6.特殊应用指令特殊应用指令共有15条,见表1.1.6所示。

表1.1.6 特殊应用指令续表Ⅱ、逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。

1.与指令与指令共5条,见表2.2.1。

表2.2.1与指令2.或指令或指令共5条,见表2.2.2。

表2.2.2 或指令3.异或指令异或指令共5条,见表2.2.3。

表2.2.3 异或指令4.移位指令移位指令共6条,见表2.2.4。

第04.2章 C54xDSP指令系统

第04.2章 C54xDSP指令系统

双精度指令
表4-3-6 双精度(32位操作数)指令
共6条:DADD、DADST、DRSUB、DSADT、DSUB、DSUBT
专用指令
表4-3-7 专用指令
共15条:ABDST、ABS、CMPL、DELAY、EXP、 MAX、 MIN、POLY、SAT、RND、 SQDST、 FIRS 、 LMS 、 NEG 、 NORM
中读入一个数并传送到由Smem所指定的数据存储单元中。 WRITA Smem是将Smem所指定的数据存储单元中的一个数, 传送到由累加器A所指定的程序存储单元中。

4.直接寻址
利用数据指针和堆栈指针寻址,其特点是数据存储器地址由 高9位的基地址(数据页指针DP或堆栈指针SP)和低7位的偏 移地址共同构成,共16位。
DP由LD指令加载,用RESET进行初始化。 直接寻址的指令书写格式为在变量前加一个@,或者用一个 dmad来设定偏移地址。例如:
LD #3,DP
LD @x,A LD #4,DP ADD @y,A
;设置当前页面为3
;将x值加载到累加器A ;设置当前页面为4,y所在的页面 ;将y值加到累加器A
CPL=1: 16-bit SP基地址加上dmad形成16-bit数据存储器地 址。 以SP为基准的直接寻址
表4-3-4 乘法指令
共4条:MPY[R]、MPYA、MPYU、SQUR
乘加和乘减指令
表4-3-5 乘加和乘减指令
乘加和乘减指令
表4-3-5 乘加和乘减指令(续)
共9条: 乘-加:MAC[R]、MACA[R]、MACD、MACP、MACSU、 SQURA 乘-减:MAS[R]、MASA[R]、SQURS
共6条:ROL、ROLTC、ROR、SFTA、SFTC、SFTL

附录 TMS320C54X汇编语言指令系统

附录 TMS320C54X汇编语言指令系统

指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。

按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。

下面分别对各类指令进行介绍。

Ⅰ、算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。

1.加法指令加法指令共有13条,如表1.1.1所示。

表1.1.1 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。

例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。

小数符号和上面整数的表示一样,但必须注意如何安排小数点的位置。

2.减法指令减法指令共有13条,见表1.1.2所示。

表1.1.2 减法指令3.乘法指令乘法指令共有10条,见表1.1.3。

表1.1.3乘法指令续表4.乘加和乘减指令乘加和乘减指令共有22条,见表1.1.4所示。

表1.1.4 乘加和乘减指令续表5.双操作数指令双操作数指令共有6条,见表1.1.5所示。

表1.1.5双操作数指令续表6.特殊应用指令特殊应用指令共有15条,见表1.1.6所示。

表1.1.6 特殊应用指令续表Ⅱ、逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。

1.与指令与指令共5条,见表2.2.1。

表2.2.1与指令2.或指令或指令共5条,见表2.2.2。

表2.2.2 或指令3.异或指令异或指令共5条,见表2.2.3。

表2.2.3 异或指令4.移位指令移位指令共6条,见表2.2.4。

DSP-5C54x指令系统1

DSP-5C54x指令系统1
addr=lk
说明
访问后,ARx中的地址以循环寻址的方式 减1 访问后,从ARx中以循环寻址的方式减去 AR0
访问后,ARx中的地址以循环寻址的方式 加1
访 问 后 , 把 AR0 以 循 环 寻 址 的 方 式 加 到 ARx中
ARx和16位的长偏移(lk)的和用来作为数据存 储器地址。ARx本身不被修改 在寻址前,把一个带符号的16位的长偏移(lk) 加到ARx中,然后用新的ARx的值作为数据存储 器的地址 在寻址前,把一个带符号的16位的长偏移以循 环寻址的方式加到ARx中,然后再用新的ARx的 值作为数据存储器的地址 一个无符号的16位的长偏移(lk)用来作为数 据存储器的绝对地址。(也属绝对寻址)
DP
032
执行后 00 0000 0257
032
Program Memory 0257H
0306
4339
Data Memory 1906H
4339
4339
15
5.2 数据寻址方式
(5)存储器映像寄存器寻址
特点: 0页寻址。不影响当前DP或SP值,用于直接寻址和间接寻址。 C54x共有8条指令可以进行MMR寻址。
4
5.2 数据寻址方式
(1)立即数寻址
• 指令中包含有执行指令所需要的操作数。
• 立即数分为3、5、8或9位的短立即数和16位的长立即数两种。
• 短立即数可包含在单字或双字指令中,长立即数在双字指令中。
注意
在操作数前面需要加#字号来说明该操作数为立即数。否则会把该
操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。
;累加器低位存入MMR
STM #lk,MMR
;长立即数lk存入MMR

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

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 累加器高阶位移位后存入存储单元

第2章 C54x指令系统(控制转移类指令)

第2章 C54x指令系统(控制转移类指令)

2011年 29日 2011年5月29日
DSP原理及应用 DSP原理及应用
3
第2章 TMS320C54x的指令系统 TMS320C54x的指令系统
① B[D]

若指令带后缀D 则为延迟方式, 意: 若指令带后缀D,则为延迟方式,紧随 该指令的两条单字指令或一条双字指令 先被取出执行,然后程序再转移。 先被取出执行,然后程序再转移。 该指令不能被循环执行。 该指令不能被循环执行。
第2章 TMS320C54x的指令系统 TMS320C54x的指令系统
① B[D] 指令格式: 指令格式: B[D] pmad 操 作 数: pmad——立即数表示的程序存储器 立即数表示的程序存储器 地址。取值: 65 地址。取值:0~65 535 指令功能: 指令功能: pmad →PC 功能说明: pmad指定的程序存储器地址赋给PC, 指定的程序存储器地址赋给PC 功能说明: 将pmad指定的程序存储器地址赋给PC, 实现分支转移。 实现分支转移。
2011年 29日 2011年5月29日
DSP原理及应用 DSP原理及应用
4
第2章 TMS320C54x的指令系统 TMS320C54x的指令系统
② BACC[D] 指令格式: 指令格式: BACC[D] src
累加器A或 操 作 数: src——累加器 或B 累加器 指令功能: src(15~0) →PC 指令功能: 功能说明: 位所确定的地址赋给PC 功能说明: 由src低16位所确定的地址赋给PC。 低16位所确定的地址赋给PC。
将src的低16位赋给PC,实现子程 src的低 位赋给 , 的低16位赋给PC 序调用
将pmad的值赋给PC,实现子程序 pmad的值赋给 , 的值赋给PC 调用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章指令系统
本章要求:
1、要求看到陌生指令能够通过查指令表,既通过助记符及操作数来找到该指令原型,根据指令说明读懂该指令。

2、根据指令表中的指令原型,通过阅读指令说明,能够选择合适的寻址方式,使用该指令。

举例说明:ADD *ar2,A; 查找指令原形,P313
ADD *ar3+,16,A,B ;查找指令原形P313
STL A , @x ; 查找指令原形P326
MPY Smem,dst;P337读懂表达式,使用MPY *ar2,A MPY Xmem,Ymem,dst ;P338读懂含义,
使用MPY*ar2+,*ar3+,A; A=(*ar2)*(*ar3)
ST #lk,Smem ;P341,读懂指令含义,使用ST #1000h,@a 指令系统中使用的符号及缩略语,详细表格见教材P130
第二章指令系统
以下为一些常用指令,希望大家对各指令有所了解。

TMS320C54x的指令集有近两百条指令,按功能分为如下几类:
•算术运算指令
•逻辑运算指令
•程序控制指令
•装入和存储指令
一、算术运算指令
算术运算指令可分为如下几类:
•加法指令
•减法指令
•乘法指令
•乘加指令
•乘减指令
•双数/双精度指令
•特殊操作指令
1、加法指令
定点DSP中数据表示方法
•当它表示一个整数时,其最低位(D0)表示1,D1位表示2的1次方,次高位(D14)表示2的14方。

•如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。

例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。

•当需要表示小数时,小数点的位置始终在最高为后,而最高位(D15)表示符号位。

这样次高位(D14)表示0.5,然后是0.25,最低位(D0)表示。

所以04000H 表示小数0.5,01000H表示小数0.25,而0001H表示16位定点DSP表示的最小的小数(有符号)
0.000030517578125。

实现16位定点加法
•‘C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。

其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。

使用ADD完成加法ld@temp1,a;将变量temp1装入寄存器A
add@temp2,a;将变量temp2与寄存器A相加
;结果放入A中
stl a,@temp3;将结果(低16位)存入变量
;temp3中。

注意,这里完成计算temp3=temp1+temp2,我们没有特意考虑temp1和temp2是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。

利用ADDS实现32位数据装入
ld #0,dp ; 设置数据页指针
ld @60h,16,a; 将60H的内容装如A的高16位adds @61h,a; 将61H的内容加到A的低16位dld @60h,b; 直接装入32位到B寄存器,
;等同于前两条语句
ADD中寻址方式
•ADD Smem [,SHIFT],src [,dst] 例如:•ADD *AR0,1,A,A
•ADD @60H,-1,A,A
•ADD *AR5,1,A,B •ADD Xmem, SHFT, src 例如:•ADD *AR5,1,A
•ADD Xmem,Ymem, dst 例如:•ADD *AR2,*AR3,A
2、减法指令
实现16位定点减法
•‘C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。

其中SUBS 用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。

SUB指令与ADD 指令一样,有许多的寻址方式。

减法指令使用举例
.bss a,1;定义变量a
.bss b,1;定义变量b
stm#a,ar2;将变量a的地址装入ar2寄存器
stm#b,ar3;将变量b的地址装入ar3寄存器
sub*ar2+,*ar3,b;将变量a左移16位同时变量
;b也左移16位,然后相减,结
;果放入累加器B(高16位)中,寻
;址后ar2加1。

sth b,@63h;将相减的结果(高16位)存入变量63h
利用SUBC实现除法
•在‘C54X中没有提供专门的除法指令,一般有两种方法来完成除法。

一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。

这种方法对于除以常数特别适用。

另一种方法是使用SUBC指令,重复16次减法完成除法运算。

利用SUBC完成Temp1/Temp2 temp1.word100;定义常量temp1
temp2.word30;
.bss temp3,1;定义常量temp3
.bss temp4,1
ld@temp1,B;将被除数temp1装入B寄存
;器的低16位
rpt#15;重复SUBC指令16次
subc@temp2,b;使用SUBC指令完成除法
stl B,@temp3;将商(B寄存器的低16位)
;存入变量temp3
sth B,@temp4;将余数(B寄存器的高16位)
;存入变量temp4
实现小数除法
•在‘C54X中实现16位的小数除法与前面的整
数除法基本一致,也是使用SUBC指令来完成。

但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。

在执行SUBC指令前,应将被除数装入A
或B寄存器的高16位,而不是低16位。

其结果的格式与整数除法一样。

第二,应考虑符号位对结果小数点的影响。

所以应对商右移一位,得到正确的有符号数。

3、乘法指令
实现16定点整数乘法
•在‘C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。

乘数在‘C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。

如果是无符号数乘时,请使用MPYU指令。

这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。

整数乘法举例
rsbx FRCT;清FRCT标志,准备整数乘ld temp1,T;将变量temp1装入T寄存器mpy temp2,a;完成temp2*temp1,结果放
;入累加器A(32位)
实现小数乘法
•在‘C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。

‘C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移1位。

两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。

小数乘法举例
ssbx FRCT;FRCT=1,准备小数乘法
ld temp1,16,a;将变量temp1装入寄存器A的高16位mpya temp2;完成temp2乘寄存器A的高16位,结;果在B中,同时将temp2装入T寄存器
sth b,temp3;将乘积结果的高16位存入变量temp3如:0.1(0x0ccd) x 0.7(0x599a) =
0.06997680664063(0x08f5)
注:可以使用MPYR完成四舍五入。

比较如下结果mpyr temp1,b ; T * temp1 --> b
4、乘加和乘减指令
5、双精度/
双数操作指令
6、特殊指令
二、逻辑运算指令
逻辑指令包括与、或、异或、移位和测试指令1、与指令(AND)
2、或、异或指令
3、移位和测试指令
三、程序控制指令
程序控制指令包括:分支指令
调用指令
中断指令
返回指令
重复指令
堆栈操作指令
混合程序控制指令
1、分支指令
2、调用与中断指令
3、返回指令
4、重复指令和堆栈操作指令
5、混合程序控制指令
四、装入和存储指令装入和存储指令包括:
一般的装入和存储指令
条件存储指令
并行装入和存储指令
并行装入和乘法指令
并行存储和加件乘指令
混合装入和存储指令
1、一般的装入指令
2、存贮指令
3 并行装入和存储指令
4、条件存储指令
5、并行存储和加、减、乘法指令
6、并行装入和乘法指令
7、混合装入和存储指令。

相关文档
最新文档