DSP原理及应用第三章.ppt

上传人:小飞机 文档编号:5428137 上传时间:2023-07-05 格式:PPT 页数:158 大小:2.33MB
返回 下载 相关 举报
DSP原理及应用第三章.ppt_第1页
第1页 / 共158页
DSP原理及应用第三章.ppt_第2页
第2页 / 共158页
DSP原理及应用第三章.ppt_第3页
第3页 / 共158页
DSP原理及应用第三章.ppt_第4页
第4页 / 共158页
DSP原理及应用第三章.ppt_第5页
第5页 / 共158页
点击查看更多>>
资源描述

《DSP原理及应用第三章.ppt》由会员分享,可在线阅读,更多相关《DSP原理及应用第三章.ppt(158页珍藏版)》请在三一办公上搜索。

1、Smem:16位单寻址操作数。Xmem:16位双寻址操作数,从DB数据总线上读出。Ymem:16位双寻址操作数,从CB数据总线上读出。dmad:16位立即数,数据存储器地址。pmad:16位立即数,程序存储器地址。PA:16位立即数,I/O口地址。src:源累加器(A或B)。dst:目的累加器(A或B)。lk:16位长立即数。,第一节 TMS320C54x的寻址方式,缩写,1立即数寻址2绝对地址寻址3累加器寻址4直接寻址5间接寻址6存储器映象寄存器寻址7堆栈寻址,寻址分类,1立即数寻址,在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址

2、寻址。,特点,指令中包含有执行指令所需要的操作数。立即数分为3、5、8或9位的短立即数和16位的长立即数两种。短立即数可包含在单字或双字指令中,长立即数在双字指令中。,注意,举例,特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。,用途:用于对寄存器初始化。,支持立即数的指令,2绝对地址寻址,特点,在指令中包含有所要寻址的存储单元的16位地址。这个16位的地址可以用其所在单元的地址标号或者16位符号常数来表示。,绝对寻址有四种类型:数据存储器地址(dmad)寻址;程序存储器地址(pmad)寻址;端口(PA)寻址;*(1k)寻址。,(1)数据存储器地址(da

3、md)寻址,方法,MVKD SAMPLE,*AR3LD 93h,A,举例,用一个符号或一个具体的数来确定程序存储器中的一个地址,(2)程序存储器地址(pmad)寻址,方法,MVPD TABLE,*AR4MVPD 90h,*AR4,举例,用一个符号或一个常数来确定外部I/O口地址,(3)PA寻址 端口(PA),方法,PORTR FIFO,*AR5PORTR 90h,*AR5,举例,用一个符号或一个常数来确定数据存储器中的一个地址,(4)*(lk)寻址,方法,LD*(BUFFER),A,举例,特点,绝对寻址总结,16位地址表示形式:地址符号,如:TABLE;16位数值,如:89AB、1234。,特

4、点:指令中包含一个固定的16位地址,能寻 址所有数据、程序和I/O存储空间,但 运行速度慢,需要较大的存储空间。,用途:用于对速度要求较低的场合。,用累加器中的数值作为地址来读写程序存储器。,方法,READA Smem WRITA Smem,举例,特点,3累加器寻址,注 意:,大多数C54x用A的低16位作为程序存储器的地址,而C548和C549是以A的低23位作为程序存储器地址,C5402是以A的低20位作为程序存储器地址;,上述两条指令重复使用时,累加器A自动增减;,只能使用累加器A寻址程序空间。,用一个符号或一个常数来确定7位偏移值,与DP或SP共同形成16位的数据存储器实际地址。,4直

5、接寻址,方法,指令格式:,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据存储器地址,CPL=0 7位dma域与9bit的DP相结合形成16位的数据存储器地址。CPL=1 7位dma域加上(正偏移)SP的值形成16位的数据存储器地址。,地址形成过程:,当CPL=1时,,高9位,低7位,16位数据存储器地址,SP+dmad,DP地址的范围是从0511(29-1),将存储器分成512页。,以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。,7位dmad范围是从0127,每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址。dma

6、d可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元,可以在不改变DP或SP的情况下,随机地寻址128个存储单元中的任何一个单元。,RSBX CPLLD#x,DPLD u,A ADD v,A=SSBX CPL LD X1,A ADD Y2,A,举例,特点,用途,主要用于要求运算速度较快的场合,例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 00

7、00 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,0180,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

8、,5,1,00 0000,00 0000 1500,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。,SSBX CPL,LD 1,A,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,5间接寻址,方法,特点,(1)单操作数寻址,LD*AR1,B,注

9、1:寻址16位字时增/减量为1,32位字时增/减量为2。注2:这种方式只能用写操作指令。注3:这种方式不允许对存储器映像寄存器寻址。,注1:寻址16位字时增/减量为1,32位字时增/减量为2。,注3:这种方式不允许对存储器映像寄存器寻址。,1)循环寻址,许多算法,如卷积,相关和FIR滤波等,都需要在存储器中实现一个循环缓冲器。在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。C54x间接寻址中提供了循环寻址的方式,以%表示。,循环寻址的有效地址计算,循环缓冲区的参数主要包括:长度寄存器(BK)、有效

10、基地址(EFB)、尾地址(EOB)。BK:定义了循环缓冲区的大小R。大小为R的循环缓冲器其地址要始于最低N位为零的地址。并且R要满足下面的条件:2NREFB:循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置 0后所得到的值。EOB:是通过用BK的低N位代替ARx的低N位得到。,例如:缓冲区长度R=32,若2N32,则N=6。缓冲区开始的地址:xxxx xxxx xx00 0000B 缓冲区长度R=32装入循环缓冲长度寄存器BK中。,循环缓冲器的指示index就是ARx的低N位,步长step就是加到辅助寄存器,或从辅助寄存器中减去的值。循环寻址的算法如下:,if 0

11、index+step BK;index=index+stepelse if index+step BK;index=index+step BKelse if index+step 0;index=index+step+BK,循环寻址要遵循的原则:,循环缓冲区的长度R小于2N,且地址从一个低N位为0的地址开始;步长小于或等于循环缓冲区的长度;所使用的辅助寄存器必须指向缓冲区单元。,2)位倒序寻址,用于快速傅氏变换算法FFT。,位码顺序寻址:按照二进制递增规律寻址。如:0000,0001,0010,0011,1111。,如:0000,1000,0100,1100,1111。,位码倒序寻址:根据二进

12、制递增码,按其位码倒序的规律进行寻址。,倒序寻址主要用于FFT算法中,位倒序寻址提高了执行速度和在FFT算法程序中使用存储器的效率。在这种寻址方式中,用到两个辅助寄存器:AR0:存放的整数N是FFT点数的一半。ARx:指向数据存放的物理单元。倒序寻址将AR0加到辅助寄存器ARx中,产生数据存储器的16位地址。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。间接寻址中*ARx+0B表示位倒序寻址。,0110 1000+0000 1000 0110 0100,例:设FFT长度为16,则AR0赋值为8,位倒序方式读入数据情况如下:,(2)双操作数

13、寻址方式,用于完成执行2次读操作或者1次读和1次写存储的并行操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示一个读操作数;,在一次读和一次写的指令中,表示写操作数。,指令格式,MPY*AR2,*AR3,A,Xar或Yar 辅助寄存器00 AR201 AR310 AR411 AR5,辅助寄存器选择,双数据存储器操作数寻址的类型,总结:间接寻址通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量,进行变址寻址、循环寻址,共有16种修正地址的方式。,用途

14、:用于需要按固定步长寻址的场合。,0页寻址。不影响当前DP或SP值。用于直接寻址和间接寻址,用来修改存储器映象寄存器,6存储器映象寄存器寻址,功能,LDM PRD,A,举例,特点,方法,高9位数据存储器地址被置0,利用指令中的低位地址访问MMR。,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 sr

15、c,MMR;累加器低位存入MMR STM#lk,MMR;长立即数lk存入MMR,7堆栈寻址,从高地址向低地址方向生长,SP用来管理堆栈,SP始终指向堆栈中所存放的最后一个数据,即SP指针始终指向栈顶。在压入操作时,先减小SP的值,再将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增加SP的值。,用来在中断和子程序调用时自动保存程序计数器(PC)中的数值,也能用来保护现场或传送参数,功能,特点,进栈操作时,SP先减小,然后数据进入堆栈;,SPSP-1,使SP指向03FEH;,SP,03FEH,数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。,SP=03FEH

16、,数据出栈;,SP,13FF,SPSP+1,使SP指向03FFH。,SP,采用堆栈寻址的指令:,PSHD Smem;将Smem中的数据压入堆栈 PSHM MMR;将MMR中的数据压入堆栈 POPD Smem;将数据从栈顶弹至Smem中 POPM MMR;将数据从栈顶弹至MMR中,寻址方式总结,第二节 程序地址的生成,程序地址生成器(PAGEN)构成,程序计数器(PC)重复计数器(RC)块重复计数器(BRC)块重复起始地址寄存器(RSA)块重复结束地址寄存器(REA),核心,16位程序计数器(PC)中保存某个内部或外部程序存储器的地址。,地址内容为:即将取指的某条指令;某个16位立即操作数;系数

17、表。在程序存储器中的地址,将程序存储器地址加载到程序计数器的途径,1分支转移操作,通过分支转移指令改写PC,来改变程序的流向。,可执行:分支转移循环控制子程序操作,功能,方法,条件分支转移无条件分支转移,BD用指令中所给出的地址加载PCBACCD用所指定的累加器的低16位作为地址加载PC。,带延迟不带延迟操作,转移种类,BCD如果指令中所规定的条件得到满足,就用指令中所给出的地址加载PC;BANZD如果当前辅助寄存器不等于0,就用指令中所规定的地址加载PC。,BC new,AOV BANZ loop,*AR2-,B nextBACC A,2调用和返回,转移前,原程序的下条指令的地址被压入堆栈,

18、而在返回时则将这个地址弹出至PC,使被中断了的原程序能继续执行。,当采用调用指令进行子程序或函数调用时,DSP中断当前运行的程序,转移到程序存储器的其它地址继续运行。,功能,方法,无条件调用与返回有条件调用与返回,带延迟不带延迟,RC cond,CALL sub CALA src,CC sub,cond,RET RETE RETF,条件调用指令,无条件调用指令,无条件返回指令,条件返回指令,3条件指令中的条件判断,多重条件判断,BC pmad,cond,cond,cond,相与关系,相或关系,BC pmad,condBC pmad,cond,第1组,例如,可以从A类中选一个条件,同时可以从B类

19、中选择一个条件。但是不能从同一类中选择两个条件。另外,两种条件测试的累加器必须是同一个。,可以同时测试AGT和AOV,但不能同时测试AGT和BGT。,BC pmad,AGT,AOVBC pmad,AGT,BOV,第2组,例如,可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件,BC pmad,TC,C,BIOBC pmad,NTC,TC,NBIO,特例,如果条件分支转移出去的地方只有12字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令:XC n,cond,cond,cond当n=1,且条件得到满足,就执行紧随此条件指令后的个字指令。当n=2,且条件得到满足,

20、就执行紧随此指令后的1个双字指令或者2条单字指令。当条件不满足,就依n的值执行1条或2条NOP指令。,4单条指令的重复操作,利用RPT和RPTZ可重复执行其后的一条指令。重复的次数是指令操作数加1,这个值保存在16位的重复计数寄存器(RC)中。,实现,特点1,RC内容不能编程设置,只能由重复指令(RPT和RPTZ)中的操作数加载。操作数n的最大值为65 535,最大重复执行次数为65 535+1。,一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括NMI,但不包括RS)均不响应。,重复过程,当RPT指令执行时:首先把循环的次数装入循环计数器(RC),其循环次数n由一个16位单数

21、据存储器操作数 Smem或一个8位或16位常数k或lk给定。这样,紧接着的下一条指令会循环执行n+1次。循环,RC在执行减1操作时不能被访问。注意:该循环内不能套用循环。当RPTZ指令执行时:对目的累加器dst清0,循环执行下一条指令n+1次。,例3-5 利用单条指令的重复操作对数组x5=0,0,0,0,0进行初始化。.bss x,5;为数组x分配5个存储单元STM#x,AR1;将x的首地址赋给AR1LD#0,A;对A清零RPT#4;设置重复执行下条指令5次STL A,*AR1+;对x5各单元清零或者.bss x,5STM#x,AR1RPTZ A,#4;对A清零并设置重复执行下条指令5次STL

22、 A,*AR1+,特点,5块重复操作,利用C54x内部的块重复计数器(BRC,加载值可为065 535)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB,可对紧随RPTB、由若干条指令构成的程序块进行重复操作。,功能,使用RPTB指令将重复操作的范围扩大到64K长度的循环回路,注意,1.RPT指令一旦执行,不会停止操作,即使有中断请求也不响应;2.RPTB指令可以响应中断;,块程序重复指令RPTB的操作数是循环回路的结束地址;其下条指令就是重复操作的内容;在使用RPTB之前必须先用STM指令将所规定的迭代次数加载到块重复计数器(BRC)中。单条重复指令执

23、行时关闭所有可屏蔽中断,而块重复操作执行期间可以响应中断。,说明,.bss x,5start:LD#1,16,B STM#4,BRC STM#x,AR4 RPTB next-1 ADD*AR4,16,B,A STH A,*AR4+next:LD#0,B,例3-6,对数组x5中的每个元素加1。,对寄存器的占用,6循环的嵌套,执行RPT指令时占用RC寄存器(重复计数器);执行RPTB指令时要用到BRC、RSA和RSE寄存器。只有一套块重复寄存器,故块重复操作不能嵌套。由于RPT与RPTB两者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令的循环中,实现循环的嵌套。执行BANZ指令只占用辅助寄

24、存器ARx。不会与RPT RPTB指令相冲突。,嵌套原则,参与嵌套循环的寄存器不能重复使用,图3-3 一个三重循环嵌套结构,第四节 指令系统概述,TMS320C54x的指令系统分助记符形式和代数式形式两种。共有指令129条,由于操作数的寻址方式不同,派生至205条。,C54x的助记符指令是由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。,例如:LD#0FFh,A;将立即数0FF传送至A,操作码,源操作数,目的操作数,注释,4.1 指令系统中的符号,1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,

25、1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,1.指令系统中的符号和缩略语,2.指令操作码符号和缩略语,2.指令操作码符号和缩略语,4.2 TMS320C54x的指令系统,C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。,按指令的功能可分成五大类:,算术运算指令 逻辑运算指令 程序控制指令,装入指令重复操作指令,1.算术运算指令,算术运算指令是实现数学计算的重要指令集合。C54x的算术指令具有运算功能强、指令丰富等特点。,包括:,加法指令(ADD)减法指令(SUB)乘法指令(MPY)乘法-累加/减指令

26、(MAC/MAS)双字运算指令(DADD)特殊用途指令,(1)加法指令,(2)减法指令,(3)乘法指令,(4)乘法-累加和乘法-减法指令,(4)乘法-累加和乘法-减法,(4)乘法-累加和乘法-减法指令,(5)双字算术运算指令,(6)特殊运算指令,(6)特殊运算指令,2.逻辑运算指令,C54x的指令系统具有丰富的逻辑运算指令。,包括:,与运算指令(AND)或运算指令(OR)异或运算指令(XOR)移位操作指令(SHIFT)测试操作指令(TEST),(1)与运算指令,与逻辑运算指令共有5条。,(2)或运算指令,(3)异或运算指令,(4)移位操作指令,指令格式:操作码 源操作数,移位数,目的操作数,C

27、54x共有6条移位指令,可实现带进位位循环移位、带TC位循环左移、算术移位、条件移位和逻辑移位等操作。,操 作 码:ROL、ROLTC、ROR、SFTA、SFTC、SFTL,源操作数:src,移 位 数:SHIFT,目的操作数:dst,(4)移位操作指令,带进位位循环左移,操作数src:累加器A或B,指令功能:累加器src与进位位C循环左移一位。,执行过程:C src(0)src(300)src(311)src(31)C 0 src(3932),指令格式:ROL src,;C的值移入src的最低位,;src左移一位,;src的最高位移入C,;src的保护位清0,(4)移位操作指令,带测试位循环

28、左移,操作数src:累加器A或B,指令功能:累加器src与测试位TC循环左移一位。,执行过程:,指令格式:ROLTC src,TC的值移入src的最低位,累加器src左移一位,src的最高位移入TC,src的保护位清0,0,(4)移位操作指令,带进位位循环右移,操作数src:累加器A或B,指令功能:累加器src与进位位C循环右移一位。,执行过程:,指令格式:ROR src,C的值移入src的31位 累加器src右移一位 src的最低位移入C src的保护位清0,0,算术移位,操作数src:累加器A或B,指令功能:根据SHIFT,src的内容算术移位。,指令格式:SFTA src,SHIFT,d

29、st,算术移位,执行过程:,当SHIFT 0时,进行算术右移 1)src的第(-SHIFT-1)位复制到进位位C;2)40位src右移SHIFT位,结果存入src或dst;3)符号扩展处理 若SXM=1,进行符号位扩展。src(39)写入dst(39(39+SHIFT+1)若SXM=0,不进行符号位扩展。0写入dst(39(39+SHIFT+1),算术移位,执行过程:,当SHIFT 0时,进行算术左移 1)src的第(39-SHIET)位复制到进位位C;2)40位src左移SHIFT位,结果存入src或dst;3)将0置入dst的低SHIFT的各位 0写入dst(SHIFT-1)0),(4)移

30、位操作指令,条件移位,操作数src:累加器A或B,指令格式:SFTC src,条件移位,执行过程:当src=0时,将1写入测试位TC;当src0时,进行条件移位。若src有两个有效符号位,则移位。32位src左移一位;保护位src(3932)不变;0写入测试位TC。若src只有一个符号位,则不移位。1写入测试位TC。,(4)移位操作指令,操作数src:累加器A或B,指令格式:SFTL src,SHIFT,dst,逻辑移位,逻辑移位,执行过程:若SHIFT 0,则进行逻辑左移。src的第(31-(SHIFT-1)位复制到进位位C;src(31-SHIFT)0)左移SHIFT位存入dst;0写入d

31、st的低SHIFT位,即0dst(SHIFT-1)0);0写入dst的高8位,即0dst(3932)。,(5)测试操作指令,C54x共有5条测试操作指令。,BIT,指令格式:BIT Xmem,BITC,指令功能:(Xmem(15-BITC)TC功能说明:将Xmem的指定位复制到TC位。,操 作 数:Xmem双数据存储操作数 BITC测试位的位代码,取值:015,(5)测试操作指令,BITF,指令格式:BITF Smem,#lk,指令功能:If(Smem)AND lk)=0 Then 0 TC Else 1 TC功能说明:测试Smem中由1k指定的某些位。若指定的测试位为0,TC=0,否则,TC

32、=1。lk在测试指定位中起屏蔽作用。,(5)测试操作指令,BITT,指令格式:BITT Smem,指令功能:(Smem(15-T(30)TC功能说明:将Smem的指定位复制到TC中。T寄存器的低4位T(30)用于确定测试位 的位代码,位地址对应于15-T(30)。,(5)测试操作指令,CMPM,指令格式:CMPM Smem,#lk,指令功能:If(Smem)=lk Then 1 TC Else 0 TC功能说明:比较Smem中的操作数与常量1k是否相等。若(Smem)=1k,则TC=1,否则,TC=0。,(5)测试操作指令,CMPR,指令格式:CMPR CC,ARx,操 作 数:CC条件代码,

33、取值:00b11b ARx辅助寄存器AR0AR7,指令功能:If(cond)Then 1 TC Else 0 TC功能说明:根据条件代码CC,将指定的ARx与AR0比较。若满足条件,则TC=1,否则,TC=0。,(5)测试操作指令,CMPR,注意:所有的条件都以无符号操作数的形式参与运算。,3.程序控制指令,C54x的程序控制指令共有31条,可分为6类:,包括:,分支转移指令子程序调用指令中断指令返回指令堆栈操作指令其他程序控制指令,3.3.4 程序控制指令,(1).分支转移指令,分支转移指令共有6条,可实现无条件转移、有条件转移和远程转移等。,操 作 数:pmad立即数表示的程序存储器 地址

34、。取值:065 535,指令格式:BD pmad,BD,(1).分支转移指令,指令格式:BD pmad,功能说明:将pmad指定的程序存储器地址赋给PC,实现分支转移。,BD,注 意:若指令带后缀D,则为延迟方式,紧随 该指令的两条单字指令或一条双字指令 先被取出执行,然后程序再转移。该指令不能被循环执行。,(1).分支转移指令,指令格式:BACCD src,BACCD,操 作 数:src累加器A或B,指令功能:src(150)PC,功能说明:由src低16位所确定的地址赋给PC。,注 意:若指令带后缀D,则为延迟方式。该指令不能被循环执行。,(1).分支转移指令,指令格式:BANZD pma

35、d,Sind,BANZD,指令功能:If(ARx)0)Then pmadPC Else(PC)+2PC,功能说明:若当前ARx0,则pmad的值赋给PC,否则,PC值加2。,注 意:带后缀D为延迟方式。指令不能循环执行。,(1).分支转移指令,指令格式:BCD pmad,cond,cond,cond,BCD,指令功能:If(cond(s)Then pmadPC Else(PC)+2PC,功能说明:若满足特定条件,则pmad的值赋给PC,否则,PC值加2。,注 意:带后缀D为延迟方式。指令不能循环执行。,测试条件的分类,(1).分支转移指令,指令格式:FBD extpmad,FBD,操 作 数:

36、extpmad23位立即数表示的程序存储 器地址。取值:07F FFFF,指令功能:(extpmad(150)PC;(extpmad(2216)XPC,功能说明:将extpmad的高7位(2216)确定的页赋 给XPC,extpmad的低16位赋给PC。,注 意:带后缀D为延迟方式。指令不能循环执行。,(1).分支转移指令,指令格式:FBACCD src,FBACCD,指令功能:(src(150)PC;(src(2216)XPC,功能说明:将src的高7位(2216)赋给XPC,src的 低16位(150)赋给PC。,注 意:带后缀D为延迟方式。指令不能循环执行。,(2).子程序调用指令,子程

37、序调用指令共有5条,可实现子程序的无条件调用、有条件调用和远程调用等,并具有延时操作。,指令格式:CALAD src,CALAD,功能说明:首先将返回的地址压入栈顶保存,然后 将src的低16位赋给PC,实现子程序调用。,指令格式:CALLD pmad,CALLD,功能说明:首先将返回的地址压入栈顶保存,然后 将pmad的值赋给PC,实现子程序调用。,指令格式:CCD pmad,cond,cond,cond,CCD,功能说明:若满足条件,则将返回地址压入栈顶,将 pmad的值赋给PC,实现子程序调用。,FCALAD,指令格式:FCALAD src,指令功能:若非延时,(SP)-1SP(PC)+

38、1TOS(SP)-1SP(XPC)TOS(src(150)PC(src(2216)XPC,功能说明:先将返回地址PC、XPC压入栈顶,然后将 src的低16位值赋给PC,高7位值赋给XPC。,若延时,(SP)-1SP(PC)+3TOS(SP)-1SP(XPC)TOS(src(150)PC(src(2216)XPC,FCALLD,指令格式:FCALLD extpmad,指令功能:若非延时,(SP)-1SP(PC)+2TOS(SP)-1SP(XPC)TOS(extpmad(150)PC(extpmad(2216)XPC,功能说明:先将返回地址PC、XPC压入栈顶,然后将 extpmad的低16位赋

39、给PC,高7位赋给XPC。,若延时,(SP)-1SP(PC)+4TOS(SP)-1SP(XPC)TOS(extpmad(150)PC(extpmad(2216)XPC,(3).中断指令,操 作 数:K小于9位的短立即数,指令格式:INTR K,指令功能:(SP)-1SP(PC)+1TOS,INTR,功能说明:首先将PC值压入栈顶,然后将K所确定的中断向量赋给PC,执行中断服务子程 序。中断标志寄存器IFR对应位清0且INTM=1。,操 作 数:K小于9位的短立即数,指令格式:IRAP K,指令功能:(SP)-1SP(PC)+1TOS,TRAP,功能说明:首先将PC值压入栈顶,然后将K所确定的

40、中断向量赋给PC,执行中断服务子程序。,(4).返回指令,返回指令共有5条,可实现无条件返回、有条件返回和远程返回等,并具有延时操作。,指令格式:FRETD,指令功能:(TOS)XPC(SP)+1SP(TOS)PC(SP)+1SP,FRETD,功能说明:长返回指令。先将栈顶低7位赋给XPC。再 把下一个单元的16位值赋给PC,SP加1修正。,指令格式:FRETED,指令功能:(TOS)XPC(SP)+1SP(TOS)PC(SP)+1SP 0INTM,FRETED,功能说明:长中断返回指令。先将栈顶低7位赋给 XPC。再将下一个单元的16位值赋给PC,同时中断屏蔽位INTM清0。,指令功能:If

41、(cond(s)Then(TOS)PC(SP)+1SP Else(PC)+1PC,RCD,功能说明:若满足条件,栈顶数据弹出到PC,SP加1,若不满足条件,执行PC加1。,指令格式:RCD cond,cond,cond,指令功能:(TOS)PC(SP)+1SP,RETD,功能说明:栈顶16位数据弹出到PC,SP加1。,指令格式:RETD,指令功能:(TOS)PC(SP)+1SP 0INTM,RETED,功能说明:栈顶16位数据弹出到PC,SP加1,INTM清0。,指令格式:RETED,指令功能:(RTN)PC(SP)+1SP 0INTM,RETFD,功能说明:将快速返回寄存器RTN中的内容赋给

42、PC,然后SP加1,INTM清0。,指令格式:RETFD,(5).堆栈操作指令,堆栈操作指令共有5条,可对系统堆栈进行管理,实现数据的进栈和出栈。,指令格式:FRAME K,指令功能:(SP)+KSP,FRAME,功能说明:将短立即数偏移K加到SP中。,操 作 数:K9位短立即数,取值:-128127,指令格式:POPD Smem,指令功能:(TOS)Smem(SP)+1SP,POPD,功能说明:由SP寻址的数据存储器单元中的内容复 制到由Smem确定的数据存储器单元中。然后SP加1。,POPM,指令格式:POPM MMR,操 作 数:MMR存储器映像寄存器,指令功能:(TOS)MMR(SP)

43、+1SP,功能说明:由SP寻址的数据存储器单元中的内容复 制到MMR中,然后修改SP。,PSHD,指令格式:PSHD Smem,指令功能:(SP)-1SP Smem TOS,功能说明:SP减1操作后,将存储单元Smem的内容 压入SP指向的数据存储单元。,PSHM,指令格式:PSHM MMR,指令功能:(SP)-1SP MMR TOS,功能说明:SP减1操作后,将MMR的内容压入SP指向 的数据存储单元。,(6).其他程序控制指令,指令格式:IDLE K,指令功能:(PC)+1PC,IDLE,功能说明:强迫程序执行等待操作直到产生非屏蔽 中断或复位操作。PC值加1,芯片保持空 闲状态直至中断产

44、生。,操 作 数:K短立即数,取值:1、2、3,指令格式:MAR Smem,MAR,功能说明:修改由Smem所确定的辅助寄存器的内容。当CMPT=0时,只修改ARx的内容,不修改ARP。当CMPT=1时,若当前ARx为AR0,则修改ARx(ARP)的内容,但不修改ARP的值;若当前ARx不为AR0,则修改ARx的 内容,然后再将x值赋给ARP。,指令格式:NOP,NOP,功能说明:该指令除了执行PC加1外,不执行任何操作。,RESET,指令格式:RESET,功能说明:指令实现非屏蔽的PMST、ST0和ST1复位。(IPTR)7 PC 0OVA 0OVB 1C 1TC 0ARP 0DP 1SXM

45、 0ASM 0BRAF 0HM 1XF 0C16 0FRCT 0CMPT 0CPL 1INTM 0IFR 0OVM,指令格式:RSBX N,SBIT,RSBX,功能说明:对状态寄存器ST0和ST1的特定位清0。,操 作 数:N指明被修改的状态寄存器,N=0时,为ST0;N=1时,为ST1 SBIT表示状态寄存器被修改的位数,取值:015,指令功能:0STN(SBIT),指令格式:SSBX N,SBIT,SSBX,功能说明:对状态寄存器ST0和ST1的特定位置1。,操 作 数:N指明被修改的状态寄存器,N=0时,为ST0;N=1时,为ST1 SBIT表示状态寄存器被修改的位数,取值:015,指令

46、功能:1STN(SBIT),XC,功能说明:若n=1且满足条件,则执行仅随其后的一条单字指令。若n=2且满足条件,则执行仅随其后的一条双字指令 或两条单字指令。若不满足条件,则执行n条NOP指令。,操 作 数:n表示紧接着执行的指令条数,n=1或2。,指令格式:XC n,cond,cond,cond,4.装入指令,是从存储器中将源操作数传送到目的操作数所指定的存储器中。,包括:,装载指令,存储指令,条件存储指令,混合装载和存储指令,并行装载和存储指令 并行存储和加/减指令 并行装载和乘法指令 并行存储和乘法指令,(1)装载指令,装载指令,(2)存储指令,(3).条件存储指令,(4).混合装载和

47、存储指令,(5).并行装载和存储指令,并行装载和存储指令共2条。,(6)并行存储和加/减法指令,并行存储和加/减法指令只有2条。,(7).并行装载和乘法指令,并行装载和乘法指令共4条。,(8).并行存储和乘法指令,并行存储和乘法指令共5条。,5 重复操作指令,重复操作指令共5条。,程序块重复操作可以使紧随RPTB指令之后的程序块重复执行。,块起始地址(RSA):RPTB指令的下一行。块结束地址(REA):由RPTB指令的操作数给出。块重复执行次数:由块重复计数器BRC的内容 来确定。,单指令重复功能可以用于乘法累加、块移动等指令,以增加指令的执行速度。在重复指令第一次重复之后,那些多周期指令就会有效地成为单周期指令。可以通过重复指令由多周期变为单周期的指令共有11条。,由重复指令变为单周期的指令,利用长偏移修正或绝对寻址的指令都不能使用单指令重复,统称为不可重复指令。不可重复指令共36条:数据传送指令5条 算术运算指令1条 逻辑运算指令4条 程序控制指令26条,不可重复执行的指令,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号