DSP原理及应用第三章_第1页
DSP原理及应用第三章_第2页
DSP原理及应用第三章_第3页
DSP原理及应用第三章_第4页
DSP原理及应用第三章_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

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

文档简介

1、1第三章第三章 DSP指令系统与特点指令系统与特点 2SmemSmem:1616位单寻址操作数。位单寻址操作数。XmemXmem:1616位双寻址操作数,从位双寻址操作数,从DBDB数据总线上读出。数据总线上读出。YmemYmem:1616位双寻址操作数,从位双寻址操作数,从CBCB数据总线上读出。数据总线上读出。dmaddmad:1616位立即数,数据存储器地址。位立即数,数据存储器地址。pmadpmad:1616位立即数,程序存储器地址。位立即数,程序存储器地址。PAPA: 1616位立即数,位立即数,I/OI/O口地址。口地址。srcsrc: 源累加器(源累加器(A A或或B B)。)。

2、dstdst: 目的累加器(目的累加器(A A或或B B)。)。lklk: 1616位长立即数。位长立即数。第一节第一节 TMS320C54xTMS320C54x的寻址方式的寻址方式 缩缩写写31 1立即数寻址立即数寻址2绝对地址寻址绝对地址寻址3累加器寻址累加器寻址4直接寻址直接寻址5间接寻址间接寻址6存储器映象寄存器寻址存储器映象寄存器寻址7堆栈寻址堆栈寻址寻址分类寻址分类4 1 1立即数寻址立即数寻址 在操作数前面需要加字号来说明该操作数在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址

3、。址,从而把立即数寻址变成绝对地址寻址。 特特点点指令中包含有执行指令所需要的操作数。指令中包含有执行指令所需要的操作数。立即数分为立即数分为3 3、5 5、8 8或或9 9位的短立即数和位的短立即数和1616位位的长立即数两种。的长立即数两种。短立即数可包含在单字或双字指令中,长立短立即数可包含在单字或双字指令中,长立即数在双字指令中。即数在双字指令中。 注注意意LD #93hLD #93h,A A LD 93hLD 93h,A A 举例举例53 3位位立即数立即数 5 5位位立即数立即数 8 8位位立即数立即数 9 9位位立即数立即数 1616位位立即数立即数 LD LD FRAME LD

4、 RPT LD ADD ADDM ANDANDM BITF CMPMLD MAC OR ORM RPT RPTZ ST STM SUBXOR XORM 6 2绝对地址寻址绝对地址寻址特特点点在指令中包含有所要寻址的存储单元的在指令中包含有所要寻址的存储单元的1616位位地址。这个地址。这个1616位的地址可以用其所在单元的地位的地址可以用其所在单元的地址标号或者址标号或者1616位符号常数来表示。位符号常数来表示。 7(1 1)数据存储器地址()数据存储器地址(damddamd)寻)寻址址 用一个符号或一个数来确定用一个符号或一个数来确定数据空间的一个地址。数据空间的一个地址。 方法方法MVK

5、D SAMPLEMVKD SAMPLE,* *AR3AR3LD 93hLD 93h,A A 举例举例8用一个符号或一用一个符号或一个具体的数来确个具体的数来确定程序存储器中定程序存储器中的一个地址的一个地址 (2 2)程序存储器地址()程序存储器地址(pmadpmad)寻)寻址址 方法方法MVPD TABLEMVPD TABLE,* *AR4AR4MVPD MVPD 90h90h,* *AR4AR4 举例举例9用一个符用一个符号或一个号或一个常数来确常数来确定外部定外部I/OI/O口地口地址址 (3 3)PAPA寻址寻址 端口(端口(PAPA) 方法方法PORTR FIFOPORTR FIFO

6、,* *AR5AR5PORTR PORTR 90h90h,* *AR5AR5 举例举例10用一个符号用一个符号或一个常数或一个常数来确定数据来确定数据存储器中的存储器中的一个地址一个地址 (4 4)* *(lklk)寻址)寻址 方法方法LD LD * *(BUFFERBUFFER),),A A 举例举例特点特点允许所有使允许所有使用用SmemSmem寻址寻址的指令去访的指令去访问数据空间问数据空间的任意单元的任意单元而不改变数而不改变数据页指针据页指针(DPDP)的值,)的值,也不用对也不用对ARxARx进行初始化进行初始化 11 特点:指令中包含一个固定的特点:指令中包含一个固定的1616位

7、地址,能寻位地址,能寻 址所有数据、程序和址所有数据、程序和I/OI/O存储空间,但存储空间,但 运行速度慢,需要较大的存储空间。运行速度慢,需要较大的存储空间。12用累加器用累加器中的数值中的数值作为地址作为地址来读写程来读写程序存储器。序存储器。 方法方法READA READA SmemSmem WRITA WRITA SmemSmem 举例举例特点特点可用来可用来完成完成程序存储器程序存储器单元的数据单元的数据与与数据存储数据存储器单元的数器单元的数据据进行交换进行交换 3累加器寻址累加器寻址1314用一个符号或一个常数用一个符号或一个常数来确定来确定7 7位偏移值位偏移值,与与DPDP

8、或或SPSP共同形成共同形成1616位的位的数据存储器实际地址。数据存储器实际地址。4直接寻址直接寻址 方法方法15 8 7 6 0 操操 作作 码码 I = 0 数据存储器地址数据存储器地址(dmad) 15当当CPL=0时,时,直接寻址直接寻址指指 令令158760操作码操作码I=0dmad页指针页指针DP( (位于位于ST0中中) )9位数据页指针位数据页指针DP高高9位位低低7位位16当当CPL=1时,时,直接寻址直接寻址指指 令令158760操作码操作码I=0dmad高高9位位低低7位位1718可以在不改可以在不改变变DPDP或或SPSP的的情况下,随情况下,随机地寻址机地寻址128

9、128个存储单元个存储单元中的任何一中的任何一个单元。个单元。RSBX CPLRSBX CPLLD #xLD #x,DPDPLD uLD u,A A ADD vADD v,A A =SSBX CPLSSBX CPL LD X1 LD X1,A A ADD Y2 ADD Y2,A A 举例举例特点特点用途用途主要用主要用于要求于要求运算速运算速度较快度较快的场合的场合19数据存储器数据存储器地址地址数据数据01800001.X X:01FF1000y y:02000500.DPDPdmadma0 0000 0011111 1111操作码操作码 0 111 1111机器码机器码x 0 0000 0

10、011111 11110 1 F FxA00 0000 1000操作码操作码 0 000 0000机器码机器码000 0000y 0 0000 0011000 00001 8 0 0y0180H0001+1001100100 000000 0000 1001ADPDP0 0000 0011dmadma111 11110 1 F FxA00 0000 1000DPDP0 0000 0100dmadma000 00000 2 0 0y05000200H05000200H+005100 0000 00 0000 150000 0000 1500A结果结果20数据存储器数据存储器00200100005

11、0A000.120000 0010 0000 0000000 0001000 00100 2 0 10 2 0 2A00 0000 0150A执行结果执行结果215间接寻址间接寻址 方法方法特点特点根据辅助寄存器根据辅助寄存器(AR0AR7)(AR0AR7)给出的给出的1616位地址进行寻址。位地址进行寻址。寻址范围为寻址范围为64K 64K 能在一个指令中访问能在一个指令中访问两个数据存储器单元两个数据存储器单元两个独立的存储器单元读数据两个独立的存储器单元读数据读一个读一个、写另一个存储器单元写另一个存储器单元读写两个连续的存储器单元读写两个连续的存储器单元 22(1 1)单操作数寻址)单

12、操作数寻址 LD LD * *AR1,BAR1,B15 8 7 6 3 2 0 操作码操作码 I 1 MOD ARF 23单操作数间接寻址形式单操作数间接寻址形式MOD域域 操作句法操作句法功功 能能说说 明明0000 * * ARx 地址地址=ARxARx ARx的内容为数据存储器地址的内容为数据存储器地址0001 * * ARx- - 地址地址=ARxARx ARx ARx=ARx-1ARx-1 寻址结束后,寻址结束后,ARx地址减地址减1 。注注2 0010 * * ARx+ 地址地址=ARxARx ARx ARx=ARx+1ARx+1 寻址结束后,寻址结束后,ARx地址加地址加1。 注

13、注1 0011 * * + +ARx ARxARx=ARx+1ARx+1 地址地址=ARxARx ARx中的地址加中的地址加1后,再寻址。后,再寻址。 注注1 、注注2、注注3 0100 * * ARx- -0B 地址地址=ARx ARx ARx ARx=B(ARx-AR0)B(ARx-AR0) 寻址结束后,用位倒序进位的方法从寻址结束后,用位倒序进位的方法从 ARx中减去中减去AR0的值。的值。 注注11:寻址:寻址1616位字时增位字时增/ /减量为减量为1 1,3232位字时增位字时增/ /减量为减量为2 2。 注注22:这种方式只能用写操作指令。:这种方式只能用写操作指令。 注注33:

14、这种方式不允许对存储器映像寄存器寻址。:这种方式不允许对存储器映像寄存器寻址。 24单操作数间接寻址形式单操作数间接寻址形式MOD域域 操作句法操作句法功功 能能说说 明明0101 * * ARx- -0 地址地址=ARx ARx ARx ARx=ARx-AR0ARx-AR0 寻址结束后寻址结束后, ,从从ARx中减去中减去AR0的值。的值。0110 * * ARx+0 地址地址 = ARx ARx=ARx+AR0 寻址结束后,把寻址结束后,把AR0加到加到ARx中。中。0111 * * ARx+0B 地址地址=ARxARx ARx ARx=B(ARx+AR0)B(ARx+AR0) 寻址结束后

15、,用位倒序进位的寻址结束后,用位倒序进位的方法将方法将 AR0加到加到ARx中中1000 * * ARx- -% 地址地址=ARxARx ARx ARx=Circ(ARx-1)Circ(ARx-1)寻址结束后,寻址结束后,ARx中的地址值中的地址值按循环减的方法减按循环减的方法减1。注注1 1001 * * ARx- -0% 地址地址=ARxARx ARx ARx=Circ(ARx-AR0)Circ(ARx-AR0) 寻址结束后,按循环减的方法寻址结束后,按循环减的方法从从ARx中减去中减去AR0中的值中的值 注注11:寻址:寻址1616位字时增位字时增/ /减量为减量为1 1,3232位字时

16、增位字时增/ /减量为减量为2 2。25单操作数间接寻址形式单操作数间接寻址形式 MOD域域 操作句法操作句法功功 能能说说 明明1010 * * ARx+% 地址地址=ARxARx ARx ARx=Circ(ARx+1)Circ(ARx+1)寻址结束后,寻址结束后,ARx中的地址值中的地址值按循环加的方法加按循环加的方法加1。注注1 1011 * * ARx+0% 地址地址=ARx=ARx ARx=Circ(ARx+AR0) ARx=Circ(ARx+AR0) 寻址结束后,按循环加的方法寻址结束后,按循环加的方法将将AR0中的值加到中的值加到ARx。 1100 * * ARx( (lk) 地

17、址地址=ARx+lk=ARx+lk ARx=ARx ARx=ARx以以ARx与与16位数之和作为地址,位数之和作为地址,寻址结束后,寻址结束后,ARx中的值不变。中的值不变。 1101 * * +ARx( (lk) 地址地址=ARx+lkARx+lk ARxARx=ARx+lkARx+lk将一个将一个16位带符号数加到位带符号数加到ARx,然后寻址。然后寻址。注注31110 * * ARx( (lk) )% 地址地址=Circ(ARx+lk) Circ(ARx+lk) ARxARx=Circ(ARx+lk) Circ(ARx+lk) 将一个将一个16位带符号数按循环加位带符号数按循环加的方法加

18、至的方法加至ARx,然后再寻址,然后再寻址1111 * * ( (lk) ) 地址地址=(lk)(lk)利用利用16位无符号数作为地址位无符号数作为地址, ,寻址数据存储器寻址数据存储器 注注33:这种方式不允许对存储器映像寄存器寻址。:这种方式不允许对存储器映像寄存器寻址。 261) 1) 循环寻址循环寻址27循环寻址的有效地址计算循环寻址的有效地址计算 循环缓冲区的参数主要包括:长度寄存器循环缓冲区的参数主要包括:长度寄存器(BKBK)、有效基地址()、有效基地址(EFBEFB)、尾地址()、尾地址(EOBEOB)。)。uBK:BK:定义了循环缓冲区的大小定义了循环缓冲区的大小R R。大小

19、为。大小为R R的循环缓冲的循环缓冲器其地址要始于最低器其地址要始于最低N N位为零的地址。并且位为零的地址。并且R R要满足下要满足下面的条件:面的条件:2 2N NRRuEFBEFB:循环缓冲器的有效基地址(:循环缓冲器的有效基地址(EFBEFB)就是用户选定)就是用户选定的辅助寄存器(的辅助寄存器(ARxARx)的低)的低N N位置位置 0 0后所得到的值。后所得到的值。uEOBEOB:是通过用是通过用BKBK的低的低N N位代替位代替ARxARx的低的低N N位得到。位得到。 2829 循环缓冲器的循环缓冲器的指示指示indexindex就是就是ARxARx的低的低N N位,位,步长步

20、长stepstep就是加到辅助寄存器,或从辅助寄存就是加到辅助寄存器,或从辅助寄存器中减去的值。循环寻址的算法如下:器中减去的值。循环寻址的算法如下:if 0 index+step BK; index = index + stepelse if index + step BK; index = index + step BKelse if index + step 0; index = index + step + BK30循环缓冲区的长度循环缓冲区的长度R R小于小于2 2N N,且地址从一个低,且地址从一个低N N位为位为0 0的地址开始;的地址开始;步长小于或等于循环缓冲区的长度;步长小

21、于或等于循环缓冲区的长度;所使用的辅助寄存器必须指向缓冲区单元。所使用的辅助寄存器必须指向缓冲区单元。312) 2) 位倒序寻址位倒序寻址32 WN0WN0WN0W0N-1-1-1-1X (0)X (1)X (0)X (1)X (0)X (1)X (0)X (1)33445566WN0WN2WN0WN2-1-1-1-1X (0)X (1)X (2)X (3)X (0)X (1)X (2)X (3)11121222WWWWN0N1N2N3-1-1-1-1X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)xxxxxxxx8 8点点DFTDFT的的FFTFFT的运算流图的运算流图(0)

22、(4)(2)(6)(1)(5)(3)(7)33-1X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7) 0 x-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 8x 4x12x 2x10 x 6x14x 1x 9x 5x13x 3x11x 7x15x016W016W016W-1016W-1016W-1016W016W416W-1-1016W416W-1-1016W416W-1-1016W416W016W216W416W616W-1-1-1-1016W216W416W616WX(8)X(9)X(10)X(11)X(12)X(13)X(14)X(15)016W-10

23、16W016W116W216W316W416W716W516W616W34位码顺序和倒序对照表位码顺序和倒序对照表序号序号位码顺序位码顺序寻寻 址址位码倒序位码倒序寻寻 址址序号序号位码顺序位码顺序寻寻 址址位码倒序位码倒序寻寻 址址00000000081000000110001100091001100120010010010101001013001111001110111101401000010121100001150101101013110110116011001101411100111701111110151111111135 0110 10000110 1000 + 0000 1000

24、 + 0000 1000 0110 0100 0110 010036例:例: 设设FFT长度为长度为16,则,则AR0赋值为赋值为8,位倒序,位倒序方式读入数据情况如下:方式读入数据情况如下:37(2 2)双操作数寻址方式)双操作数寻址方式 38指令格式指令格式 MPY MPY * *AR2,AR2,* *AR3,AAR3,A15 8 7 6 5 4 3 2 1 0 操操 作作 码码 Xmod Xar Ymod Yar 39Xar或或Yar 辅助寄存器辅助寄存器00 AR201 AR310 AR411 AR5辅助辅助寄存器寄存器选择选择Xmod或或Ymod操作码语操作码语法法功功 能能说说 明

25、明00*ARxaddr=ARxARx是数据存储器地址是数据存储器地址01*ARx-addr=ARxARx=ARx-1访问后,访问后,ARx中的地址减中的地址减110*ARx+addr=ARxARx=ARx+1访问后,访问后,ARx中的地址加中的地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)访问后,访问后,AR0以循环寻址的以循环寻址的方式加到方式加到ARx中中40410 0页寻址。页寻址。不影响当前不影响当前DPDP或或SPSP值值 。用于直接寻用于直接寻址和间接寻址和间接寻址址用来修用来修改存储改存储器映象器映象寄存器寄存器 6存储器映象寄存器寻址存储器映象寄存

26、器寻址功能功能LDM PRD,ALDM PRD,A举例举例特点特点方法方法高高9 9位数据位数据存储器地址存储器地址被置被置0 0,利,利用指令中的用指令中的低位地址低位地址访问访问MMRMMR。42437堆栈寻址堆栈寻址 从高地址向低地址方向生长,从高地址向低地址方向生长,SPSP用来管理堆栈,用来管理堆栈,SPSP始终指向始终指向堆栈中所存放的最后一个数据,堆栈中所存放的最后一个数据,即即SPSP指针始终指向栈顶。在压指针始终指向栈顶。在压入操作时,先减小入操作时,先减小SPSP的值,再的值,再将数据压入堆栈;在弹出操作将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增时,先从堆栈弹出数

27、据,再增加加SPSP的值。的值。用来在中断和用来在中断和子程序调用时子程序调用时自动保存程序自动保存程序计数器(计数器(PCPC)中的数值中的数值,也也能用来保护现能用来保护现场或传送参数场或传送参数 功能功能特点特点44 数据存储器数据存储器03FFH1234SP5678smem smem 4546寻址方式寻址方式用用 途途举举 例例指令含义指令含义立即寻址立即寻址主要用于初始化主要用于初始化LD #10,A立即数立即数10 A绝对寻址绝对寻址利用利用16位地址寻址存储单位地址寻址存储单元元STL A,dmad将将AL内容存入内容存入y所在的存储单所在的存储单元元累加器寻址累加器寻址将累加器

28、中的内容作为地将累加器中的内容作为地址址READA x将将A的内容作为地址读程序存的内容作为地址读程序存储器,并存入储器,并存入x存储单元存储单元直接寻址直接寻址利用数据页指针和堆栈指利用数据页指针和堆栈指针寻址针寻址LD x,A(DP+x的低的低7位地址位地址) A间接寻址间接寻址利用辅助寄存器作为地址利用辅助寄存器作为地址指针指针LD *AR1,A(AR1) A存储器映像存储器映像寄存器寻址寄存器寻址快速寻址存储器映象寄存快速寻址存储器映象寄存器器LDM ST1,B(ST1) B堆栈寻址堆栈寻址压入压入/弹出数据存储器和存弹出数据存储器和存储器映像寄存器储器映像寄存器MMRPSHM AG(

29、SP)-1 SP,(AG) (SP)寻址方式总结寻址方式总结47第二节第二节 程序地址的生成程序地址的生成程序地址程序地址生成器生成器(PAGENPAGEN)构成构成程序计数器(程序计数器(PCPC)重复计数器(重复计数器(RCRC)块重复计数器(块重复计数器(BRCBRC)块重复起始地址寄存器(块重复起始地址寄存器(RSARSA)块重复结束地址寄存器(块重复结束地址寄存器(REAREA)核心核心1616位程序计数器(位程序计数器(PCPC)中保存某个内部或外部中保存某个内部或外部程序存储器的地址程序存储器的地址。地址地址内容为:内容为:即将取指的某条指令即将取指的某条指令;某个某个1616位

30、立即操作数位立即操作数;系数表系数表。在程序存储器中的地址在程序存储器中的地址48操作操作加载到加载到PC的地址的地址复位复位PC=FF80h。顺序执行指令顺序执行指令PC=PC+1。分支转移分支转移用紧跟在分支转移指令后面的用紧跟在分支转移指令后面的16位立即数加载位立即数加载PC。由累加器分支转移由累加器分支转移用累加器用累加器A或或B的低的低16位立即数加载位立即数加载PC。块重复循环块重复循环假如假如ST1中的块重复有效位中的块重复有效位BRAF=1,当,当PC+1等于块重复结束地等于块重复结束地址(址(REA)+1,将块重复起始地址(,将块重复起始地址(RSA)加载)加载PC。子程序

31、调用子程序调用将将PC+2压入堆栈,并用紧跟在调用指令后面的压入堆栈,并用紧跟在调用指令后面的16位立即数加载位立即数加载PC。返回指令将栈顶弹出至。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。,回到原先的程序处继续执行。从累加器调用子程序从累加器调用子程序将将PC+1压入压入堆堆栈,用累加器栈,用累加器A或或B的低的低16位加载位加载PC。返回指令将。返回指令将栈顶弹出至栈顶弹出至PC,回到原先的程序处继续执行。,回到原先的程序处继续执行。硬件中断或软件中断硬件中断或软件中断将将PC压入堆栈,用适当的中断向量地址加载压入堆栈,用适当的中断向量地址加载PC。中断返回时,将。中断返回时,

32、将栈顶弹出至栈顶弹出至PC,继续执行被中断了的子程序。,继续执行被中断了的子程序。将程序存储器地址加载到程序计数器的途径将程序存储器地址加载到程序计数器的途径491分支转移操作分支转移操作 通过分支转移通过分支转移指令改写指令改写PCPC,来改变程序的来改变程序的流向。流向。可执行可执行: :分支转移分支转移循环控制循环控制子程序操作子程序操作 功能功能方法方法50条件条件分支转移分支转移无条件分支转移无条件分支转移 BDBD用指令用指令中所给出的中所给出的地址加载地址加载PCPCBACCDBACCD用用所指定的累所指定的累加器的低加器的低1616位作为地址位作为地址加载加载PCPC。 带延迟

33、带延迟不带延迟不带延迟操作操作转移种类转移种类BCDBCD如果指令如果指令中所规定的条中所规定的条件得到满足,件得到满足,就用指令中所就用指令中所给出的地址加给出的地址加载载PCPC;BANZDBANZD如果当如果当前辅助寄存器前辅助寄存器不等于不等于0 0,就用,就用指令中所规定指令中所规定的地址加载的地址加载PCPC。 BC newBC new,AOVAOV BANZ loop,BANZ loop,* *AR2-AR2-B nextB nextBACC ABACC A512调用和返回调用和返回 转移前,原程序的下转移前,原程序的下条指令的地址被压入条指令的地址被压入堆栈,而在返回时则堆栈,

34、而在返回时则将这个地址弹出至将这个地址弹出至PCPC,使被中断了的原程序使被中断了的原程序能继续执行。能继续执行。 当采用调用指令进当采用调用指令进行子程序或函数调行子程序或函数调用时,用时,DSPDSP中断当中断当前运行的程序,转前运行的程序,转移到程序存储器的移到程序存储器的其它地其它地址址继续运行。继续运行。功能功能方法方法无条件调用与返回无条件调用与返回有条件调用与返回有条件调用与返回带延迟带延迟不带延迟不带延迟52RC cond CALL sub CALA srcCC sub , cond RET RETE RETF533条件指令中的条件判断条件指令中的条件判断54多重条件判断多重条

35、件判断 BC BC pmadpmad,condcond ,condcond ,condcond相与关系相与关系相或关系相或关系BC BC pmadpmad,condcondBC BC pmadpmad,condcond第第1组组第第2组组A 类类B 类类A 类类B 类类C 类类EQOVTCCBIONEQNOVNTCNCNBIOLT LEQ GT GEQ 55第第1 1组组 例如例如 可以从可以从A A类中选一个条件,同类中选一个条件,同时可以从时可以从B B类中选择一个条件。类中选择一个条件。但是不能从同一类中选择两但是不能从同一类中选择两个条件。个条件。另外,两种条件测试的累加另外,两种条件

36、测试的累加器必须是同一个。器必须是同一个。可以同时测试可以同时测试AGTAGT和和AOVAOV,但,但不能同时测试不能同时测试AGTAGT和和BGTBGT。 BC BC pmadpmad,AGTAGT,AOVAOVBC BC pmadpmad,AGTAGT,BOVBOV56第第2 2组组 例如例如 可以在可以在A A、B B、C C三类中各选三类中各选择一个条件,但不能从同择一个条件,但不能从同一类中选择两个条件一类中选择两个条件 BC BC pmadpmad,TCTC,C C,BIOBIOBC BC pmadpmad,NTCNTC,TCTC,NBIONBIO57特特例例如果条件分支转移出去的

37、地方只有如果条件分支转移出去的地方只有1 12 2字的字的程序段,则可以用一条单周期条件执行指令程序段,则可以用一条单周期条件执行指令(XCXC)来代替分支转移指令:)来代替分支转移指令:XC nXC n,condcond ,condcond ,condcond当当n=1n=1,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此条件指令后的个字指令。条件指令后的个字指令。当当n=2n=2,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此指 令 后 的指 令 后 的 1 1 个 双 字 指 令 或 者个 双 字 指 令 或 者 2 2 条 单条 单字指令。字指令。58例例3-3

38、 编写计算编写计算 的主要程序部分。的主要程序部分。 . .bssbss x,4 x,4 ;为;为X X建立建立4 4个单元,个单元, ;放置;放置X1X1、X2X2、X3X3、X4X4 . .bssbss y,1 y,1 ;为;为Y Y建立建立1 1个单元,放置个单元,放置Y Y STM #xSTM #x,AR1 AR1 ;将;将X1X1的地址传给的地址传给AR1AR1 STM #3STM #3,AR2 AR2 ;将循环次数;将循环次数3 3传给传给AR2AR2 LD #0LD #0,A A ;对;对A A清零清零loop:ADDloop:ADD * *AR1+AR1+,A A ;对;对X1

39、X1、X2X2、X3X3、X4X4循环循环 ;累加,结果放;累加,结果放A A中中 BANZ loop, BANZ loop, * *AR2- AR2- ;检查循环是否应结束;检查循环是否应结束 STL ASTL A,y y ;将累加结果存入;将累加结果存入Y Y中中41iixy594单条指令的重复操作单条指令的重复操作 利用利用RPT和和RPTZ可可重复执行其后的一条重复执行其后的一条指令。指令。重复的次数是指令操重复的次数是指令操作数加作数加1 1,这个值保,这个值保存在存在1616位的重复计数位的重复计数寄存器(寄存器(RCRC)中。)中。实现实现60特点特点1 1RCRC内容不能编程设

40、置,内容不能编程设置,只能由重复指令(只能由重复指令(RPTRPT和和RPTZRPTZ)中的操作数加载。)中的操作数加载。操作数操作数n n的最大值为的最大值为65 65 535535,最大重复执行次数,最大重复执行次数为为65 535+165 535+1。 一旦重复指令被取指、一旦重复指令被取指、译码,直到重复循环完译码,直到重复循环完成以前,对所有的中断成以前,对所有的中断(包括(包括NMI,但不包括,但不包括RS)均不响应。)均不响应。61重复过程重复过程当当RPTRPT指令执行时指令执行时:首先把循环的次数装入循环计数器(首先把循环的次数装入循环计数器(RCRC),),其循环次数其循环

41、次数n n由一个由一个1616位单数据存储器操作数位单数据存储器操作数 SmemSmem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定。这样,给定。这样, 紧接着的下一条指令会循环执行紧接着的下一条指令会循环执行n+1n+1次。次。循环,循环,RCRC在执行减在执行减1 1操作时不能被访问。操作时不能被访问。注意:注意:该循环内不能套用循环。该循环内不能套用循环。 当当RPTZRPTZ指令执行时指令执行时:对目的累加器对目的累加器dstdst清清0 0, 循环执行下一条指令循环执行下一条指令n+1n+1次。次。 62例例3-5 利用单条指令的重复操作对数组利用单条指令的重

42、复操作对数组x5=0 x5=0,0 0,0 0,0 0,00进行初始化。进行初始化。. .bssbss x,5 x,5 ;为数组;为数组x x分配分配5 5个存储单元个存储单元STM #x,AR1 STM #x,AR1 ;将;将x x的首地址赋给的首地址赋给AR1AR1LD #0,A LD #0,A ;对;对A A清零清零RPT #4 RPT #4 ;设置重复执行下条指令;设置重复执行下条指令5 5次次STL A,STL A,* *AR1+AR1+;对;对x5x5各单元清零各单元清零或者或者. .bssbss x,5 x,5STM #x,AR1STM #x,AR1RPTZ A,#4RPTZ A

43、,#4;对;对A A清零并设置重复执行下条指令清零并设置重复执行下条指令5 5次次STL A,STL A,* *AR1+AR1+63特点特点5块重复操作块重复操作 利用利用C54xC54x内部的块重复计数器(内部的块重复计数器(BRCBRC,加载值,加载值可为可为0 065 53565 535)、块重复起始地址寄存器)、块重复起始地址寄存器(RSARSA)、块重复结束地址寄存器()、块重复结束地址寄存器(REAREA)与程)与程序块重复指令序块重复指令RPTBRPTB,可对紧随,可对紧随RPTBRPTB、由若干条、由若干条指令构成的程序块进行重复操作。指令构成的程序块进行重复操作。功能功能使用

44、使用RPTBRPTB指令将重复操作的范围扩大到指令将重复操作的范围扩大到64K64K长长度的循环回路度的循环回路 注意注意1.1.RPTRPT指令一旦执行,不会停止操指令一旦执行,不会停止操作,即使有中断请求也不响应;作,即使有中断请求也不响应;2.RPTB2.RPTB指令可以响应中断;指令可以响应中断;64u块程序重复指令块程序重复指令RPTBRPTB的操作数是循环回路的结束的操作数是循环回路的结束地址;地址;u其下条指令就是重复操作的内容;其下条指令就是重复操作的内容;u在使用在使用RPTB之前之前必须先用必须先用STMSTM指令将所规定的迭指令将所规定的迭代次数加载到块重复计数器(代次数

45、加载到块重复计数器(BRCBRC)中。)中。u单条重复指令执行时关闭所有可屏蔽中断,而块单条重复指令执行时关闭所有可屏蔽中断,而块重复操作执行期间可以响应中断。重复操作执行期间可以响应中断。 65 . .bssbss x,5x,5start: start: LD LD #1,16,B#1,16,B STM STM #4,BRC#4,BRC STM STM #x,AR4#x,AR4 RPTB RPTB next-1next-1 ADD ADD * *AR4,16,B,AAR4,16,B,A STH STH A,A,* *AR4+AR4+next: next: LD LD #0,B#0,B例例3-

46、6对数组对数组x5x5中的每个元素加中的每个元素加1 1。66对寄存器的占用对寄存器的占用6循环的嵌套循环的嵌套 执行执行RPTRPT指令时指令时占用占用RCRC寄存器(重复计数器);寄存器(重复计数器);执行执行RPTBRPTB指令时要用到指令时要用到BRCBRC、RSARSA和和RSERSE寄存器。寄存器。只有只有一套块重复寄存器,一套块重复寄存器,故故块重复操作不能嵌套。块重复操作不能嵌套。 由于由于RPTRPT与与RPTBRPTB两者用了不同的寄存器,因此两者用了不同的寄存器,因此RPTRPT指指令可以嵌套在令可以嵌套在RPTBRPTB指令指令的循环的循环中,实现循环的嵌套。中,实现循

47、环的嵌套。执行执行BANZBANZ指令指令只占用辅助寄存器只占用辅助寄存器ARxARx。不会与不会与RPT RPT RPTBRPTB指令指令相冲突。相冲突。嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用参与嵌套循环的寄存器不能重复使用 67图3-3 一个三重循环嵌套结构68第四节第四节 指令系统概述指令系统概述TMS320C54xTMS320C54x的指令系统分助记符形的指令系统分助记符形式和代数式形式两种。式和代数式形式两种。共有指令共有指令129129条,由于操作数的寻址条,由于操作数的寻址方式不同,派生至方式不同,派生至205205条。条。69操作码操作码 源操作数源操作数目的操作数目

48、的操作数704.14.1 指令系统中的符号指令系统中的符号 序号序号符符 号号含含 义义1A累加器累加器A2ALU算术逻辑运算单元算术逻辑运算单元3AR泛指通用辅助寄存器泛指通用辅助寄存器4ARx指定某一辅助寄存器指定某一辅助寄存器AR0AR75ARPST0中的中的3 3位辅助寄存器指针位辅助寄存器指针6ASMST1中的中的5 5位累加器移位方式位位累加器移位方式位-16157B累加器累加器B8BRAFST1中的块重复操作标志中的块重复操作标志9BRC块重复操作寄存器块重复操作寄存器10BITC或或bit_code用于测试指令用于测试指令, ,指定数据存储器单元中的哪指定数据存储器单元中的哪一

49、位被测试一位被测试, ,取指范围取指范围: :01571序号序号符符 号号含含 义义11C16ST1中的双中的双1616位位/双精度算术运算方式位双精度算术运算方式位12CST0中的进位位中的进位位13CC2 2位条件码位条件码(0 CC 3)14CMPTST1中的中的ARP修正方式位修正方式位15CPLST1中的直接寻址编辑标志位中的直接寻址编辑标志位16cond表示一种条件的操作数,用于条件执行指令表示一种条件的操作数,用于条件执行指令17d, ,D延时选项延时选项18DABD地址总线地址总线19DARDAB地址寄存器地址寄存器20dmad1616位立即数数据存储器地址位立即数数据存储器地

50、址(065535)72序号序号符符 号号含含 义义21Dmem数据存储器操作数数据存储器操作数22DPST0中的数据存储器页指针中的数据存储器页指针(0 DP 511)23dst目的累加器目的累加器(A和和B)24dst_与与dst相反的目的累加器相反的目的累加器25EABE地址总线地址总线26EAREAB地址总线地址总线27extpmad2323位立即程序存储器地址位立即程序存储器地址28FRCTST1中的小数方式位中的小数方式位29hi(A)累加器的高阶位累加器的高阶位(AH或或BH)30HMST1中的保持方式位中的保持方式位73序号序号符符 号号含含 义义31IFR中断标志寄存器中断标志

51、寄存器32INTMST1中的中断屏蔽位中的中断屏蔽位33K少于少于9 9位的短立即数位的短立即数34k33 3位立即数位立即数(0 k3 7)35k55 5位立即数位立即数(-16 k5 15)36k99 9位立即数位立即数(0 k9 511)37lk1616位长立即数位长立即数38Lmem利用长字寻址的利用长字寻址的3232位单数据存储器操作数位单数据存储器操作数39Mmr,MMR存储器映像寄存器存储器映像寄存器40MMRx,MMRy 存储器映像寄存器存储器映像寄存器,AR0AR7或或SP74序号序号符符 号号含含 义义41nXC指令后面的字数指令后面的字数,取取1或或242N指定状态寄存器

52、指定状态寄存器,N=0为为ST0,N=1为为ST143OVAST0中的累加器中的累加器A溢出标志溢出标志44OVBST0中的累加器中的累加器B溢出标志溢出标志45OVdst指定目的累加器指定目的累加器(A或或B)的溢出标志的溢出标志46OVdst_指定与指定与Ovdst相反的目的累加器的溢出标志相反的目的累加器的溢出标志47OVsrc指定源累加器指定源累加器(A或或B)的溢出标志的溢出标志48OVMST1中的溢出方式位中的溢出方式位49PA1616位立即端口地址位立即端口地址(0 PA 65535)50PAR程序存储器地址寄存器程序存储器地址寄存器7576序号序号符符 号号含含 义义61RSA

53、块重复起始地址寄存器块重复起始地址寄存器62SBIT用于指定状态寄存器位的用于指定状态寄存器位的4 4位地址位地址(015)63SHFT4 4位移位值位移位值(015)64SHIFT5 5位移位值位移位值(-1615)65Sind间接寻址的单数据存储器操作数间接寻址的单数据存储器操作数66Smem1616位单数据存储器操作数位单数据存储器操作数67SP堆栈指针寄存器堆栈指针寄存器68src源累加器源累加器(A或或B)69ST0,ST1状态寄存器状态寄存器0 0,状态寄存器状态寄存器1 170SXMST1中的符号扩展方式位中的符号扩展方式位77序号序号符符 号号含含 义义71T暂存器暂存器72T

54、CST0中的测试中的测试/控制标志控制标志73TOS堆栈顶部堆栈顶部74TRN状态转移寄存器状态转移寄存器75TS由由T寄存器的寄存器的50位所规定的移位数位所规定的移位数(-1631)76uns无符号数无符号数77XFST1中的外部标志状态位中的外部标志状态位78XPC程序计数器扩展寄存器程序计数器扩展寄存器79Xmem1616位双数据存储器操作数位双数据存储器操作数,用于双数据操作数指令用于双数据操作数指令80Ymem1616位双数据存储器操作数位双数据存储器操作数,用于双数据操作数指令用于双数据操作数指令和单数据操作指令和单数据操作指令782.2.指令操作码符号和缩略语指令操作码符号和缩

55、略语序号序号符符 号号含含 义义1A数据存储器的地址位数据存储器的地址位2ARx指定辅助寄存器的指定辅助寄存器的3 3位数区位数区3BITC4 4位码区位码区4CC2 2位条件码区位条件码区5CCCC CCCC8 8位条件码区位条件码区6COND4 4位条件码区位条件码区7D目的累加器位目的累加器位。D=0为累加器为累加器A,D=1为累加器为累加器B8I寻址方式位寻址方式位。 I=0直接寻址直接寻址,I=1间接寻址间接寻址9K少于少于9 9位的短立即数区位的短立即数区10MMRx, ,MMRy指定映像寄存器中的指定映像寄存器中的4 4位数位数(08)792.2.指令操作码符号和缩略语指令操作码

56、符号和缩略语序号序号符符 号号含含 义义11N单独一位数单独一位数12NN决定中断形式的决定中断形式的2 2位数位数13R舍入选项位。舍入选项位。R=0不带舍入指令不带舍入指令,R=1对结果舍入处理对结果舍入处理14S源累加器位。源累加器位。S=0为累加器为累加器A,S=1为累加器为累加器B15SBIT状态寄存器的状态寄存器的4 4位位号数位位号数16SHFT4 4位移位数区位移位数区(015)17SHIFT5 5位移位数区位移位数区(-1615)18X数据存储器位数据存储器位19Y数据存储器位数据存储器位20Z延迟指令位。延迟指令位。Z=0无延迟操作无延迟操作,Z=1带延迟操作带延迟操作80

57、81包括:包括:82(1)加法指令加法指令序号序号指指 令令功功 能能说说 明明1ADD ADD Smem Smem , , srcsrcsrcsrc=srcsrc+SmemSmem操作数加至累加器操作数加至累加器2ADD ADD Smem Smem , TS, TS,srcsrcsrcsrc=srcsrc+SmemSmemTSTS操作数移位后加至累加器操作数移位后加至累加器3ADD ADD SmemSmem ,16,16 , ,srcsrc,dstdst dstdst=srcsrc+SmemSmem1616操作数左移操作数左移1616位加至累加器位加至累加器4ADD ADD SmemSmem

58、,SHIFT,SHIFT,srcsrc,dstdst dstdst=srcsrc+SmemSmem SHIFTSHIFT操作数移位后加至累加器操作数移位后加至累加器5ADD ADD XmemXmem ,SHFT,SHFT , ,src src srcsrc=srcsrc+XmemXmem SHFTSHFT操作数移位后加至累加器操作数移位后加至累加器6ADD ADD XmemXmem , ,YmemYmem , ,dstdstdstdst=XmemXmem1616+YmemYmem1616两操作数分别左移两操作数分别左移1616位后相加送位后相加送至累加器至累加器7ADD ADD # #lk k

59、,SHFT,SHFT,srcsrc,dstdst dstdst=srcsrc+#lk SHFTSHFT长立即数移位后加至累加器长立即数移位后加至累加器8ADD ADD # #lk k,16,16,srcsrc,dstdst dstdst=srcsrc+#lk 1616长立即数左移长立即数左移1616位加至累加器位加至累加器9ADD ADD srcsrc,SHIFT,SHIFT,dstdst dstdst=dstst+srcsrc SHIFTSHIFT累加器移位后相加累加器移位后相加10ADD ADD srcsrc,ASM,ASM,dstdst dstdst=dstst+srcsrc ASMAS

60、M累加器按累加器按ASMASM移位后相加移位后相加11ADDC ADDC Smem Smem , , srcsrcsrcsrc=srcsrc+SmemSmem+C+C操作数带进位加至累加器操作数带进位加至累加器12ADDM #ADDM #lk k, , SmemSmemSmemSmem=SmemSmem+#lk长立即数加至存储器长立即数加至存储器13ADDS ADDS Smem Smem , , srcsrcsrcsrc=srcsrc+uns(SmemSmem) )操作数符号位不扩展加至累加器操作数符号位不扩展加至累加器83(2)(2)减法指令减法指令序号序号指指 令令功功 能能说说 明明1S

温馨提示

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

评论

0/150

提交评论