DSP寻址方式的研究.doc_第1页
DSP寻址方式的研究.doc_第2页
DSP寻址方式的研究.doc_第3页
DSP寻址方式的研究.doc_第4页
DSP寻址方式的研究.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

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

文档简介

DSP技术与应用课程研究论文 DSP寻址方式研究论文作者姓名: 作 者 学 号: 所 在 学 院: 所 学 专 业: 教 师 姓 名: 论文完成时间: 寻址方式的研究摘要:文中介绍了的各种寻址方式以及寻址方式的实例,主要针对,阐述了各种寻址方式的特点和区别。关键词:寻址方式目录1 立即数寻址12 绝对地址寻址12.1数据存储器地址寻址32.2程序存储器地址寻址32.3 端口寻址33 累加器寻址44 直接寻址55 间接寻址55.1 单操作数寻址65.2 循环寻址6 5.3 位倒序寻址8 5.4 双数据存储器操作数寻址.96 存储器映射寄存器寻址.97 堆栈寻址.108 几种寻址方式的特点.119 结束语 .1110参考文献TMS320C54x系列DSP的存储空间包括程序存储空间、数据存储空间和I/O空间。每个空间都有64K字的大小。因此,如果采用直接的寻址方式则需16位的地址。为了节省程序存储空间和提高程序的运行速度,经常采用间接寻址等方法以便使指令字节数减少。1 立即数寻址在立即寻址方式中,指令里包含了立即操作数。 立即寻址方式中的立即数有两种数值形式,1、5、8、9位短立即数和16位的长立即数,它们在指令中分别编码为单字指令和双字指令。 例如: LD #0AH,ASM ;5-bit (EDOA) RPT #99H ;8-bit (EC99) LD #020H,DP ;9-bit (EA20) LD #0FE00H,A ;16-bit (F020 FE00)需要注意的是,立即数前面加需“#”以区别于地址表示方法,不得遗漏。例如,LD #0FE00H,A,表示将立即数FE00H送入累加器A,遗漏#,则变成把地址为0FE00H单元的内容送入累加器A(1000 FE00)。 2 绝对地址寻址 绝对寻址方式的指令中包含有所寻操作数的16位单元地址。由于寻址16位绝对地址,故绝对寻址指令长度至少为2个字。有四种绝对寻址指令: 2.1 数据存储器地址(dmad)寻址: MVDK Smem, dmad MVDM dmad, MMR MVKD dmad, Smem MVMD MMR, dmad2.2 程序存储器地址(pmad)寻址:程序存储器寻址由程序地址产生逻辑(PAGEN)完成。预取指阶段,PAGEN通过程序计数指针PC将指令代码、参数表等所在的程序存储器地址放在PAB上,进而从程序存储器相应的位置取出指令代码。如果程序顺序执行,即程序地址连续,PC值将自动增加,指向下一条指令的地址; 如果程序执行过程中有跳转、返回、中断或循环操作,程序地址将不连续,这时PC值就要根据具体情况相应改变了。程序计数指针PC是一个16位的计数器,PC中所加载的16位程序地址与DSP执行的操作有关。 FIRS Xmem, Ymem, pmad MVDP Smem , pmad MACP Smem, pmad, src MVPD pmad, Smem2.3 I/O端口地址(PA)寻址: PORTR PA, Smem PORTW Smem, PA长立即数*(lk)寻址: LD *(BUFFER),A例如: MVKD DATA, *AR1;数据存储器寻址 MVPD TABLE, *AR2;程序存储器寻址 PORTR 0F2F0H, *AR5;端口寻址 第一条指令表示将数据存储器中以DATA符号为地址单元中的数据传送到由辅助寄存器ARl所指向的数据存储单元中去。 DATA代表数据存储单元的地址dmad。第二条指令表示将程序存储器中以TABLE符号为地址单元中的数据传送到由辅助寄存器AR2所指向的数据存储单元中去。 TABLE代表程序存储单元的地址pmad。第三条指令表示将地址为0F2F0H的端口中的数据传送到由辅助寄存器AR5所指向的数据存储单元中去。3 累加器寻址累加器寻址是利用累加器A的低16位(AL内容)作为地址对程序存储器中的数据进行访问,这种寻址方式常用来寻址存放数据的程序存储空间。只有两条指令可用于累加器寻址方式。 READA Smem WRITA Smem第一条指令意为将累加器A(AL)的内容作为地址寻找程序存储器中的数据,传送到Smem指定的数据存储单元中。第二条指令意为将Smem指定的数据存储单元中的数据(1个字),写到累加器A(AL)指定地址的程序存储器中去。 4直接寻址直接寻址指令中包含有数据存储器地址的低7位(dma)。 以dma为偏移地址,与基地址(数据页指针DP或堆栈指针SP)共同构成16位数据存储器的物理地址。 数据指针(DP),当ST1中的CPL位=0 堆栈指针(SP),当ST1中的CPL位=1CPL=0,选择数据页指针DP,用DP中的9位作为高位与指令中指定的7位作为低位,共同构成16位数据存储单元的地址。CPL=1,选择堆栈指针SP,用SP的值与指令中指定的7位正偏移量相加,构成16位数据存储单元的地址。利用这种寻址方式,可以在不改变数据页指针DP和堆栈指针SP内容的情况下,随机地寻址128个存储单元中的任何一个单元。 直接寻址的优点是寻址速度快且为单字指令。5间接寻址 间接寻址根据8个辅助寄存器AR0AR7中定义的任一寄存器给出的16位地址寻址。每一个寄存器都可以用来寻址64K字数数据存储空间中的任何一个单元。 间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。VC5402有两个辅助寄存器算术运算单元ARAU0和ARAU1,它们与8个辅肋辅助寄存器一起,可以进行无符号数算术运算,实现16种单操作数间接寻址方式5.1单操作数寻址间接寻址时:间址寄存器前加*号“+”号在前,修改生成新值后再寻址“+”号在后,寻址后再修改生成新值有0符号, 与AR0有关有B符号, 位倒序寻址有符号,循环寻址5.2 循环寻址在卷积、相关、FIR滤波算法中,要求在存储器中设置一个缓冲区作为滑动窗,保存最新一批数据。循环寻址过程中,不断有新的数据覆盖旧的数据,从而实现循环缓冲区寻址。循环缓冲区长度BK决定缓冲区的大小,循环寻址时首先应将缓冲区的长度值R加载至循环缓冲区长度寄存器BK。 STM #lk, BK ; 设置循环缓冲区长度循环缓冲区从N位的地址边界(N位0)开始,R2N 。若R=40, 则N=6, 开始地址为: xxxx xxxx xx00 0000。循环寻址时用一个ARx指向缓冲区循环寻址算法: if 0 index+step BK: index = index+step; else if index+step BK: index = index+step- BK; else if index+step 0: index = index+step+ BK; 其中,index是ARx的低N位(缓冲区偏移地址)。 循环寻址编程举例:256点16阶FIR滤波器.sect “fir-prog”STM #255, BRC ; Block Repeat Counter ; Repeat 256 times RPTBD fir_filter_loopSTM #16, BK ; FIR circular buffer sizeLD *AR7+, A ; load the input valueSTL A, *AR4+% ; replace oldest sample with; newest sampleRPTZ A, #16MAC *AR4+0%, *AR3+0%, A ; filteringSTH A, *AR5+ ; replace the oldest buffer valuefir_filter_loop5.3位倒序寻址倒序及其进位(有B符号) 位倒序表示:1010, 0101;0011,1100位倒序进位:进位不是加到左边一位,而是加到右边的那位。例如:进位加到左边(正序) 进位加到右边 (倒序) 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 016点蝶形FFT运算中,将FFT长度的一半( 8)存放AR0中,如果AR2指向X(0)首址2000H,则执行下面2条程序后将以倒序地址: 2000H,2008H,2004H,200CH,2002H,2007H,200FH向PA口输出。 RPT #15 PORTW *AR2+0B, PA5.4双操作数( Dual-Operand Memory )寻址这种寻址方式用于同时完成两次读操作或完成一次读操作和一次并行存储操作的指令。这些指令只用于间接寻址方式,而且指令长度均为一个字长。这种寻址方式对于加减运算、乘法运算、乘法累加运算以及对应于DSP的其他一些特殊数学运算是相当方便的。我们分别用Xmem和Ymem来代表这两个数据存储器操作数。 Xmem是一个读操作数,但存储指令可把Xmem变为写操作数; Ymem在两个读操作中是读操作数,在一读一写中是写操作数。如果源操作数和目的操作数指向相同的地址,执行的顺序是先从该地址读取数据,后写入数据。如果一个双操作数指令通过不同的寻址模式指向同一个辅助寄存器,那么以Xmod域的寻址模式为准。6存储器映像寄存器寻址 存储器映像寄存器寻址主要用于不改变DP、SP的情况下,访问MMR中的内容。因此,这种寻址方式对MMR执行写操作开销小。存储器映像寄存器MMR寻址有两种方法(1) 采用直接寻址方式,高9位数据存储器地址置0(无论DP、SP为何值),利用指令中的低7位地址直接访问MMR。(2) 采用间接寻址方式,高9位数据存储器地址置0(无论DP、SP为何值),按照当前辅助寄存器的低7位地址访问MMR。此种方式访问MMR,寻址操作完成后,辅助寄存器的高9位被强迫置成0。存储器映射寄存器寻址用来访问存储器映射寄存器而不影响当前数据页指针(DP)或堆栈指针(SP)的值。 直接寻址中利用操作数中的低7位访问MMR;间接寻址中利用ARx访问MMR时ARx高9位被置0 。只有8条指令能使用存储器映射寄存器寻址:LDM MMR, dstMVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMRPSHM MMRSTLM src, MMRSTM #lk, MMR7堆栈寻址C54x的堆栈是从高地址向低地址方向生长的,并用16位堆栈指针SP管理堆栈。SP总是指向存放在堆栈中的最后一个元素,即栈顶。堆栈寻址就是利用SP完成寻址操作。共有4条堆栈寻址指令: PSHD ; 数据存储器中的一个数压栈 PSHM ;MMR中的数压栈 POPD ; 弹出一个数至数据存储单元 POPM ;弹出一个数至MMR几种寻址方式的特点 (1)立即寻址的特点是操作数在指令中,运行速度快,但需要较多的程序存储空间,而且数值不能改变,主要用于表示常数和初始化。 绝对寻址可以访问任何的数据空间,但速度慢,且要求较多 的存储空间,可用于对速度没有苛刻要求的场合。 累加器寻址是利用累加器中的数值寻址程序存储器,故主要 用于程序空间和数据空间的数据传送。 间接寻址是通过辅助寄存器和辅助寄存器指针寻址数据存储 空间任一单元的,较为灵活,可自动实现增量、减量、变址 寻址、循环寻址等操作。 直接寻址指令中包含有数据存储器的低7位地址,与DP或SP内容结合形成l6位地址,可以实现单

温馨提示

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

最新文档

评论

0/150

提交评论