第3章C54x的指令系统.ppt
《第3章C54x的指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章C54x的指令系统.ppt(156页珍藏版)》请在三一文库上搜索。
1、第3章 TMS320C54x的指令系统,内容提要 C54x的指令系统包含助记符指令和代数指令两种形式。 助记符指令:是一种采用助记符号表示的类似于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于高级语言的代数形式指令,具有接近汇编语言的特点。 两种指令具有相同的功能。本章着重介绍助记符指令的分类及基本功能。其内容有: 寻址方式 TMS320C54x的指令表示方法 TMS320C54x的指令系统,第3章 TMS320C54x的指令系统,3.1 寻址方式 3.2 TMS320C54x的指令表示方法 3.3 TMS320C54x的指令系统,第3章 TMS320C54x的指令系统,3.1 寻
2、址方式,当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法寻址方式。,第3章 TMS320C54x的指令系统,3.1 寻址方式,C54x有7种基本的数据寻址方式:,立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址,:由指令提供一个操作数 :由指令提供一个操作数地址 :以累加器的内容为地址访问程序空间某单元 :寻址地址为DP或SP的值加上指令提供的偏移量 :利用辅助寄存器访问存储器 :用来改变映像寄存器,但不影响DP或SP的值 :用来管理系统堆栈中的操作,第3章 TMS320C54x的指令系统,部分寻址缩略语,第3章 TMS320C54x的指令系统,3.
3、1.1 立即寻址,指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。,例如: LD #0F180H,A ;将立即数F180H加载到A,立即数的数值形式: 短立即数。3、5、8、9位,单字指令; 长立即数。16位,双字指令。,特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。,用途:用于表示常数或对寄存器初始化。,第3章 TMS320C54x的指令系统,3.1.2 绝对寻址,指令中含有所要寻找的操作数的16位存储单元地址。,16位地址表示形式: 地址标号,如:TABLE; 16位符号常量,如:89AB、1234。,例如:,MVKD TABL
4、E,*AR1 ;将数据存储器TABLE为地址 的单元数据送入AR1寄存器 指定的数据存储单元中,LD *(DATA),A ;将DATA指定的数据存储单元 中的数据送入累加器A中,特点:指令中包含一个固定的16位地址,能寻 址所有数据存储空间,但运行速度慢, 需要较大的存储空间。,用途:用于对速度要求较低的场合。,第3章 TMS320C54x的指令系统,3.1.2 绝对寻址,绝对寻址是利用16位地址来寻址操作数的存储单元。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少应为2个字长。,绝对寻址有四种类型 : 数据存储器地址(dmad)寻址; 程序存储器地址(pmad)寻址; 端口(PA
5、)寻址; *(1k)寻址。,第3章 TMS320C54x的指令系统,1.数据存储器地址寻址,用于确定操作数存于数据存储单元的地址。,例如,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器所指向的数据存储单元中。 MVKD EXAM1, * AR5,语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。,数据存储器的 16位地址dmad值,第3章 TMS320C54x的指令系统,2.程序存储器地址寻址,用于确定程序存储器中的一个地址。,例如,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中。 MVPD TABLE, * AR2,语法:使用一个符号或具体
6、的数字来指定程序 空间的一个地址。,程序存储器的 16位地址pmad值,第3章 TMS320C54x的指令系统,3.端口(PA)寻址,用一个符号或一个数字来确定外部I/O端口的地址。,例如,把一个数从端口为FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中。 PORTR FIFO, * AR5,I/O端口地址PA,第3章 TMS320C54x的指令系统,4. *(1k)寻址,使用一个指定数据空间的地址来确定数据存储器中的一个地址。,例如,把地址为PN的数据单元中的数据装到累加器A中。 LD *(PN), A,语法:允许所有使用单数据存储器(Smem)寻址 的指令去访问数据空间的任意单元
7、,而 不改变DP的值,也不用对ARX进行初始化。,这种寻址可用于支持单数据存储器操作数的指令。,注意:*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。,第3章 TMS320C54x的指令系统,3.1.3 累加器寻址,将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。,例如: READA Smem ;将A中的数据作为地址寻址程序 存储器中的数据,并将数据送 入Smem指定的数据存储单元。,WRITA Smem ;将Smem指定的数据存储单元中的 数据,写入A所指定的程序存储 单元。,用途:用于完成程序存储空间与数据存储空间之间的
8、数据传输。,注意:, 大多数C54x用A的低16位作为程序存储器的地址,而C548和C549是以A的低23位作为程序存储器地址,C5402是以A的低20位作为程序存储器地址;, 上述两条指令重复使用时,累加器A自动增减;, 只能使用累加器A寻址程序空间。, 累加器A用来寻址程序空间。Smem用来寻址数据空间。,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,利用数据指针DP和堆栈指针SP寻址。,指令格式:,特点: 指令中只含有数据存储器的低7位地 址(偏移地址dmad);, 16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址 (dmad)共同构成。,第3章
9、TMS320C54x的指令系统,3.1.4 直接寻址,所要寻址的数据存储器16位地址是由基地址和偏移地址构成。,基地址:, 数据页指针DP(9位); 堆栈指针SP。,当CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;,当CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据 存储器地址,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=1时,,高9位,低7位,16位数据 存储器地址,SP+dmad,第3章 TMS320C54x的指令系统,3.1.4 直
10、接寻址,DP地址的范围是从0511(29-1),将存储器分成512页。,以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。,7位dmad范围是从0127,每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址标识: 变量前加,如x; 在偏移量前加,如5。,利用直接寻址可以在不改变DP或SP的情况下,随机寻址128个存储单元中的任何一个单元。,直接寻址的优点:每条指令只需要一个字。,
11、第3章 TMS320C54x的指令系统,3.1.4 直接寻址,例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。,RSBX CPL,LD #3,DP,LD x,A,ADD y,A,;CPL复位 ;立即数3赋给DP ;x单元的数据送入A ;完成x和y单元的数 据相加,LD #3,DP,LD #3,DP,0 0000 0011,LD x,A,LD x,A,111 1111,0 0000 0011,111 1111,01FF,1000,00 0000 1000,01FF,1000,ADD y,A,000 0000,0 0000 0011,000 0000,0
12、180,0001,0001,+,1001,0180,0001,1001,00 0000,ADD y,A,ADD y,A,LD #4,DP,LD #4,DP,RSBX CPL,LD #3,DP,0 0000 0011,LD x,A,111 1111,00 0000 1000,LD #4,DP,0 0000 0100,ADD y,A,000 0000,+,0,0,5,1,00 0000,00 0000 1500,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。,SSBX CPL,LD 1,A,
13、ADD 2,A,;CPL置位 ;x单元的数据送入A ;完成x和y单元的数 据相加,SP,x:,y:,SP,x:,y:,SSBX CPL,LD 1,A,x:,0200H,1=0201H,0100,00 0000 0100,0100,x:,ADD 2,A,2=0202H,y:,0050,0,00 0000,5,1,0,+,y:,0050,00 0000 0150,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址特点: 所寻址数据存储器的16位地址是由DP或SP 与7位偏移地址dmad构成; 可在单周期寻址128个单元; 寻址速度快,能进行流水线并行操作。,用途:主要用于要求运
14、算速度较快的场合。,注意: 上述两种直接寻址方式是相互排斥的; 采用DP寻址时,要注意数据所在的页面 指针。,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,是根据辅助寄存器(AR0AR7)给出的16位地址进行寻址。,每一个辅助寄存器都可以用来寻址64K字数据存储空间中任何一个单元。,两个辅助寄存器算术运算单元(ARAU0和ARAU1) 可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,1. 单操作数寻址,用来完成存储单元中16位单数据的读写操作。,指令格式:,第3章 TMS320C54x的指令系统,注1
15、:寻址16位字时增/减量为1,32位字时增/减量为2。 注2:这种方式只能用写操作指令。 注3:这种方式不允许对存储器映像寄存器寻址。,(AR2)=0100H (0100H)=0030H LD *AR2,A (A)=0030H (AR2)=0100H,(AR2)=0100H (0100H)=0030H (0FFH)=200 LD *AR2-,A LD *AR2,B (A)=0030H (AR2)=00FFH (B)=200,第3章 TMS320C54x的指令系统,注1:寻址16位字时增/减量为1,32位字时增/减量为2。,(AR2)=0100H (AR0)=0002H (0100H)=0030
16、H (0101H)=100 (0102H)=200 LD *AR2+0,A LD *AR2,B (A)=0030H (AR2)=0102H (B)=200,第3章 TMS320C54x的指令系统,注3:这种方式不允许对存储器映像寄存器寻址。,第3章 TMS320C54x的指令系统,特殊的间接寻址功能:,在存储器中设置一个缓冲区作为滑动窗,来保存最新的一批数据,并用新的数据覆盖旧的数据,实现循环寻址。,循环缓冲区的长度R,由循环缓冲区长度寄存器BK确定,可通过指令设定。,1. 单操作数寻址,(1) 循环寻址,其指令: STM #1K,BK ;将立即数1K存放BK中,第3章 TMS320C54x的
17、指令系统,长度为R的缓冲区必须从N位地址的边界开始,即循环缓冲区基地址的N个最低有效位必须为0。,N应满足:,(1) 循环寻址,2NR的最小整数,例如:缓冲区长度R=32, 若2N32, 则N=6。 缓冲区开始的地址:xxxx xxxx xx00 0000B 缓冲区长度R=32装入循环缓冲长度寄存器BK中。,第3章 TMS320C54x的指令系统,(1) 循环寻址,循环寻址通常是指定一个辅助寄存器ARx指向循环缓冲区; 循环缓冲区的有效基地址(EFB)就是用户指定的辅助寄存器(ARx)的低N位置0后所得到的值; 循环缓冲区的尾基地址(EOB)是通过用BK的低N代替ARx的低N位得到; 循环寻址
18、的步长(step)就是加到辅助寄存器ARx或从辅助寄存器ARx中减去的值。,第3章 TMS320C54x的指令系统,(1) 循环寻址,注意:, 步长小于BK,其大小与所用指令有关;, 若步长为正,进行循环加寻址;否则进行循环减寻址;, 若BK=0,则为不作修正的辅助寄存器间接寻址。,例:STM #007H,BK STM #03FDH,AR1 LD *AR1+%,A 起始地址: 循环末地址: 循环寻址过程:,8,1,第3章 TMS320C54x的指令系统,1. 单操作数寻址,(2)位倒序寻址,用于快速傅氏变换算法FFT。,位码顺序寻址:按照二进制递增规律寻址。如:0000,0001,0010,0
19、011,1111。,如:0000,1000,0100,1100,1111。,位码倒序寻址:根据二进制递增码,按其位码倒序的规律进行寻址。,第3章 TMS320C54x的指令系统,(2)位倒序寻址,第3章 TMS320C54x的指令系统,第3章 TMS320C54x的指令系统,(2)位倒序寻址,实现过程:, 根据FFT算法进行转换,按转换顺序将 X(0)、X(8) 、X(4)、 X(15)的转换 结果存入数据存储器。, 按照位码倒序的方法寻址,可将乱序 的转换结果进行整序输出。,第3章 TMS320C54x的指令系统,(2)位倒序寻址,实现方法: 设AR2=01100000,作为基地址,指向X(
20、0) 的存储单元。 设AR0=00001000,取FFT长度的一半。,程序: RPT #15 ;重复执行下条指令16次 PORTW *AR2+0B,PA ;采用位码倒序的间接寻 址,向PA口输出数据,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,2. 双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存储操作(用表示)。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示一个读操作数;,在一次读和一次写的指令中,表示写操作数。,第3章 TMS320C54x
21、的指令系统,2. 双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,指令格式:,第3章 TMS320C54x的指令系统,2. 双操作数寻址,第3章 TMS320C54x的指令系统,2. 双操作数寻址,在指令中,由于只有2位可以用于选择辅助寄存器,所以根据Xar或Yar的值可以选择4个寄存器。,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,是一种不考虑DP和SP为何值,以0为基地址来访问MMR的寻址方式。 主要用于修改存储器映像寄存器的内容。,1.采用直接寻址方式,2.采用间接寻址方式,高9
22、位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。,高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,C54x共有8条指令可以进行MMR寻址。,LDM MMR,dst ;将MMR加载到累加器 MVDM dmad,MMR ;数据存储器向MMR传送数据 MVMD MMR,dmad ;MMR向指定地址传送数据 MVMM MMRx,MMRy ;MMRx向MMRy传送数据 POPM MMR ;将数据从栈顶弹至MMR PSHM MMR ;将MMR数据压入堆栈 STLM src,MMR ;累加器低位
23、存入MMR STM #lk,MMR ;长立即数lk存入MMR,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,MMR寻址特点:, 寻址速度快,对MMR执行写操作开销小; 可直接利用MMR的名称快速访问数据存储空间的0页资源; 只能寻址数据空间的0页单元。,用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。,C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的
24、原则进 行寻址。,当进栈操作时,SP先减小,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP增加。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,进栈操作时,SP先减小,然后数据进入堆栈;, SPSP-1,使SP指向03FEH;,SP,03FEH, 数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。, SP=03FEH,数据出栈;,SP,13FF, SPSP+1,使SP指向03FFH。,SP,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,采用堆栈寻址的指令:,PSHD Smem ;将Smem中的数据压入堆栈 PSHM MM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C54x 指令系统
链接地址:https://www.31doc.com/p-2601920.html