[信息与通信]TMS320C54X DSP芯片的指令系统.ppt

上传人:音乐台 文档编号:2000673 上传时间:2019-01-30 格式:PPT 页数:126 大小:1.02MB
返回 下载 相关 举报
[信息与通信]TMS320C54X DSP芯片的指令系统.ppt_第1页
第1页 / 共126页
[信息与通信]TMS320C54X DSP芯片的指令系统.ppt_第2页
第2页 / 共126页
[信息与通信]TMS320C54X DSP芯片的指令系统.ppt_第3页
第3页 / 共126页
亲,该文档总共126页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[信息与通信]TMS320C54X DSP芯片的指令系统.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]TMS320C54X DSP芯片的指令系统.ppt(126页珍藏版)》请在三一文库上搜索。

1、第三章 TMS320C54X DSP芯片的指令系统,指令的表示方法 寻址方式 指令系统,目录,3.2 指令的表示方法,指令的两种表示法: 助记符形式和代数表达式 助记符形式: 代数表达式:MPY *(volume),B B=T*(volume) ADD #1h,5,A,B B=A+#1h5 语句格式: 由操作码和操作数组成 标号:指令操作数列表 ;注释,编写程序一般规则(P138),所有语句必须以标号、空格、星号或分号开始; 所有包含汇编伪指令的语句必须在一行完全指定; 可以选择带有标号,若使用标号,则标号必须从第一列开始,但指令域一定不能从第1列开始;,程序中可以有注释: 注释开始在第一列时

2、,前面需标上星号或分号; 但在其他列开始的注释前面只能标上分号。 操作数域: 立即数,寄存器,程序空间地址,数据空间地址或I/O地址。 立即数:#为前缀,间接寻址:*为前缀。,汇编语言源程序举例,* * * * * * * * * * * * * * * * * * example.asm * * * * * * * * * * * * * * * * * * .title “example.asm” .mmregs STACK .usect “STACK”,10H .bss a,4 .bss x,4 .bss y,1,汇编语言源程序举例,.def start .data table: .wo

3、rd 1,2,3,4 .word 8,6,4,2 .text start: STM #0,SWWSR STM #STACK+10H,SP STM #a,AR1 RPT #7 MVPD table,*AR1+,CALL SUM end: B end SUM: STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,y RET .end,3.2.1 指令系统中的符号,符号与缩写 P82页:表3.2.1 如:MVPD pmad,Smem MPY Xmem,Ymem,dst 程序存储器操作数(存储器地址): Pmad,extpmad,Pmem 数

4、据存储器操作数: dmad, Dmem, Smem, Sind, Xmem, Ymem, Lmem(32位),累加器: Src,dst,dst_,A,B 移位值: ASM,TS,SHFT,SHIFT 立即数: K,k3,k5,k9,lk 运算符及其优先级,表3.2.2,3.1 寻址方式,两种:数据寻址和程序寻址 数据寻址(7种基本方式) 立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址 表3.1.1:,程序寻址 程序存储器:存放程序代码,系数表和立即数 程序地址生成器(PAGEN)产生地址,再加载到PAB总线 P47-48,数据寻址(立即数寻址),立即数

5、寻址(K,k3,k5,k9,lk) 短立即数:3,5,8,9位(单字指令中) 长立即数:16位(双字指令中), 立即数: #前缀 LD #80h, A RPT #99 ;单字指令 RPT #7DFFH ;双字指令,数据寻址(绝对地址寻址),指令中包含16位地址,寻址存储单元; 至少为双字长指令,有四种类型: 数据存储器地址(dmad)寻址 操作数存放于数据存储单元,确定该单元地址,主要指令: MVDK Smem, dmad ;dmad=Smem MVDM dmad, MMR MVKD dmad, Smem MVMD MMR, dmad,例:MVDM 2000H,T RPT #19 ;数据块的复

6、制 MVMD AR2,SAMPLE ;SAMPLE为常数表示 ;的地址 MVKD 0200H,*AR2+,程序存储器地址(pmad)寻址 确定程序存储器中的一个地址 主要指令: FIRS Xmem, Ymem, pmad MACD Smem, pmad, src MACP Smem, pmad, src MVDP Smem, pmad MVPD pmad, Smem,例: MVPD TABLE, *AR7- MACP *AR3-,COEFFS,A,数据寻址(绝对地址寻址),端口地址(PA)寻址(符号或常数) 确定外部I/O端口的地址 主要指令: PORTR PA, Smem PORTW Sme

7、m, PA 例: PORTR FIFO, *AR5 PORTW *AR1+, FIFO1,*(lk)寻址 用符号或常数指明数据存储器中的一个地址 不能与循环指令(RPT,RPTZ)一起使用! 例: STL A,*(y) STH A, *(y1) LD *(PN),A,数据寻址举例(1),x .set 2000h portr 20h,*(x) stm #x,ar1 ld #100,b macp *ar1,100h,b,累加器寻址,对存放数据的程序存储器寻址 将累加器的内容作为地址(16位或23位)去访问程序存储器单元 仅两条指令:WRITA和READA 循环执行,可实现数据块的传送。,READA

8、 Smem 将累加器A所确定的程序存储器单元中的值传送到数据存储单元。 如:若A=00 0000 0100h, AR1=0200h,执行下列指令: READA *AR1,WRITA Smem 将Smem所确定的数据存储单元中的值传送到累加器A所确定的程序存储器单元。 如: STM #0300H,AR2 LD #18000H,A WRITA *AR2,直接寻址,由基地址(DP或SP提供)和低7位偏移地址(指令中提供)共同构成16位数据存储器地址。 64K的数据空间: 分成512页,每页128个单元 DP取值范围:0511 7位偏移地址范围:0127 不改变基地址,可寻址连续的128个单元 DP复

9、位值为0,直接寻址,直接寻址指令代码的格式 图3.1.1 优点:单字指令 基地址由DP还是SP提供? 由CPL(ST1中)标志位的值决定 CPL=0:基地址由DP(9位)提供 CPL=1:基地址由SP(16位)提供,16位数据地址的形成过程: CPL=0时,9位DP值为高位,指令中7位偏移值为低位,构成16位数据存储器地址。 CPL=1时,16位SP的值与指令中7位偏移值相加,形成16位数据存储器地址。,16位数据地址的形成过程,直接寻址举例(1),基地址由DP提供: ld #4,dp ; 页指针指向数据M第4页, ;片内数据区DARAM st #1,1 st #2,2 st #3,3 st

10、#4,4,直接寻址举例(2),基地址由SP提供: STM #4000H ,SP SSBX CPL ST #9876h, 3,直接寻址举例(3),.bss x,1 . LD #x,DP ST #1000H,x ST #2000H,x+1 ST #3000H,x+2 ,数据寻址举例(2),y .set 007ah ld #40h,dp st #1111h,*(y) mvkd 7ah,7ah,易混淆的问题!,LD #40H,DP STL A,60H ;60H:数据存储器2060H单元 STM #2000H,AR1 MVDK *AR1,60H ; 60H:数据存储器0060H单元 MVDP *AR1,

11、60H ;60H:程序存储器0060H单元,间接寻址,按照辅助寄存器中的地址访问数据存储单元; 8个辅助寄存器(16位):AR0AR7; 非常灵活:方便访问连续的存储器块(递增,递减,变址等); 两个辅助寄存器算术单元ARAU0和ARAU1;,间接寻址,单操作数间接寻址: 一条指令中访问一个数据存储器单元 寻址灵活,4位方式域定义单操作数间接寻址类型,表3.1.5 两种特殊的寻址:循环寻址和位倒序寻址方式 如:AR2=1000H ST #1000H, *AR2,间接寻址,间接寻址,说明:,*ARx+与*+ARx的区别 *ARx+,*ARx-的增减量: 16位字:增/减量为1 32位字:增/减量

12、为2 *ARx-0B 0:AR0 B:位反转寻址的标志,说明:,*ARx-0% %:循环寻址的标志 *ARx(lk)与*+ARx(lk)的区别,双操作数间接寻址,一条指令中同时访问两个数据存储器单元。 完成执行2次读操作或1次读和1次并行存储操作。 仅两个二进制位(Xar和Yar)用于选择辅助寄存器。 只能用4个辅助寄存器:AR2AR5,2位方式域(Xmod和Ymod)定义双操作数间接寻址类型: 表3.1.9 仅4种类型 例如: MAC Xmem, Ymem, src,dst MAC *AR2+,*AR3+,A,间接寻址举例:,STM #2000h,AR2 ST #1234h,*AR2 STM

13、 #2010h,AR3 ST #5678h,*AR3,STM #4000h,AR2 STM #-1,AR0 MVPD 2000H,*AR2+ ;MVPD 2000H,*+AR2 ;MVPD 2000H,*AR2+0 ;MVPD 2000H,*+AR2(1000h) ;MVPD 2000H,*AR2(1000h),循环寻址,循环缓冲区:卷积,自相关,FIR滤波器等算法中常用。 例如:N=7的FIR滤波器的循环缓冲区,例:FIR滤波器,COEF,MACD *AR2-,COEF,A,ar2,循环寻址是实现循环缓冲区的关键。 用%表示循环寻址: ARx+%、ARx-% ARx+0%、ARx-0% 参数

14、:长度寄存器BK,有效基地址EFB,尾基地址EOB,循环寻址,循环缓冲区的起始地址最低N (NR,R为循环缓冲区长度)位必须为0: 若R=31, 则N=5 若R=32, 则N=6 循环寻址时,首先要指定一个辅助寄存器ARx指向循环缓冲区,并实现循环缓冲区首尾单元相邻。,循环寻址算法:,循环寻址举例:,(BK)=8,(AR1)=0060H,用”*AR1+%”间接寻址. 第1次间接寻址后,AR1指向0061H单元; 第2次间接寻址后, AR1指向0062H单元; 第7次间接寻址后,AR1指向0067H单元; 第8次间接寻址后,AR1又回到0060H单元.,循环寻址举例:,(BK)=10,N=4,(

15、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,位反转寻址,通常,在进行FFT算法之前,先让输入数据实现位码倒置。 位倒序寻址用B表示,典型: ARx+0B,

16、16点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=206Dh 即X(12),第4次*AR2+0B寻址 ; AR2=2062h 即X(

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

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

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

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

21、和测试指令等 程序控制指令:包括跳转、调用、中断、返回、重复 并行操作指令: 重复操作指令:,3.3.1 数据传送指令,指从存储器中将源操作数传送到目的操作数所指定的存储器中。 数据传送指令包括: 装载指令: 存储指令: 混合装载和存储指令:,装载指令,装载指令,将立即数或存储器内容赋值给目的寄存器。 目的寄存器主要有:dst、T、DP、ASM、ARP等 典型: LD Smem, dst LD #k, dst LD Smem, T LD Smem, DP LD #k5,ASM LDM MMR, dst,举例:,给累加器赋值: 例1、2、4、6 注:SXM、OVB、OVM等标志位的影响 给其他寄

22、存器赋值 DP、T、ASM等 长字指令:DLD Lmem,dst 例:DLD *AR3+,B ;增量为2,给DP赋值: .bss x,1 ;x=2000h .text start: ld #x,dp ;dp=40h stm #0200h,ar4 st #0fedch,*ar4 ld *ar4,dp ;dp=0dch,存储指令,将源操作数或立即数存入指定存储器或MMR。 目的操作数:Smem,Lmem,MMR等,存储指令,条件存储指令,存储指令,ST:源操作数为寄存器或立即数 例1、3 STH/STL:源操作数为累加器 例1、2 STM/STLM:目的操作数为MMR STM:例1、2 STLM:

23、不管页指针DP或ARx的高9位为何值,有效地址高9位都清零。访问数据页第0页,例1、2。,DST: 长字 CMPS: CSSU电路,混合装载和存储指令,在存储器之间或内部传送数据 表3.3.3 缩写:Smem,Xmem,Ymem,dmad,pmad,PA, 包括I/O端口绝对地址寻址 包括累加器寻址 例:,算术运算指令,加法指令 ADD,ADDC(带进位,如32位扩展精度加法),ADDM(长立即数),ADDS(无符号数) 减法指令 SUB,SUBB(带借位),SUBC(条件减),SUBS(无符号),举例,例:使用ADD指令完成加法 LD TEMP1 ,A ;TEMP1A ADD TEMP2,A

24、 ;TEMP2+AA STL A ,TEMP3 (STH A,TEMP4 ) ;将结果TEMP3,TEMP4,例:用ADDS实现32位数据装入 LD 4 , DP ;设置DP LD 60h , 16 ,A ;将(0260H)装入A的高16位 ADDS 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 ST

25、H B ,*(2062H) ;相减的结果(16位)(2062H),乘法指令 MPY,MPYR(凑整),MPYA(A的高端),MPYU(无符号),SQUR(平方) 后缀R和A,状态标志位FRCT,另一乘数在T寄存器。 乘加和乘减指令 乘加:MAC MACA MACD MACP MACSU 乘减:MAS MASA SQURA SQURS,乘法指令,乘法指令举例,MPY 13, A MPY *AR2, *AR4+0%, B MPY #0FFFEh, A MPYR 0, B MPYA *AR2 MPYA B MPYU *AR0, A SQUR A, B,乘法-累加指令举例,区别:凑整 MAC *AR5

26、+, A MACR *AR5+, A 区别: MAC *AR5+, *AR6+,A, B MACR *AR5+, *AR6+,A, B 存储器延迟:(Smem+1)=Smem MACD *AR3, COEFFS, A MACP *AR3, COEFFS, A,乘法-减法指令举例,MAS *AR5+, A MAS *AR5+, *AR6+, A, B SQURA *AR3+, A SQURS *AR3+, A,算术运算指令,长操作数,长字指令(共6条) DADD,DSUB,DRSUB,DADST,DSAD,DSUBT C16(ST1)决定指令工作方式,0:双精度方式;1:双字方式 Lmem:两个

27、连续单元,低地址存放高16位字,高地址存放低16位字 *AR3-(减量为2),特殊应用指令,ABDST:两矢量的距离 ABS:绝对值 CMPL:累加器的反码 DELAY:存储器延迟 EXP,NORM:累加器归一化 FIRS、LMS 、POLY MAX,MIN,NEG RND,SAT, SQDST等,特殊指令举例:,DELAY *AR3 EXP B与NORM B联合使用 MAX A SAT B,逻辑运算指令,分为:与、或、异或、移位、测试 与 AND,ANDM(立即数) 或 OR,ORM (立即数) 异或 XOR,XORM (立即数),循环移位 ROL:带进位位的循环左移, C-D0, D31-

28、C,保护位清零。 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, 5, B SFTL A, 5, B 例2: SFTA B, +5 SFTL B, +5,测试指令,BIT:测试指定位 BITF:测试指定的多个位 BITT:测试T指定位 CMPM:比较两数是否相等 如:

29、CMPM *AR4+, 0404h CMPR:比较ARx和AR0,程序控制指令,长转移,长调用:前缀F(PC,XPC) 延时转移:后缀D 1)分支指令 B,BACC,BANZ,BC,FB,FBACC 2)调用指令 CALA,CALL,CC,FCALA,FCALL 3)中断指令 INTR k,TRAP k,4)返回指令 RET,RETE,RETF,RC,FRET,FRETE 5)堆栈操作指令 FRAME K,POPD,POPM,PSHD,PSHM 6)其他程序控制指令 IDLE,MAR,NOP,RESET,RSBX,SSBX,XC,分支指令,无条件转移 B: BACC:无条件转移到ACC指定的地

30、址 条件转移 BANZ:当ARx不为0时转移 如:BANZ LOOP,*AR2-,条件指令,BC:条件转移 CC:条件调用 RC:条件返回 例: RC TC ;TC=1,则返回 CC SUB1,BNEQ ;B不为0,则调用SUB1 BC NEXT,AGT,AOV ;A0并且溢出(两条件相与),则转到NEXT,分支指令,调用指令,中断指令,返回指令,堆栈操作指令,其他程序控制指令,RSBX:指定标志位清0 SSBX:指定标志位置1 XC:条件执行指令 如果满足条件,则执行紧接的n条单字指令 n:1或2 注:条件的修改,例: SUBC DEN,A XC 1,BLT NEG A STL A,QUOT

31、,其他程序控制指令,重复指令,重复指令: RPT,RPTB,RPTZ 可省去跳转,条件判断,流水线打断等,高效率循环执行指令 RPT,RPTZ:可将多周期指令变为单周期指令(如, MVPD) RPT:单指令重复 循环计数器RC,RPTB:块重复指令 几个寄存器:BRC,RSA,REA,标志位BRAF RPTZ: 多重循环,合理安排可减少执行时间 最内层循环:RPT或RPTZ 次内层循环:RPTB 其余层循环:BANZ,并行操作指令,1)并行装入和存储指令 ST LD 2)并行装入和乘法指令 LD MAC,LD MAS 3)并行存储和加减指令 ST ADD,ST SUB 4)并行存储和乘法 ST MAC,ST MAS,ST MPY,并行装载和存储指令,并行指令,所有并行指令均为单字指令 多总线同时工作 注意移位 ST LD DB总线和EB总线同时工作 先读后写原则,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1