太原理工第三章 DSP的软件结构课件_第1页
太原理工第三章 DSP的软件结构课件_第2页
太原理工第三章 DSP的软件结构课件_第3页
太原理工第三章 DSP的软件结构课件_第4页
太原理工第三章 DSP的软件结构课件_第5页
已阅读5页,还剩168页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章DSP的软件结构,1,学习交流PPT,Introduction,汇编语言程序编写方法 TMS320C54x的寻址方式 TMS320C54x指令的表示方法 TMS320C54x的指令系统 汇编伪指令,2,学习交流PPT,汇编程序语法,TMS320的汇编程序包含汇编指令(伪指令,assembler directives)、汇编语言指令(assembly language instructions)、宏指令(macro directives)和注释(comments)。,3,学习交流PPT,汇编程序源程序格式,label: mnemonic operand list ;comment 标号:

2、助记符 操作数 ;注释 SYM1 .set 2 ;符号SYM1=2 Begin: LD #SYM1, AR1 ;将2装入AR1,4,学习交流PPT,汇编程序语法,所有的语句必须由语句标号、空格、*号或 ;号开头。,语句标号不是必须的,如果用,就必须在第一列。,语句中的各部分之间,由一个或多个空格分开。,注释不是必须的。注释可以从第一列的 * 号或 ;号开头;如果不是从第一列开始,就必须用 ;号开头。,5,学习交流PPT,语句标号,由字母、数字、_、$组成,最多不超过32个字符,对大小写敏感,第一个字符不能是数字。后跟 :。,6,学习交流PPT,助记符,助记符不允许从第一列开始,否则被认为是语句

3、标号。,助记符可以是机器指令(如ABS,MPYU等)、伪指令(如.data, .list, .set等)、宏指令(如.macro, .var, .mexit等)和宏调用。,7,学习交流PPT,操作数,操作数可以是常数、符号或表达式。当操作数多于一个时,用逗号分开。 汇编器允许指定常数、符号或表达式作为地址、立即数或间接地址。操作数前缀规定如下: #前缀:表示操作数为立即数。如: Label:ADD #123,B ;表示将操作数123(十进制)和累加器B中的内容相加 *前缀:操作数为间接地址。使用操作数的内容作为地址。如: Label:LD *AR4,A ;操作数*AR4为间接地址,将AR4中的

4、内容作为地址,然后将该地址的内容装入到指定的累加器A,8,学习交流PPT,常数,二进制常数(如01B或01b) 八进制常数(如10Q或10q) 十进制常数(如23) 十六进制常数(如78H或78h) 字符常数(如A或b) 字符串(如“sample program”),9,学习交流PPT,符号,符号用于作标号、常数和替代符号。符号名可长达200个字符,可由A-Z、a-z、0-9、$、_组成,且第一个字符不能是数字,符号对大小写敏感。符号仅在定义它的汇编程序中有效,除非用.global或.def伪指令声明为外部符号。 例: K .set 1024,10,学习交流PPT,表达式,表达式是一个常数、符

5、号、或用算术运算符连接起来的常数或符号。表达式的值的范围为-32768到32767 例: X .set 50h sym1 .set 100h+X,11,学习交流PPT,可以用在表达式中的运算符,优先级,符号,含义,() +、-、! *、/、% +、- 、= =、!= sample所代表的就是一个dmad MVKD 1000h,*AR5 ;将数据存储器1000h单元的数据传送到由AR5所指的存储单元中 。 1000h代表的是一个dmad,20,学习交流PPT,绝对地址寻址,程序存储器地址(pmad)寻址: 用一个符号或一个数来确定程序地址空间中的一个地址 例: MVPD table,*AR5 t

6、able 所代表的就是一个pmad,21,学习交流PPT,绝对地址寻址,端口地址(PA)寻址 用一个符号或常数来确定I/O口地址,PORTR PA, Smem ;从PA单元端口读入一 个数据,传送到Smem所指的数据单元中去,PORTW Smem, PA ;从Smem所指的数据单 元取出一个数据,传送到PA单元端口,PORTR FIFO, *AR5 ;把一个数从端口为 FIFO的I/O口传送到AR5所指向的数据单元,22,学习交流PPT,绝对地址寻址,*(lk)寻址 用一个符号或一个表示16位地址的长立即数来确定数据存储器中的一个地址 例: LD *(BUFFER),A ;把地址为BUFFER

7、的数据单元中的数据装到AccA中,23,学习交流PPT,累加器寻址,用累加器中的数作为一个地址,可用来对存放数据的程序存储器寻址:,READA Smem,WRITA Smem,READA,把累加器A所确定的程序存储器单元中的一个字,传送到数据存储器单元Smem中。,WRITA,把数据单元Smem中的一个字,传送到累加器A确定的程序存储器单元。,24,学习交流PPT,直接寻址,TMS320C54的数据存储器分为512页,每页128字。设置一个数据页指针DP(Data Pointer),用9-bit指向一个数据页,再加上一个7-bit的页内偏移地址,形成16-bit的数据地址,LD #4,DP ;

8、指向页4(0200h-027Fh),ADD 9h,A ;将数据页4中地址9h的 数据加给AccA,25,学习交流PPT,直接寻址,26,学习交流PPT,间接寻址,8个辅助寄存器(AR0-AR7),由一个辅助寄存器指针(ARP 3-bit)来指定,辅助寄存器算术单元(ARAU)作16-bit无符号数运算,决定一个新的地址,装入辅助寄存器中的一个,27,学习交流PPT,间接寻址,28,学习交流PPT,间接寻址,AR0-AR7的内容相当灵活,可以装入立即数,加上立即数,减去立即数;也可以从数据存储器装入地址;还可以作以下的变址寻址:,29,学习交流PPT,间接寻址,将该AR的内容加1或减1,再寻址(

9、循环常用),将该AR的内容加上或减去AR0的内容,再寻址。,将该AR的内容逆向进位加上或减去AR0的内容,再寻址。,30,学习交流PPT,间接寻址,ADD *,8,A ;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,ADD *+,8,A,AR4 ;数据左移加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,ADD *+,8,A ;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,当前辅助寄存器加1.,31,学习交流PPT,间接寻址,ADD *0+,8,A ;执行加法后,将AR0的值加给当前辅助寄存器,ADD *BR0+,8,A ;执行加法后,将AR0的

10、值加给当前辅助寄存器,但反向进位,32,学习交流PPT,正向进位与反向进位,1 0 0 1 0 0 + 1 0 0 + 1 0 0 1 0 0 0 0 1 0,33,学习交流PPT,位倒序寻址,AR0 = 100 AR1 = 000 按AR1寻址后,将AR0加给AR1,反向进位,34,学习交流PPT,位倒序寻址,原序 原地址 位倒序后地址 位倒序,0 000 000 0,1 001 100 4,2 010 010 2,3 011 110 6,4 100 001 1,5 101 101 5,6 110 011 3,7 111 111 7,35,学习交流PPT,存储器映射寄存器(MMR)寻址,存储

11、器映射寄存器寻址用来修改存储器映射寄存器。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。 STM #8888h,T;存储器映射寄存器寻址。T暂存器。,36,学习交流PPT,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 ;累加器低位存入MMR STM #lk,MMR ;长立即数lk存入MMR

12、,C54x共有8条指令可以进行MMR寻址。,存储器映射寄存器(MMR)寻址,37,学习交流PPT,堆栈寻址,系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个16-bit的存储器映射寄存器堆栈指针(SP)来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。在压入堆栈操作时,SP先减1,然后将数据压入堆栈;在弹出堆栈操作时,数据从堆栈中弹出后,SP再加1. PUSH ;把一个数据存储器数据压入堆栈 POP ;从堆栈中弹出一个数据至数据存 储器单元,38,学习交流PPT,堆栈寻址,C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总

13、是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进 行寻址。,当进栈操作时,SP先减1,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP加1。,39,学习交流PPT,0001,0010,0011,0100,0101,0110,0001,0010,0011,0100,0101,0110,0011,sp,操作前的堆栈和SP,0010,sp,操作后的堆栈和SP,X1,X1,X2,图、堆栈操作对堆栈指针的影响,40,学习交流PPT,堆栈寻址,采用堆栈寻址的指令:,PSHD Smem ;将Smem中的数据压入堆栈 PSHM MMR ;将MMR中的数据压入堆栈 POPD Smem ;将数据从

14、栈顶弹至Smem中 POPM MMR ;将数据从栈顶弹至MMR中,41,学习交流PPT,指令,TMS320C54x的指令集有近两百条指令,按功能分为如下几类:,算术运算指令,逻辑运算指令,程序控制指令,装入和存储指令,42,学习交流PPT,算术运算指令, 加法指令 减法指令 乘法指令 乘加指令 乘减指令 双数/双精度指令 特殊操作指令,43,学习交流PPT,加法指令,44,学习交流PPT,ADD *AR3+, A,45,学习交流PPT,ADD *AR3+,14,A,将AR3指向的地址单元0100h的内容1500h左移14位,得到5400000h加上1200h,将结果5401200h存在累加器A

15、中。,46,学习交流PPT,ADDC *+AR2(5),A,将AR2加上5后指向的地址单元内容,并进位加到累加器A中,此指令计算0013h0004h1h0018h。,47,学习交流PPT,ADDM 0123Bh,*AR4+,48,学习交流PPT,减法指令,49,学习交流PPT,乘法指令,50,学习交流PPT,MPY 13, A,51,学习交流PPT,乘加和乘减指令,52,学习交流PPT,MAC *AR5+,A,53,学习交流PPT,MAC #345h,A,B,B=A+T*#345h,54,学习交流PPT,MAC *AR5+,*AR6+,A,B,B=A+(*AR5)*(*AR6) T=(*AR5

16、),55,学习交流PPT,MACR *AR5+,A,A=rnd(A+T*(*AR5),56,学习交流PPT,MACR *AR5+,*AR6+,A,B,B=rnd(A+(*AR5)*(*AR6) T=(*AR5),57,学习交流PPT,MACA *AR5+,B=B+(*AR5)*A(3116) T=(*AR5) AR5=AR5+1,58,学习交流PPT,MAC X0,Y0,A X:(R0)+,X0 Y:(R4)+N4,Y0,这条指令命令DSP56300,将寄存器X0和Y0中的数相乘,结果加到Acc A中,将寄存器R0所指的X存储器地址中的值装入寄存器X0,将寄存器R4所指的Y存储器地址中的值装入

17、寄存器Y0,R0的值加1,寄存器N4的值加给R4,59,学习交流PPT,.bss x, 4, 1 a0.word 012h a1.word 3211h a2.word fe11h a3.word ff03h .sect “program” LD #x, AR1 LD #0, A,AR1 LD #a0, T,MAC *+,A LD #a1,T MAC *+,A LD #a2,T MAC *+,A LD #a3,T MAC *,A,60,学习交流PPT,逻辑运算指令,61,学习交流PPT,AND *AR3+,A,A=Az2=x1-y1;z3=x1*y1;z4=x2*y2。其中,x1=20,y1=5

18、4,x2=0.5,y2=-0.5837 编写汇编源程序如下: .title “suanshu.asm” .mmregs .bss x1,1 .bss x2,1 .bss y1,1,164,学习交流PPT,.bss y2,1 .bss z1,1 .bss z2,1 .bss z3_h,1 .bss z3_l,1 .bss z4,1 v1 .set 014h ; v1 =20 v2 .set 036h ; v2=54 v3 .set 04000h ; v3=0.5 v4 .set 0b548h ; v4=-0.5837,165,学习交流PPT,start: LD #x1,DP ST #v1,x1

19、ST #v2,y1 LD x1,A ;x1 A ADD y1,A ;A+Y1 A STL A,z1 ;保存AL z1 LD x1,A SUB y1,A STL A,z2,166,学习交流PPT,RSBX FRCT ;准备整数乘法,FRCT=0 LD X1,T MPY Y1,A ; x1*y1 A STH A,z3_h ;乘法结果高16位在z3_h 单元 STL A,z3_l ;乘法结果低16位在z3_l单元 ST #v3,x2 ST #v4,y2 SSBX FRCT ;准备小数乘法,FRCT=1 LD x2,16,A ; 将x2加载到AH MPYA y2 ;x2*y2 B,and y2 T STH B,z4 ;结果放到z4单元,167,学习交流PPT,例2:对数组x8=0,1,2,3,4,5,6,7进行初始化,.bss x,8 .data Table: .word 0,1,2,3,4,5,6,7 .text Start: STM #x,AR5 RPT #7 MVPD table,*AR5+ ,168,学习交流PPT,例3:计算 y =,.bss x,10 STM #x,AR1 STM #9,AR2 LD #0,A

温馨提示

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

评论

0/150

提交评论