TMS320C54XDSP芯片的指令系统课件_第1页
TMS320C54XDSP芯片的指令系统课件_第2页
TMS320C54XDSP芯片的指令系统课件_第3页
TMS320C54XDSP芯片的指令系统课件_第4页
TMS320C54XDSP芯片的指令系统课件_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

1、指令的表示方法寻址方式指令系统目录3.2 指令的表示方法指令的两种表示法:助记符形式和代数表达式 助记符形式:代数表达式:MPY *(volume),B B=T*(volume) ADD #1h,5,A,B B=A+#1hR,R为循环缓冲区长度)位必须为0:若R=31, 则N=5 若R=32, 则N=6循环寻址时,首先要指定一个辅助寄存器ARx指向循环缓冲区,并实现循环缓冲区首尾单元相邻。循环寻址算法:循环寻址举例:(BK)=8,(AR1)=0060H,用”*AR1+%”间接寻址.第1次间接寻址后,AR1指向0061H单元;第2次间接寻址后, AR1指向0062H单元; 第7次间接寻址后,AR

2、1指向0067H单元;第8次间接寻址后,AR1又回到0060H单元.循环寻址举例:(BK)=10,N=4,(AR1)=0100H,用”*+AR1(8)%”间接寻址: STM #10,BK LD *+AR1(8)%,A ;寻址0108H单元 STL A,*+AR1(8)% ;寻址0106H单元位倒序寻址主要用于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位反转寻址通常,

3、在进行FFT算法之前,先让输入数据实现位码倒置。位倒序寻址用B表示,典型: ARx+0B16点FFT的位倒序寻址实现方法举例:设AR2=2060h,作为基地址,指向X(0)的存储单元。一般:AR0取FFT长度的一半,即AR0=0008h用*AR2+0B实现位倒序寻址:从左向右加。例如: STM #8,AR0 RPT #15 MVDD *AR2+0B,*AR4+ ;AR2:输入数据X的首地址 ; AR4 :位码倒置后输入数据X的首地址第1次*AR2+0B寻址 ;AR2=2068h, 即X(8)第2次*AR2+0B寻址 ;AR2=2064h 即X(4)第3次*AR2+0B寻址 ; AR2=206D

4、h 即X(12) 第4次*AR2+0B寻址 ; AR2=2062h 即X(2)第5次*AR2+0B寻址 ; AR2=206ah 即X(10) 存储器映射寄存器寻址用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。特点:寻址速度快,对MMR执行写操作开销小;可直接利用MMR的名称快速访问数据存储空间的第0页资源;只能寻址数据空间的第0页单元。仅有8条指令堆栈寻址常用于中断和调用子程序过程“后进先出”的原则堆栈:保存PC值和保存数据参数堆栈存放数据:从高地址向低地址增长,SP总是指向堆栈中最后存入的数据单元入栈:先(SP)-1,数据再入栈.出栈:数据出栈,SP+1.4条指令:堆栈寻址举例

5、:PSHM TPSHD *AR3+ ;SP - 1, *AR3所指单元数据入栈POPM TPOPD *AR2 ;数据出栈,存入*AR2所指向单元,SP+1寻址方式举例 DDAT1 .set 1000H PDAT1 .set 2000H RSBX CPL LD #1234h,A ;立即数寻址 ST #5678h,*(DDAT1) ;立即数寻址和绝对地址寻址LD #PDAT1,A READA2H ;立即数寻址,直接寻址(DP指针)和累加器寻址SSBX CPLST #9876h, 3H ;直接寻址(SP指针)RSBX CPLSTM #DDAT1,AR2ST #9876h,*AR2 ;间接寻址MVDK

6、 3H,DDAT1 MVKD DDAT1, 1H ;直接寻址和绝对地址(dmad)寻址MVDP 2H,PDAT1 ;直接寻址和绝对地址(pmad)寻址 STM #8888h,T ;立即数寻址和存储器映射寄存器寻址PSHM TPOPM T ;堆栈寻址和存储器映射寄存器寻址STM #4000h,AR0RPT #29MVPD 1000H,*AR0+ ;程序存储器到数据存储器数据块的复制STM #2000H,AR2 STM #3000H,AR3 LD #0,A RPT #19MAC *AR2+,*AR3+,A STL A,*(y) ;完成20次乘累加操作用循环缓冲区实现FIRSTM #xn+79,AR

7、3STM #h+79,AR4STM #80,BKSTM #-1,AR0PORTR PA1,*(xn)Fir:RPTZ A,#79MAC *AR3+0%,*AR4+0%,ASTH A,*(y)PORTW *(y),PA0PORTR PA1,*AR3+0%3.3 C54X的指令系统共有129条基本指令,包含了6种基本类型的操作:数据传送指令算术运算指令逻辑运算指令程序控制指令并行操作指令重复操作指令数据传送指令:装载、存储、混合装载存储。算术指令:包括加减、乘法、乘累加、乘累减、32位操作数运算指令以及其他一些专用指令逻辑指令:包括与、或、异或、移位和测试指令等程序控制指令:包括跳转、调用、中断、

8、返回、重复并行操作指令:重复操作指令:3.3.1 数据传送指令指从存储器中将源操作数传送到目的操作数所指定的存储器中。数据传送指令包括:装载指令:存储指令:混合装载和存储指令: 装载指令装载指令将立即数或存储器内容赋值给目的寄存器。目的寄存器主要有:dst、T、DP、ASM、ARP等典型:LD Smem, dst LD #k, dstLD Smem, T LD Smem, DPLD #k5,ASM LDM MMR, dst举例:给累加器赋值:例1、2、4、6注:SXM、OVB、OVM等标志位的影响给其他寄存器赋值DP、T、ASM等长字指令:DLD Lmem,dst例:DLD *AR3+,B ;

9、增量为2给DP赋值: .bss x,1 ;x=2000h .text ld #x,dp ld #40h,dp ;dp=40h stm #0200h,ar4 st #0fedch,*ar4 ld *ar4,dp ;dp=0dch存储指令将源操作数或立即数存入指定存储器或MMR。目的操作数:Smem,Lmem,MMR等 存储指令条件存储指令存储指令ST:源操作数为寄存器或立即数例1、3STH/STL:源操作数为累加器例1、2STM/STLM:目的操作数为MMRSTM:例1DST:长字CMPS: CSSU电路,例:混合装载和存储指令在存储器之间或内部传送数据表3.3.3缩写:Smem,Xmem,Ym

10、em,dmad,pmad,PA,包括I/O端口绝对地址寻址包括累加器寻址例:算术运算指令加法指令ADD,ADDC(带进位,如32位扩展精度加法),ADDM(长立即数),ADDS(无符号数)减法指令SUB,SUBB(带借位),SUBC(条件减),SUBS(无符号)举例例:使用ADD指令完成加法 LD TEMP1 ,A ;TEMP1A ADD TEMP2,A ;TEMP2+AA STL A ,TEMP3 (STH A,TEMP4 ) ;将结果TEMP3,TEMP4 例:用ADDS实现32位数据装入 LD 4 , DP ;设置DP LD 60h , 16 ,A ;将(0260H)装入A的高16位 A

11、DDS 61h , A ;(0261H)A的低16位或 DLD 60h , B ;32位数B (C16=0)减法指令 SUB SUBB SUBC减法指令举例 STM 2061H , AR2 STM 2060H , AR3 SUB *AR2+ , *AR3+ , B ; (2061H)左移16位,同时(2060H)也左移16位,然后相减,结果B STH B ,*(2062H) ;相减的结果(16位)(2062H) 乘法指令MPY, MPYR(凑整), MPYA(A(3216), MPYU(无符号), SQUR(平方)后缀R和A,状态标志位FRCT,另一乘数在T寄存器。乘加和乘减指令乘加:MAC

12、MACA MACD MACP MACSU乘减:MAS MASA SQURA SQURS乘法指令乘法指令举例MPY 13, AMPY *AR2, *AR4+0, BMPY #0FFFEh, AMPYR 0, BMPYA *AR2MPYA BMPYU *AR0, ASQUR A, B乘法-累加指令举例区别:凑整MAC *AR5+, AMACR *AR5+, A区别:MAC *AR5+, *AR6+,A, BMACR *AR5+, *AR6+,A, B存储器延迟:(Smem+1)=SmemMACD *AR3, COEFFS, AMACP *AR3, COEFFS, A乘法-减法指令举例MAS *AR

13、5+, AMAS *AR5+, *AR6+, A, BSQURA *AR3+, ASQURS *AR3+, A算术运算指令长操作数,长字指令(共6条)DADD,DSUB,DRSUB,DADST,DSAD,DSUBTC16(ST1)决定指令工作方式,0:双精度方式;1:双字方式Lmem:两个连续单元,低地址存放高16位字,高地址存放低16位字*AR3-(减量为2)特殊应用指令ABDST:两矢量的距离ABS:绝对值CMPL:累加器的反码DELAY:存储器延迟EXP,NORM:累加器归一化FIRS、LMS 、POLYMAX,MIN,NEGRND,SAT, SQDST等特殊指令举例:DELAY *AR

14、3EXP B与NORM B联合使用MAX ASAT B逻辑运算指令分为:与、或、异或、移位、测试与 AND,ANDM(立即数)或 OR,ORM (立即数)异或 XOR,XORM (立即数)循环移位ROL:带进位位的循环左移,CD0, D31C,保护位清零。ROR、ROLTC:条件移位SFTC src算术移位和逻辑移位SFTA、SFTL算术移位SFTA:对累加器的整个40位操作右移:SXM=1,高位符号扩展;SXM=0,高位0填充左移:低位以0填充逻辑移位SFTL:对累加器的低32位操作,高8位填0均不受SXM的影响右移时高位填0左移时低位填0举例:SFTA与SFTL的区别例1:SFTA A,

15、5, BSFTL A, 5, B例2:SFTA B, +5SFTL B, +5测试指令BIT:测试指定位BITF:测试指定的多个位BITT:测试T指定位CMPM:比较两数是否相等如:CMPM *AR4+, 0404hCMPR:比较ARx和AR0程序控制指令长转移,长调用:前缀F(PC,XPC) 延时转移:后缀D1)分支指令 B,BACC,BANZ,BC,FB,FBACC 2)调用指令 CALA,CALL,CC,FCALA,FCALL3)中断指令 INTR k,TRAP k4)返回指令 RET,RETE,RETF,RC,FRET,FRETE5)堆栈操作指令 FRAME K,POPD,POPM,P

16、SHD,PSHM6)其他程序控制指令 IDLE,MAR,NOP,RESET,RSBX,SSBX,XC分支指令无条件转移 B:BACC:无条件转移到ACC指定的地址条件转移BANZ:当ARx不为0时转移如:BANZ LOOP,*AR2-条件指令BC:条件转移CC:条件调用RC:条件返回例: RC TC ;TC=1,则返回CC SUB1,BNEQ ;B不为0,则调用SUB1BC NEXT,AGT,AOV ;A0并且溢出(两条件相与),则转到NEXT 分支指令 调用指令 中断指令 返回指令 堆栈操作指令其他程序控制指令RSBX:指定标志位清0SSBX:指定标志位置1XC:条件执行指令如果满足条件,则执行紧接的n条单字指令n:1或2注:条件的修改例:SUBC DEN,AXC 1,BLT NEG A STL A,QUOT 其他程序控制指令重复指令重复指令: RPT,RPTB,RPTZ可省去跳转,条件判断,流水线打断等,高效率循环执行指令RPT,RPTZ:可将多周期指令变为单周期指令(如, MVPD)RPT:单指令重复循

温馨提示

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

评论

0/150

提交评论