第3章TMS320C54x的指令系统_第1页
第3章TMS320C54x的指令系统_第2页
第3章TMS320C54x的指令系统_第3页
第3章TMS320C54x的指令系统_第4页
第3章TMS320C54x的指令系统_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章TMS320C54x的指令系统 知识要点: 本章涉及的内容包括TMS320C54x指令系统寻址方式的分类和功能,指令系统中的常用符号、缩略语和运算符,数据传送、算术运算、逻辑运算、程序控制、并行操作和重复操作指令。3.1 寻址方式 指令的寻址方式是指硬件寻找指令指定的参与运算的操作数的方法。 TMS320C54x有7种基本的数据寻址方式:立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映像寄存器寻址和堆栈寻址。 表3.1.1列出了寻址方式中用到的一些缩略语名称及其含义。 缩写符号含义Smem16位单数据存储器操作数Xmem在双操作数指令及某些单操作数指令中所用的16位双数据存储

2、器操作数,从DB总线上读出Ymem在双操作数指令中所用的16位双数据存储器操作数,从CB总线上读出;在读同时并行写的指令中表示写操作数dmad16位立即数数据存储器地址(065535)pmad16位立即数程序存储器地址(065535)PA16位立即数I/O口地址(065535)src源累加器(A或B)dst目的累加器(A或B)lk16位长立即数表3.1.1部分寻址缩略语3.1.1 立即寻址 立即寻址主要用于初始化,其特点是指令中包含有一个固定的立即数,因此没有寻找数据地址的过程。 在一条指令中的立即数有短立即数和长立即数两类。 立即数的长度由使用的指令类型决定。 表3.1.2列出了可以包含立即

3、数的指令,并指出了立即数的位数。 3位或5位立即数 8位立即数 9位立即数 16位立即数 LD FRAME LD RPT LDADD ADDM AND ANDM BITF CMPMLD MAC OR ORMRPT RPTZ ST STM SUB XOR XORM表3.1.2 支持立即寻址的指令 在立即寻址方式指令中,应在数值或符号前面加一个“#”,表示一个立即数,以区别于地址。例如,将一个十六进制数80H,装入累加器A的指令为: LD#80H,A3.1.2 绝对寻址 绝对寻址利用16位地址寻址存储单元,其特点是指令中包含一个固定地址。 绝对寻址有以下四种类型: 数据存储器地址(dmad)寻址

4、该寻址类型用于确定操作数存于数据存储单元的地址。 语法是使用一个程序标号或一个数字来指定数据空间的一个地址。 例如,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器指向的数据存储单元中去,即 MVKDEXAM1,*AR5 其中EXAM1是16位地址dmad值。 程序存储器地址(pmad)寻址 该寻址类型用于确定程序存储器中的一个地址。 语法是使用一个符号或具体的数字来指定程序空间的一个地址。 例如,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中,即 MVPDTABLE,*AR2 其中TABLE是16位地址pmad值。 端口(PA)寻址 该寻址类型是用一个

5、符号或一个数字来确定外部I/O端口的地址。 例如,把一个数从端口位FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中,即 PORTRFIFO,*AR5 其中FIFO是I/O端口地址PA。 *(1K)寻址 该寻址类型是使用一个指定数据空间的地址来确定数据存储器中的一个地址。 例如,把地址为PN的数据单元中的数据装到累加器A中,即 LD*(PN),A3.1.3 累加器寻址 累加器寻址是将累加器的内容作为地址去访问程序存储器单元,即将累加器中的数作为地址,用来对存放数据的程序存储器寻址。有两条指令可以采用累加器寻址。 READ ASmem WRIT ASmem3.1.4 直接寻址 直接寻址是

6、利用数据指针和堆栈指针寻址,其特点是数据存储器地址由基地址和偏移地址共同构成,共16位。 基地址位于数据存储器地址的高9位,偏移地址位于数据存储器地址(dmad)的低7位。 下面分别给出了直接寻址的指令代码格式以及各位说明。 操作码 I=0 数据存储器地址 158 7 60 位 名称 功能158 操作码 这8位包含了指令的操作码 7 I I=0,表示指令使用的寻址方式位直接寻址60 数据存储器地址 这7位包含了指令的数据存储器地址偏移 表3.1.3 直接寻址的各位说明图3.1.1 直接寻址的指令代码格式 DP和SP都可以与dmad偏移结合产生实际的地址。 位于状态寄存器ST1的CPL位可以选择

7、采用哪种方式生成实际的地址。当CPL=0,以数据页指针寄存器DP中的9位高位,以指令中的7位为低位,共同构成16位数据存储单元的地址,如下图: 9位数据页指针DP值 7位IR值 157 60图3.1.2 CPL=0时, 16位数据存储单元的地址 当CPL=1时,将堆栈指针SP的16位地址与指令中的7位地址相加,形成16位的数据存储器地址,如图: 16位堆栈指针SP 150 0 0 0 0 0 0 0 0 0 7位IR值 157 60 有效存储地址图3.1.3 CPL=1时, 16位数据存储单元的地址3.1.5 间接寻址 间接寻址是利用辅助寄存器内容作为地址指针访问存储器。 TMS320C54x

8、有8个16位辅助寄存器(AR0AR7)。每一个寄存器都可以用来寻址64K数据存储空间中任何一个单元。算数运算单元(ARAU0、ARAU1)根据辅助寄存器的内容进行操作,完成16位无符号算术运算。 间接寻址的灵活性体现在:不仅能从存储器中读或写一个单16位的数据操作数,而且能在一条指令中访问两个数据存储单元。 单操作数寻址 下图列出了单操作数间接寻址指令的格式: 表3.1.4列出了单操作数间接寻址指令的各位说明 158 7 63 20图3.1.4单操作数间接寻址指令的格式 操作码 I=1 MOD ARF 表3.15列出了16种单操作数间接寻址的功能及其说明。位名称功能158 操作码8位域包含了指

9、令操作码7II=1,表示间接寻址方式63MOD定义寻址方式的类型20ARF定义了寻址所使用的辅助寄存器,CMPT=0时,则ARF=0确定辅助寄存器,这种方式下,ARP一直为0。 CMPT=1时,若ARF=0,用ARP选择辅助寄存器,否则用ARF确定,当访问完成后,把ARF的值装入ARP。表3.1.4 单操作数间接寻址指令的各位说明表3.1.5 单数据存储器操作数间接寻址类型 上表中还有两种特殊的间接寻址方式:循环寻址方式上表中还有两种特殊的间接寻址方式:循环寻址方式和位倒序寻址方式。和位倒序寻址方式。 循环寻址循环寻址 在信号处理常用的卷积、相关、在信号处理常用的卷积、相关、FIR滤波算法中,

10、都需滤波算法中,都需要在存储器中实现一个循环缓冲区,它是一个包含最新数要在存储器中实现一个循环缓冲区,它是一个包含最新数据的滑动窗口。据的滑动窗口。 在寻址计算过程中,新进来的数据会覆盖较早的数据。在寻址计算过程中,新进来的数据会覆盖较早的数据。 循环寻址是实现循环缓冲区的关键。循环寻址是实现循环缓冲区的关键。 寄存器用于确定寄存器用于确定循环缓冲区的大小。长度为的循环缓冲区的大小。长度为的循环缓冲区必须从一个位(是满足的次方条循环缓冲区必须从一个位(是满足的次方条件的最小整数)边界开始。件的最小整数)边界开始。 例如:例如:长度长度R=32循环缓冲区必须从低循环缓冲区必须从低6位为位为0的地

11、址的地址xxxx xxxx xxx00 0000(N=6, 2632)开始,同时用以下指令将)开始,同时用以下指令将R值加载到值加载到BK中:中: STM#32 BK 循环寻址时,要指定一个循环寻址时,要指定一个ARx指向循环缓冲区的指向循环缓冲区的一个单元。该一个单元。该ARx的低的低N位置位置0后所得到的值为循后所得到的值为循环缓冲区的环缓冲区的有效基地址有效基地址。用。用BK的低的低N位代替位代替ARx的低的低N位所得到的值为位所得到的值为循环缓冲区的尾地址循环缓冲区的尾地址。 ARx的低的低N位就是循环缓冲区的位就是循环缓冲区的index,step就是就是加到加到ARx或从或从ARx中

12、减去的值。循环寻址算法如中减去的值。循环寻址算法如下:下: If 0index+stepBK; index=index+step Else if index+step BK; index=index+step-BK Else if index+step0; index=index+step+BK 实际上是以BK寄存器中的值为模的取模运算。 位倒序寻址 位倒序寻址可以提高FFT等算法效率。 例如16点FFT的位倒序寻址如表3.1.6所示。 C54x提供的位倒序寻址功能,提高了在FFT算法中使用存储器的效率及其执行速度。 设FFT长度N=16,则AR0赋值为8,AR2表示在存储区中数据的基地址(0

13、110 0000),位倒序读入数据:*AR2+0B;AR2=0110 0000 (第0个值) *AR2+0B; AR2=0110 1000 (第1个值) *AR2+0B; AR2=0110 0100 (第2个值) *AR2+0B; AR2=0110 1100 (第3个值) *AR2+0B; AR2=0110 0010 (第4个值) *AR2+0B; AR2=0110 1010 (第5个值) *AR2+0B; AR2=0110 0110 (第6个值) *AR2+0B; AR2=0110 1110 (第7个值)表3.1.6 位倒序寻址返回本节 双操作数寻址 双操作数寻址用于完成执行2次读操作或者1

14、次读和1次并行存储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。 两个数据存储器操作数由Xmem和Ymem 表示,Xmem是读操作数,Ymem是在读两个操作数时表示读操作数,在1次读同时并行1次写的指令中表示写操作。 下图列出了双操作数寻址的指令代码格式: 操作码 Xmod Xar Ymod Yar 158 7 6 5 4 3 2 1 0 位位 名称名称 功能功能158 操作码操作码 8位代码包含了指令的操作码位代码包含了指令的操作码76 Xmod 定义了用于寻址定义了用于寻址Xmem操作数的间接寻址方式的类型操作数的间接寻址方式的类型54 Xar 2位代码确定了存储位代码确

15、定了存储Xmem地址的辅助寄存器地址的辅助寄存器32 Ymod 定义了用于寻址定义了用于寻址Ymem操作数的间接寻址方式类型操作数的间接寻址方式类型10 Yar 2位代码确定存储位代码确定存储Ymem地址的辅助寄存器地址的辅助寄存器表3.1.7 双操作数的各位说明:图3.1.5双操作数寻址的指令代码格式 由于只有2位可以用于选择辅助寄存器,所以根据Xar或Yar的值可以选择4个寄存器。 下表列出了Xar或Yar同辅助寄存器的对应关系: Xar或Yar值 辅助寄存器 00 AR2 01 AR3 10 AR4 11 AR5表3.1.8 Xar或Yar同辅助寄存器的对应关系 下表列出了双操作数间接寻

16、址的类型: 操作码语法 功能 说明 *ARx 地址= ARx ARx中的内容是数据存储地址 *ARx- 地址= ARx 寻址后,ARx的地址减1 ARx=ARx-1 *ARx+ 地址=ARX 寻址后,ARx的地址加1 Arx=ARx+1 *ARx+0% ARx=Circ(ARx+AR0) 寻址后,AR0以寻址方式加到ARx中 地址=ARx表3.1.9 双操作数间接寻址的类型3.1.6 存储器映像寄存器寻址 存储器映像寄存器(MMR)寻址用于修改存储器映像寄存器的值,而不影响当前数据页指针(DP)或堆栈指针(SP)的值。由于DP和SP的值不需要修改,所以写寄存器操作的开销最小。 存储器映像寄存器

17、寻址可以工作在直接和间接寻址方式下。有以下两种产生MMR地址的方法。 直接寻址。 在直接寻址方式中,不管当前DP或SP的值如何,强制数据存储器地址的高9位为0。 利用指令中数据存储器地址的低7位访问MMR,相当于基地址为0的直接寻址方式。 间接寻址。 在间接寻址方式中,使用当前辅助寄存器的低7位作为地址访问MMR。指令执行后,辅助寄存器中的高9位清为0。3.1.7 堆栈寻址 系统堆栈用于在发生中断或子程序调用时自动存放程序计数器(PC)中的值。堆栈也能用来保护现场或传送参数。 C54x的堆栈是从高地址向低地址方向填入。处理器使用一个16位堆栈指针(SP)来对堆栈进行管理,SP始终指向存放在堆栈

18、中的最后一个元素。 有四条指令使用堆栈寻址方式: PSHD,将数据存储器中的一个数压入堆栈。 PSHM,将一个存储器映像寄存器(MMR) 中的值压入堆栈。 POPD,从堆栈弹出一个数到数据存储单元。 POPM,从堆栈弹出一个数到存储器映像寄存器(MMR)。 执行压入操作时,是先减小SP后再将数据压入堆栈的;而执行堆栈弹出操作时,则先从堆栈弹出数据,然后再增加SP 的值。3.2 TMS320C54x指令的表示方法 TMS320C54x的助记符指令时由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。3.2.1 指令系统中的符号 表3.2.1是指令系统中的符号和缩略语。 表

19、3.2.1 指令系统中的符号和缩略语3.2.2 指令系统中的运算符 表3.2.2列出了表达式中可用的运算符号及运算的优先级。 符号+ - !取正、取负、按位求补、逻辑负从右到左* / %乘法、除法、求模从左到右+ -加法、减法从左到右指数从左到右左移、右移从左到右 大于、大于或等于从左到右 !=不等于从左到右=等于从左到右&按位与运算从左到右按位异或运算从左到右按位或运算从左到右3.3 TMS320C54x的指令系统 TMS320C54x的指令系统共有129条基本命令,由于操作数的寻址方式不同,由它们可以派生出205条指令。 按指令的功能分类,可以分成数据传送指令、算术运算指令、逻辑运算指令、

20、程序控制指令、并行操作指令和重复操作指令。3.3.1 数据传送指令 数据传送指令是从存储器中将源操作数传送到目的操作数所指定的存储器中。 C54x的数据传送指令包括装载指令、存储指令、混合指令和存储指令。 装载指令共21条,用于立即数或存储器内容赋给目的寄存器。 表3.3.1列出了这些指令的语法表示、运行结果以及相关注释。 表3.3.1 装载指令 存储指令共18条,用于将源操作数或立即数存入指定存储器或寄存器。 表3.3.2列出了存储指令的语法表示、运行结果及注释。 表3.3.2 存储指令 混合装载和存储指令共12条,它的语法表示、运行结果及注释如表3.3.3。表3.3.3 混合装载和存储指令

21、3.3.2 算术运算指令 TMS320C54x的算术指令具有运算功能强、指令丰富等特点,它包括加法指令、减法指令、乘法指令、乘法-累加指令、乘法-减法指令、双字运算指令及特殊应用指令。 加法指令 加法指令共13条,如表3.3.4。 减法指令 减法指令共13条,如表3.3.5 表3.3.5 减法指令 乘法指令 乘法指令共10条,如表3.3.6。表3.3.6 乘法指令 乘法-累加指令和乘法-减法指令 乘法-累加指令和乘法-减法指令,共22条。 如表3.3.7所示。 表3.3.7乘法-累加指令和乘法-减法指令 双字算术运算指令 双字算术运算指令共6条,如表3.3.8。 表3.3.8双字算术运算指令

22、特殊运算指令 特殊运算指令共15条,如表3.3.9 表3.3.9 特殊运算指令3.3.3 逻辑运算指令 TMS320C54x的逻辑运算指令包括与指令、或指令、异或指令、移位指令及测试指令。 与指令,共5条,如表3.3.10。 表3.3.10 与指令 或指令,共5条,如表3.3.11。 表3.3.11 或指令 异或指令,共5条,如表3.3.12。表3.3.12 异或指令移位指令共6条,如表3.3.13表3.3.13移位指令测试指令共5条,如表3.3.14表3.3.14 测试指令3.3.4 程序控制指令 TMS320C54x的程序控制指令包括分支转移指令、子程序调用指令、中断指令、返回指令、堆栈操

23、作指令及其他程序控制指令,分别叙述如下。 分支转移指令共6条,如表3.3.15: 表3.3.15 分支转移指令 子程序调用指令共5条,如表3.3.16:表3.3.16 子程序调用指令 中断指令共2条,如表3.3.17表3.3.17 中断指令 返回指令共6条,如表3.3.18表3.3.18返回指令堆栈操作指令共5条,如表3.3.19表3.3.19 堆栈操作指令其他程序控制指令共7条,如表3.3.20表3.3.20 其他程序控制指令3.3.5 并行操作 TMS320C54x有一些指令可以充分发挥流水线及硬件乘法器等并行操作的优势。这种指令的数据传送和存储与各种运输同时进行,可充分利用C54x的流水线特性,提高了代码和时间效率。 但使用这类指令应注意前后指令可能引起的流水线冲突问题。 并行操作指令可分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论