第三章DSP的软件结构.ppt
《第三章DSP的软件结构.ppt》由会员分享,可在线阅读,更多相关《第三章DSP的软件结构.ppt(174页珍藏版)》请在三一办公上搜索。
1、第三章DSP的软件结构,Introduction,汇编语言程序编写方法 TMS320C54x的寻址方式TMS320C54x指令的表示方法 TMS320C54x的指令系统 汇编伪指令,汇编程序语法,TMS320的汇编程序包含汇编指令(伪指令,assembler directives)、汇编语言指令(assembly language instructions)、宏指令(macro directives)和注释(comments)。,汇编程序源程序格式,label:mnemonic operand list;comment标号:助记符 操作数;注释 SYM1.set 2;符号SYM1=2Begin
2、:LD#SYM1,AR1;将2装入AR1,汇编程序语法,所有的语句必须由语句标号、空格、*号或;号开头。,语句标号不是必须的,如果用,就必须在第一列。,语句中的各部分之间,由一个或多个空格分开。,注释不是必须的。注释可以从第一列的*号或;号开头;如果不是从第一列开始,就必须用;号开头。,语句标号,由字母、数字、_、$组成,最多不超过32个字符,对大小写敏感,第一个字符不能是数字。后跟:。,助记符,助记符不允许从第一列开始,否则被认为是语句标号。,助记符可以是机器指令(如ABS,MPYU等)、伪指令(如.data,.list,.set等)、宏指令(如.macro,.var,.mexit等)和宏调
3、用。,操作数,操作数可以是常数、符号或表达式。当操作数多于一个时,用逗号分开。汇编器允许指定常数、符号或表达式作为地址、立即数或间接地址。操作数前缀规定如下:#前缀:表示操作数为立即数。如:Label:ADD#123,B;表示将操作数123(十进制)和累加器B中的内容相加*前缀:操作数为间接地址。使用操作数的内容作为地址。如:Label:LD*AR4,A;操作数*AR4为间接地址,将AR4中的内容作为地址,然后将该地址的内容装入到指定的累加器A,常数,二进制常数(如01B或01b)八进制常数(如10Q或10q)十进制常数(如23)十六进制常数(如78H或78h)字符常数(如A或b)字符串(如“
4、sample program”),符号,符号用于作标号、常数和替代符号。符号名可长达200个字符,可由A-Z、a-z、0-9、$、_组成,且第一个字符不能是数字,符号对大小写敏感。符号仅在定义它的汇编程序中有效,除非用.global或.def伪指令声明为外部符号。例:K.set 1024,表达式,表达式是一个常数、符号、或用算术运算符连接起来的常数或符号。表达式的值的范围为-32768到32767例:X.set 50h sym1.set 100h+X,可以用在表达式中的运算符,优先级,符号,含义,()+、-、!*、/、%+、-、=、!=&|,括弧内的表达式最先计算一元加、减、反码、逻辑非乘、除
5、、模运算加、减左移、右移小于、小于等于、大于、大于等于等于、不等于按位与按位异或按位或,123456789,注释区,注释区可以从任何一列开始,可能包含ASCII字符和空格。注释打印在列表文件中,但不影响汇编工作。,TMS320C54x的寻址方式,立即寻址:指令中有一个固定的立即数;绝对地址寻址:指令中有一个固定的地址(16位);累加器寻址:按累加器的内容作为地址去访问程序存储器中的一个单元;直接寻址:指令编码中含有的7位地址与DP或SP一起合成数据存储器中操作数的实际地址;间接寻址:通过辅助寄存器寻址;存储器映射寄存器寻址:修改存储器映射寄存器中的值,而不影响当前数据页面指针DP和当前堆栈指针
6、SP的值;堆栈寻址:把数据压入或弹出系统堆栈。,寻址指令中用到的缩写符号及其含义,立即寻址,短立即数寻址(单字指令),在指令字中包括立即操作数,RPT#99;将下一条指令循环100次,LD#0h,DP;将0装入数据页指针,ADD#0ffh,A;将0ffh加给AccA,立即寻址,立即寻址,长立即数寻址,指令字的后一个字是立即数(双字指令),ADD#1234h,A;将#1234h加给 AccA,立即寻址,绝对地址寻址,数据存储器地址(dmad)寻址:用一个符号或一个数来确定数据空间中的一个地址例:MVKD sample,*AR5;sample所代表的就是一个dmadMVKD 1000h,*AR5;
7、将数据存储器1000h单元的数据传送到由AR5所指的存储单元中。1000h代表的是一个dmad,绝对地址寻址,程序存储器地址(pmad)寻址:用一个符号或一个数来确定程序地址空间中的一个地址例:MVPD table,*AR5 table 所代表的就是一个pmad,绝对地址寻址,端口地址(PA)寻址用一个符号或常数来确定I/O口地址,PORTR PA,Smem;从PA单元端口读入一 个数据,传送到Smem所指的数据单元中去,PORTW Smem,PA;从Smem所指的数据单 元取出一个数据,传送到PA单元端口,PORTR FIFO,*AR5;把一个数从端口为FIFO的I/O口传送到AR5所指向的
8、数据单元,绝对地址寻址,*(lk)寻址 用一个符号或一个表示16位地址的长立即数来确定数据存储器中的一个地址例:LD*(BUFFER),A;把地址为BUFFER的数据单元中的数据装到AccA中,累加器寻址,用累加器中的数作为一个地址,可用来对存放数据的程序存储器寻址:,READA Smem,WRITA Smem,READA,把累加器A所确定的程序存储器单元中的一个字,传送到数据存储器单元Smem中。,WRITA,把数据单元Smem中的一个字,传送到累加器A确定的程序存储器单元。,直接寻址,TMS320C54的数据存储器分为512页,每页128字。设置一个数据页指针DP(Data Pointer
9、),用9-bit指向一个数据页,再加上一个7-bit的页内偏移地址,形成16-bit的数据地址,LD#4,DP;指向页4(0200h-027Fh),ADD 9h,A;将数据页4中地址9h的 数据加给AccA,直接寻址,间接寻址,8个辅助寄存器(AR0-AR7),由一个辅助寄存器指针(ARP 3-bit)来指定,辅助寄存器算术单元(ARAU)作16-bit无符号数运算,决定一个新的地址,装入辅助寄存器中的一个,间接寻址,间接寻址,AR0-AR7的内容相当灵活,可以装入立即数,加上立即数,减去立即数;也可以从数据存储器装入地址;还可以作以下的变址寻址:,间接寻址,将该AR的内容加1或减1,再寻址(
10、循环常用),将该AR的内容加上或减去AR0的内容,再寻址。,将该AR的内容逆向进位加上或减去AR0的内容,再寻址。,间接寻址,ADD*,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,ADD*+,8,A,AR4;数据左移加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,ADD*+,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,当前辅助寄存器加1.,间接寻址,ADD*0+,8,A;执行加法后,将AR0的值加给当前辅助寄存器,ADD*BR0+,8,A;执行加法后,将AR0的值加给当前辅助寄存器,但反向进位,正向进位与反向进位,1 0 0
11、 1 0 0+1 0 0+1 0 0 1 0 0 0 0 1 0,位倒序寻址,AR0=100AR1=000按AR1寻址后,将AR0加给AR1,反向进位,位倒序寻址,原序 原地址 位倒序后地址 位倒序,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,存储器映射寄存器(MMR)寻址,存储器映射寄存器寻址用来修改存储器映射寄存器。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。STM#8888h,T;存储器映射寄存器寻址。T暂存器。,LD
12、M 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,C54x共有8条指令可以进行MMR寻址。,存储器映射寄存器(MMR)寻址,堆栈寻址,系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个16-bit的存储器映射寄
13、存器堆栈指针(SP)来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。在压入堆栈操作时,SP先减1,然后将数据压入堆栈;在弹出堆栈操作时,数据从堆栈中弹出后,SP再加1.PUSH;把一个数据存储器数据压入堆栈 POP;从堆栈中弹出一个数据至数据存 储器单元,堆栈寻址,C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进 行寻址。,当进栈操作时,SP先减1,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP加1。,0001,0010,0011,0100,0101,0110,0001,0010,0011,0100,0101
14、,0110,0011,sp,操作前的堆栈和SP,0010,sp,操作后的堆栈和SP,X1,X1,X2,图、堆栈操作对堆栈指针的影响,堆栈寻址,采用堆栈寻址的指令:,PSHD Smem;将Smem中的数据压入堆栈 PSHM MMR;将MMR中的数据压入堆栈 POPD Smem;将数据从栈顶弹至Smem中 POPM MMR;将数据从栈顶弹至MMR中,指令,TMS320C54x的指令集有近两百条指令,按功能分为如下几类:,算术运算指令,逻辑运算指令,程序控制指令,装入和存储指令,算术运算指令,加法指令 减法指令 乘法指令 乘加指令 乘减指令 双数/双精度指令 特殊操作指令,加法指令,ADD*AR3+
15、,A,ADD*AR3+,14,A,将AR3指向的地址单元0100h的内容1500h左移14位,得到5400000h加上1200h,将结果5401200h存在累加器A中。,ADDC*+AR2(5),A,将AR2加上5后指向的地址单元内容,并进位加到累加器A中,此指令计算0013h0004h1h0018h。,ADDM 0123Bh,*AR4+,减法指令,乘法指令,MPY 13,A,乘加和乘减指令,MAC*AR5+,A,MAC#345h,A,B,B=A+T*#345h,MAC*AR5+,*AR6+,A,B,B=A+(*AR5)*(*AR6)T=(*AR5),MACR*AR5+,A,A=rnd(A+T
16、*(*AR5),MACR*AR5+,*AR6+,A,B,B=rnd(A+(*AR5)*(*AR6)T=(*AR5),MACA*AR5+,B=B+(*AR5)*A(3116)T=(*AR5)AR5=AR5+1,MAC X0,Y0,A X:(R0)+,X0 Y:(R4)+N4,Y0,这条指令命令DSP56300,将寄存器X0和Y0中的数相乘,结果加到Acc A中,将寄存器R0所指的X存储器地址中的值装入寄存器X0,将寄存器R4所指的Y存储器地址中的值装入寄存器Y0,R0的值加1,寄存器N4的值加给R4,.bss x,4,1a0.word 012ha1.word 3211ha2.word fe11h
17、a3.word ff03h.sect“program”LD#x,AR1LD#0,A,AR1LD#a0,T,MAC*+,ALD#a1,TMAC*+,ALD#a2,TMAC*+,A LD#a3,TMAC*,A,逻辑运算指令,AND*AR3+,A,A=A&(*AR3)AR3=AR3+1,ANDM#00FFh,*AR4+,(*AR4)=(*AR4)&(#00FF)AR4=AR4+1,移位指令,ROL A,ROLTC A,ROR A,SFTA B,+5,累加器算术移位,SFTA A,5,B,SHIFT0,指令执行算术右移;SXM=1,移出的高位用符号位填。,SFTC A,SFTL A,5,B,逻辑右移,
18、高位补0.,测试指令,BIT*AR5+,15-12,指令中的(1512)表示测试第12位 TC=(*AR5)(15-12)AR5=AR5+1,BITF 5,#00FFh,测试Smem中指定的某些位,lk常数在测试一位或多位时起屏蔽作用。假如指定的一位或多位为0,状态寄存器ST0的TC位清0,否则该位置1。,BITT*AR70,CMPM*AR4+,0404h,比较16位单数据存储器操作数Smem和16位常数lk是否相等。若相等,ST0寄存器的TC位置1,否则该位清0。,CMPR 2,AR4,测试AR4是否大于AR0,程序控制指令,分支指令,调用指令,中断指令,返回指令,循环指令,堆栈操作指令,混
19、合程序控制指令,转移指令,BD 1000h,程序指针指向指定的程序存储器地址(pmad),该地址可以是符号或一个数字。如果是延迟转移(指令带有后缀D),紧接着该指令的两条单字指令或一条双字指令从程序存储器中取出先执行。,BACC A,程序指针指向src的低16位所确定的地址。如果是延迟转移(指令带有后缀D),紧跟着该指令的两条单字或一条双字指令从程序存储器中取出先执行。,BANZ 2000h,*AR3,指令的条件代码所对应的条件,条件 说明 条件 说明 AEQ A=0 ANEQ A0 ALT A0 ALEQ A0 AGEQ A0 AOV AOV=0 ANOV AOV=1 C C=1 NC C=
20、0 TC TC=1 NTC TC=0,BC 2000h,AGT,FB 012000h,FBACC A,调用指令,CALA A,程序指针转移到src的低位所确定的地址单元,返回地址压入栈顶。如果是延迟调用,紧接着该指令的两条单字指令或一条双字指令从程序存储器中取出来先执行。,CALLD 1000h,CC 2222h,AGT,FCALA A,中断指令,INTR 3,TRAP l0h,返回指令,FRET,FRETE,RC ANOV,RET,RETE,循环指令,RPT 127,该指令实现对下一条指令的自动循环执行。在循环执行期间,所有外部的中断都不会响应,如果有较长时间的循环,一定保证循环期间没有中断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 DSP 软件 结构
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2207191.html