C54x第二章 指令系统(1)
TMS320C54x的指令系统

页第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

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)

第一章绪论1.1 DSP的基本原理数字信号处理(简称DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科。
数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。
数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。
如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。
它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。
DSP可以代表数字信号处理技术(Digital SignalProcessing),也可以代表数字信号处理器(Digital Signal Processor)。
前者是理论和计算方法上的技术,后者是指实现这些技术的通用或专用可编程微处理器芯片。
数字信号处理包括两个方面的内容:1.法的研究 2.数字信号处理的实现数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
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 芯片的指令系统

分成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汇编指令详解

意义 或运算 异或运算
减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指令系统

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

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的指令系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、混合装入和存储指令。