收藏 分享(赏)

DSP实验--第三章 数据寻址方式.ppt

上传人:gnk289057 文档编号:7928289 上传时间:2019-05-30 格式:PPT 页数:28 大小:312.50KB
下载 相关 举报
DSP实验--第三章 数据寻址方式.ppt_第1页
第1页 / 共28页
DSP实验--第三章 数据寻址方式.ppt_第2页
第2页 / 共28页
DSP实验--第三章 数据寻址方式.ppt_第3页
第3页 / 共28页
DSP实验--第三章 数据寻址方式.ppt_第4页
第4页 / 共28页
DSP实验--第三章 数据寻址方式.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、DSP54.31,1.立即寻址1)定义: 操作数被包含在执行的指令中; 用来表示常数或初始化寄存器,但速度慢,需要较多的存储空间; 表示方法 :在数字前面加 # 号2)指令格式: 短立即数操作数为 3、5 、8或 9 bit (1 word, 1 cycle)LD #12h, A; 长立即数操作数为 16 bit 常数 (2 words, 2 cycles)LD #1234h, A;,LD A # (opcode),1,2,LD to A # (opcode),1 2 3 4,DSP54.32,立即寻址指令,DSP54.33,2。绝对寻址1)定义: 指令中包含有所要寻址的存储单元的16bit地

2、址; 存储单元的16bit地址,可以用其所在单元地址的标号或16bit符号常数(常数前面无 # 号)来表示; 允许寻址任何一个dmad,速度慢,需要较多的存储空间;2)4种类型: (dmad) 寻址:用一个符号或一个常数确定数据空间中的一个地址;,例: MVKD DATA, *AR5or its equivalent:MVKD *(DATA), *AR5,DSP54.34, (pmad) 寻址:用一个符号或一个常数确定程序空间中的一个地址;,例: MVDP *AR5-, TABLEor its equivalent:MVDP *AR5-, *(TABLE), (PA) 寻址:用一个符号或一个常

3、数确定外部I/O口一个地址;,例: PORTW OUTPUT, 00B0hor its equivalent:PORTW *(OUTPUT), 00B0h, *(lk) 寻址:适用于支持所有单数据存储器(Smem)操作数的指令;,DSP54.35,3) 绝对寻址举例,.data x: .word 1000h y: .word 500h.textLD *(x), AADD *(y), A,0 0 0 0 0 0 1 0 0 0,0 0 0 0 0 0 1 5 0 0,ACC A,Addr. Data,0180 1001 x: 01FF 1000y: 0200 0500 ,DSP54.36,3。累

4、加器寻址1)定义: 用累加器中的数作为地址,用来对存放数据的程序存储器寻址;(用来读写程序存储器中的数据) 通常程序存储器地址空间是64K字,可以用累加器的低16位寻址;对C5402有扩展程序存储空间(寻址空间为1M),则用累加器的低20位寻址; 指令执行周期为 5 cycle;2)指令语法:READA Smem ; Smem=Pmem(A) WRITA Smem ; Pmem(A)=Smem,DSP54.37,4。直接寻址1)定义: 由ST0(80bit)=DP(CPL=0)或SP(CPL=1)作为基地址,指令(opcode)中的低7位作为偏移地址,共同构成16位数据存储器地址(dmad);

5、CPL=0: 15 9 8 0 15 8 7 6 0ST0 指令码157 6 0数据存储器地址(dmad)CPL=1 : 15 0,Opcode 0 dma,DP,Value from the SP,0 0 0 0 0 0 0 0 0 Value from the IR(dma ),15 7 6 0,9-bit DP 7-bit dma,+,16-bit Data Memory Address, 偏移地址值用符号 表示;,DSP54.38,2)特点 9位数据页面指针,涵盖512页面,每页128字可以随机访问; 是一个单-字单-周期操作; 页面寻址DP和堆栈指针寻址SP,两者只能选择其中之一,由

6、ST0(14-bit)=CPL位决定,可以用命令:RSBX CPL ;CPL=0,允许页面指针DP寻址SSBX CPL ; CPL=1,允许堆栈指针SP寻址复位时: CPL=0; 若同时要快速、随机访问100个左右的变量,直接寻址是有用的,(若无速度要求,可以用绝对寻址),DSP54.39, 页面指针寻址(DP)用得比较多。但在结构化编程C语言环境中,用堆栈指针寻址(SP), 此时要设CPL=1;3)页面指针(DP)寻址举例(教材p.34),.data x: .word 1000 y: .word 500.textRSBX CPLLD #x, DPLD x, AADD y, A,Addr. D

7、ata0180 0001 x: 01FF 1000y: 0200 0500 ,DP 0 0 3 0 0 3 0 0 3,ACC A 00 0000 1000 00 0000 1001,结果不对,Why?,DSP54.310,4)把数据置于同一页面方法: 在汇编源文件中设置,.mmregs.def start.data Tbl .word 1000.word 500 .bss x, 2, 1 y: .set x+1.text start MVPD Tbl, *(x) MVPD Tbl+1, *(y)RSBX CPLLD #x, DPLD x, AADD y, A.end,Addr. Data01

8、80 0001 x: 0200 1000y: 0201 0500 ,DP 0 0 4 0 0 4 0 0 4,ACC A 00 0000 1000 00 0000 1500,注意呵, 这里的1!,DSP54.311, 在.cmd文件中声明:,.bss: RAM BLOCK=128,5)堆栈指针(SP)寻址举例(教材p.34),.textSSBX CPLLD 1, AADD 2, A, ,SP 002001000050 A000,ACC A 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 5 0,DSP54.312,5。间接寻址1)定义: 根据8个辅助寄存器(AR0AR7

9、)中定义的任何一个寄存器给出的16-bit地址进行寻址; 这是DSP最具特色的寻址方式,它是用硬件来实现数据存储器地址指针; 用符号 “” 表示间接寻址; 绝对寻址实际上也是运用了间接寻址的硬件;2)特点: 寻址方式灵活:可以从单条指令中读(或写)一个操作数、读两个操作数、读和写两个顺序操作数等; 两个辅助寄存器算术运算单元(ARAU0和ARAU1)可以进行16-bit无符号算术运算,从而实现各种灵活的寻址功能;,DSP54.313, AR0主要用来作为寻址下标值处理,从而可以任意改变顺序变址长度; 主要用于访问数组、表格等顺序变址的寻址方式; 具有DSP运算中经常用到的循环寻址、码位到序(例

10、卷积、相关、FFT)等特殊寻址功能;3)单数据存储器(Smem)操作数的指令代码格式:15 8 7 6 3 2 0,OPCODE 1 MOD ARP,用作寻址的ARx指示,15种间接寻址模式指示1表示间接寻址(0表示绝对寻址),DSP54.314,4)单数据存储器(Smem)操作数间接寻址类型 参考教材p.35表113,无修改 *ARn addr.=ARn 用后增减 *ARn+ addr.=ARn, ARn=ARn+1*ARn - addr.=ARn, ARn=ARn -1 带下标增减 *ARn+0 addr.=ARn, ARn=ARn+AR0*ARn 0 addr.=ARn, ARn=ARn

11、 AR0 循环增减 *ARn+% addr.=ARn, ARn=circ(ARn+1)*ARn -% addr.=ARn, ARn=circ(ARn -1)*ARn+0% addr.=ARn, ARn=circ(Arn+AR0)*ARn 0% addr.=ARn, ARn=circ(ARn AR0) 倒位序 *ARn+0B addr.=ARn, ARn=B(ARn +AR0)*ARn -0B addr.=ARn, ARn=B(ARn AR0) 先修改 *ARn(lk) addr.=ARn+lk, ARn=ARn*+ARn(lk) addr.=ARn+lk, ARn=ARn+lk*+ARn(lk

12、)% addr.=circ(ARn+lk), ARn=circ(ARn+lk)*+ARn addr.=ARn+1, ARn=ARn+1(只用来写) 绝对寻址 *(lk) addr.=lk,DSP54.315,5)倒位序寻址(略)6)循环寻址 在DSP中的卷积、相关等运算都用到缓冲存储区,它相当数据滑窗:,x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 , R=8, 循环缓冲区保持数据不动,每次更新最老的数据,而指针移动;,x0 x1x7 x2x6 x3x5 x4,x8 x1x7 x2x6 x3x5 x4,AR2,AR2,DSP54.316,h0 h1 h2 h3 h

13、4 h5 h6 h7,x7 x6 x5 x4 x3 x2 x1 x0,x7 x6 x5 x4 x3 x2 x1 x8,x7 x6 x5 x4 x3 x2 x9 x8,循环缓冲区,h:,AR4,x:,AR3,AR3,AR3,低,高,循环缓冲区的基址必须对准2NR即基地址的低N个有效位必须是 0例:R=8,则:N=4 起始地址:(xxxx xxxx xxxx 0000)2,DSP54.317, 一个例子,STM #h+7, AR4STM #x+7, AR3STM #8, BK STM # -1, AR0LD #x, DPPORTR PA1, x FIR: RPTZ A, #7MAC *AR3+0%

14、, *AR4+0%, A STH A, *AR3PORTW *AR3, PA0BD FIRPORTR PA1, *AR3+0%,DSP54.318, 循环寻址要点(见讲义 p.120) 边界对齐 2N 的方法:伪指令 .align 的应用(见讲义 p.135) 在.asm 文件中定义:, 在.cmd文件中定义:,x DARAM align 16 PAGE 1h DARAM align 16 PAGE 1,. align 16 x: . usect “x”, 8. align 16 h: . usect “h”, 8,x: . usect “x”, 8 h: . usect “h”, 8,DSP

15、54.319,7) 双数据存储器操作数的寻址方式 定义:一条指令同时完成两个读或一个读并行一个写; 这些指令只有一个字长,且只能以间接寻址方式工作; 双操作数指令举例:,ADD Xmem, Ymem, dst ; dst=Xmem16+Ymem16MPY Xmem, Ymem, dst ; dst=XmemYmem, T=XmemMAC Xmem, Ymem, src ,dst ; dst=src+XmemYmem MVDD Xmem, Ymem, ; Ymem=XmemFIRS Xmem, Ymem, pmad ; B=B+Apmad, ; A=(Xmem+Ymem)16 LMS Xmem,

16、 Ymem, dst ST src, YmemLD Xmem, dst ; Ymem=src(ASM-16),; dst=Xmem16,DSP54.320,其中: Xmem表示读操作数(读自Dbus)Ymem表示读操作数(Cbus)或写操作数( Ebus ) 双数据存储器操作数的间接寻址指令代码格式15 8 7 6 5 4 3 2 1 0,opcode Xmod Xar Ymod Yar,寻址模式 00 01 10 11 (Xmod或Ymod) *ARx *ARx- *ARx+ *ARx+0%Xar或Yar 00 01 10 11 选择所用的寄存器 AR2 AR3 AR4 AR5,DSP54.

17、321,8) 间接寻址中要注意的问题 使用指针前必须对指针初始化; 等待时间的考虑:无等待:STM MVDK1 周等待:MVDM MVKD MVDD2 周等待:STLM ST etc. 在访问期间,ARs 被读出修改,这样在调试时将出现ARs值显示的是被提前修改后的值; ST1(5-bit)=CMPL必须为0此位复位时为0,否则用命令:RSBX CMPL 设为0 ,DSP54.322,6。存储器映像的寄存器(MMR)寻址1)定义: 在不顾及DP、SP和CPL值的情况下,利用直接寻址(相当于DP=0)和间接寻址(只利用辅助寄存器ARs的低7位)对首页128个字的MMR和SPRAM进行寻址,而且可

18、以用MMR寄存器的名字取代其物理地址; 操作数构成方式:,高9位置0,来自指令寄存器IR或当前辅助寄存器的ARx 低7位,7,916,DSP54.323,2)只有以下8条指令可以对MMR进行寻址,; MMR ACC ; Dmem MMR ; MMR Dmem ; AR SP BK AR SP BK ; Stack MMR ; MMR Stack ; ACC MMR ; #lk MMR,3)以下间接寻址方式不能用于对MMR进行寻址,4)必须在 .asm文件中,用伪指令.mmregs声明,才能用寄存器的名称取代其物理地址;,DSP54.324,5)应用举例例1:,.mmregs LDM ST1,

19、B OR #4000h, B STLM B, ST1,例2:比较以下程序执行结果的区别,.mmregs STM #0400h, IMR LD #1, DP STM #2817h, AR1 LDM 0, A STLM A, *AR1,.mmregs STM #0400h, IMR LD #1, DP STM #2817h, AR1 LD 0, A STL A, *AR1,*(AR1)=AR7=0400hAR1=17h,*(AR1)=*(0080h)AR1=2817h,DSP54.325,7。堆栈寻址1)定义: 利用堆栈指针SP进行寻址; C54x堆栈是位于数据存储区的软件堆栈,用一个16-bit

20、的堆栈指针SP(MMR)进行管理;2)堆栈作用:在中断或子程序调用时用来自动保存程序计数器(PC)的数值,也可以用来保护现场或传送参数3)堆栈地址的生成:堆栈是从高地址向低地址生长;压入堆栈操作:先将SP减1,后将数据存到SP指示的单元;弹出堆栈操作:先读出SP指示单元的内容,再将SP加1,,DSP54.326,例1:生成一个堆栈(参考教材p.144)数据存储器,stack 可用栈区SP 栈底,0,65 535,STK,size .set 100 stack .usect “STK”, size STM #stack+size, SP,例2:变量入栈操作见讲义p.21,DSP54.327,4) 用于堆栈寻址的4条指令: PSHD Smem ; (SP)-1 SP, (Smem) TOS PSHM MMR ; (SP)-1 SP, (MMR) TOS POPD Smem ; (Smem) TOS, (SP)+1 SP POPM MMR ; (MMR) TOS, (SP)+1 SP,DSP54.328,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报