寻址方式与指令系统_第1页
寻址方式与指令系统_第2页
寻址方式与指令系统_第3页
寻址方式与指令系统_第4页
寻址方式与指令系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、寻址方式与指令系统 DSP控制器原理及其应用 寻址方式与指令系统 寻址方式 立即寻址直接寻址间接寻址后两种为存储器寻址方式,即指令的操作数是在数据存储器中 立即寻址操作数直接出现在指令代码中 如:123、0ABCDH、#00110B1.短立即数寻址 (单字指令 ) 指令指令代码中用一个8-bit、9-bit或13-bit的常数作为操作数例如,采用短立即寻址的RPT指令 8Bit RPT #63H ;63H=99 将紧跟其后的指令重复执行100次指令代码如下: 2长立即数寻址 (双指令字 )例如,ADD指令 ADD #000AH,2 ;将立即数000AH左移2位后与累加器内容相加结果存累加器中

2、指令代码如下:直接寻址方式64K分为512页128字,由DP确定页码,对同一页操作数(DP同),可减少指令的代码字数。指令中给出7位的页内偏移地址dma7-bit dma作为偏移地址与数据页指针(DP)相结合共同形成16-bit的数据存储器实际地址: 9位DP内容 7位页内偏移地址dmadma与9-bit的DP相结合形成数据存储器地址。以DP为基准的直接寻址DP9-bit9-bit的DP指向数据存储空间的512个数据页中的一页012510511; 比如,直接寻址访问7009H单元,7009H =0111 0000 0000 1001B LDP #0E0H ;DP指向E0H数据页,地址为7000

3、H707FH ADD 9H,5 ;ADD指令代码及地址形成过程:如果执行前:(7009H)0001H(ACC)执行后: (7009) 0001H (ACC)21H ?例如,XY.bssx,1 ;定义1个字的变量X.bssy,1.textLDP#x ;将变量X的高9位地址送DPLACCx ;将X内容送ACCADDy直接寻址方式 在使用直接寻址方式时,对DP要特别注意以下几点:DSP复位时并没有初始化DP内容,用LDP指令确定当前数据页。如果程序需要访问不同的数据页,则每当访问新的数据页前,必须先修改DP值,以确保访问正确的数据页。程序中如果只访问同一个数据页,只需要在程序前段装载DP一次即可。编

4、程举例:直接寻址编程:设xi在同一页ldp #x0ltx0mpy#a0pac ;a0.x0accltx1mpy#a1apac ;acc+ a1.x1 accltx2mpy#a2apac ltx3mpy#a3apac sacly0 .间接寻址方式 8个辅助寄存器(AR0-AR7)和辅助寄存器算术运算单元(ARAU)提供了功能强大而灵活的间接寻址操作方式。在间接寻址中,64K数据空间任意单元都可通过一个辅助寄存器AR中的16-bit地址进行访问AR0-AR7作为间接寻址寄存器,ARP指出当前ARARAU根据指令的要求可以对辅助寄存器的内容进行运算、结果送(DRAB)或 (DWAB)、修改ARP C

5、2xx提供 4 种间接寻址方式:* 不增量不减量。*+或*- AR加1或减1。*0+或*0- AR增加或减去一个指定的量(或称为变址量),AR0存该量。*BR0+或*BR0- 使用逆向进位增加或减去一个指定的量, AR0存该量。(用于FFT)共7个间址符号:* *+ *- *0+ *0- *BR0+ *BR0-每种间接寻址都是由ARP所指的当前辅助寄存器给出指令操作数地址;不同的是指令执行完后当前辅助寄存器改变方式不同,就像C语言的p+ +p,此处先寻址后改变AR内容间接寻址举例:例1:MAR *,AR2 ;选择AR2作为当前辅助寄存器,即ARP=2例2: LAR AR2,#2000H ;将2

6、000HAR2 ADD *+,8;当前辅助寄存器内容所指存储单元(即2000H)的值左移8位后加到ACC,并将当前辅助寄存器内容加1(即AR22001H)例3:ADD,*BR0+,AR5;当前辅助寄存器的内容加到ACC,并将当前辅助寄存器内容与AR0的内容按反向进位加,且指定该指令结束后AR5为当前辅助寄存器。 例3: ADD,*BR0+,AR5 ;反向进位加过程:假设执行前:ARP2,(AR2)2000H,(AR0)04H(2000H)(ACC)1 ,(AR5)2010H,(2010H)=7 执行后:ARP5,(AR2)2004H,(AR0)18H (ACC)?例4: ADD,*BR0+,A

7、R5 ;执行后(ACC)?例5: ADD * ;执行后(ACC)?理解位反转寻址或位倒序寻址FFT运算时输出/输入序列中必有其一要混序即位倒序000100010110001101011111采样数据顺序000001010011100101110111000001010011100101110111地址比如,对上述8点(N)的FFT,输入数据混序存放在8010H(地址必须是点数N的倍数)开始的数据单元ARP2,(AR2)8010H,(AR0) 4(N/2)IN *BR0+,Port 得到第一个操作数存放在8010H第二个数地址为8014H第三个数地址为8012H 另外还有:累加器寻址 ;操作数在

8、累加器中堆栈寻址等 ;PUSH和POP指令 C2的指令集 C2的指令集和C2的指令集兼容;为C2写的代码可以在C2上重新编译和运行。而C5的指令集则是C2的超集,因此为C2写的代码可以在C5上运行。C2的指令按功能可分为以下6种类型:累加器,算术与逻辑指令辅助寄存器和数据页指针指令暂时寄存器(TREG)、乘积寄存器(PREG)和乘法指令转移指令控制指令I/O和存储器操作指令指令集兼容MARSARSBRKADRKCMPRLARLDPAuxiliary Register andData Page PointerBranchCALLCCINTRNMIRETRETCTRAPBBACCBANZBCNDC

9、ALAAccumulatorMemory ReferenceABSADDADDCADDSADDTANDLACC LACLLACTNEGNORMORROLRORSACHSFLSFRSUBSUBBSUBCSUBSSUBTXORZALRSACLCMPL I/O and DataMemory OperationsBLDDBLPDDMOVINOUTSPLKTBLRTBLWControl InstructionsBITBITTCLRCIDLERPTLSTNOPPOPPOPDPSHDPUSHSETCSSTMultiply, T, PMPYAMPYSMPYUPACSPACSPHSPLSPMSQRASQRSAP

10、ACLPHLTLTALTDLTPMACMACDMPYLTSC2的指令学习方法SPRU160C(TMS320F/C24x DSP Controllers Reference Guide)浏览指令集 以ADDC介绍9项的意义CCS Help以上对每条指令都有9项说明(见*.pdf 文件)有疑问的指令通过实验去验证典型指令介绍数据块移动BLDD、BLPD 在DSP,数据与数据存储器、数据与程序存储器之间可以方便的进行数据传输,结合单指令循环可实现数据块移动。 BLPD ;P D BLDD ; D D宏指令 /子程序宏汇编属于高级汇编语言技术,可以简化和缩短源程序但并没有节省程序空间 1.宏定义格式为

11、: 宏名字 .macro (形式参数) (宏定义体,即一段汇编程序) .endm宏指令定义举例KICK_DOG .macro ;Watchdog reset macroLDP#00E0h ;DP-7000h-707FhSPLK#05555h, WDKEY ;WDCNTR is enabled to be reset by next AAhSPLK#0AAAAh, WDKEY ;WDCNTR is resetLDP#0h ;DP-0000h-007Fh .endm2.宏调用定义之后的宏名,可以象任何汇编指令一样在程序中使用CALLmS_DELAY;Generate a 50ms delayKIC

12、K_DOG ;Reset WD if not disabledPHANTOM KICK_DOG ;Resets WD counter BPHANTOM3.宏展开编译程序在目标文件中,将调用宏的地方插入宏体的整个指令代码C2的伪指令 伪指令非常多,参考教材。在稍后章节只介绍常用的伪指令指令效率的提高1、 汇编指令中有一些指令功能差不多,但编写出的程序效率不同,应灵活使用。2、编程熟练程度不同,程序效率不同 指令系统主要通过编程掌握 编程不仅仅是实现需要的功能; 程序是否最优化、最精简:影响代码、速度等。规范化编程开始的说明部分:简要说明功能,向文章标题一样文件名、作者、最后修改日期详细说明功能、

13、实现环境(软硬件)对资源的影响、如何观察结果说明(包括主要变量说明)即入口出口说明程序注释部分:准确无误、50以上 DSP编程基础知识源程序在任何文本编辑工具下都可以编写源程序,一般情况下对应的开发软件都包含编辑器。TI DSP汇编语言书写规范语法: label: 指令 操作数 ;注释#数据前缀表示立即数数据后缀B或b表示二进制常数;后缀Q或q表示八进制常数;后缀H或h表示十六进制常数 汇编程序扩展名为asmTI DSP汇编语言书写规范标号与变量必须从编辑窗口的第1列写,指令(包括伪指令)决不能从第1列开始,包括宏指令。例如某汇编源程序使用 .global 定义全局标号 使用符号$表示当前PC

14、值 例如 B $支持宏指令DSP编程要特别说明的几点COFF(Common Object File Format)段定义伪指令命令文件COFF(Common Object File Format)公共目标文件格式DSP编译器产生的目标文件为COFF文件结构提倡编程(C或汇编)时采用代码段 (Section或块)和数据段的概念,有利于模块化编程编程时不必考虑硬件 ,程序员也不需要指定或修改程序代码或变量目标地址为程序编写和程序移植提供了极大的方便 常用的段定义伪指令.text 默认的初始化程序段,通常包含有可执行程序代码,存放于程序存储器区域.data 默认的初始化数据段(程序或数据区).bss

15、 默认的未初始化数据段,通常是为未初始化的变量预留空间(于数据区)。格式为: .bss 变量符号,保留的字数 .sect定义初始化后命名的段,常用于定义中断向量表。 .sect “段名” 基于COFF格式的汇编语言编程见test.mak之ASM文件*.asm汇编(dspa.exe)与链接(dsplnk.exe)编辑汇编链接如果程序未用任何段定义指令,汇编器自动将所有程序代码与数据汇编到.text段,并产生*.obj文件COFF文件链接器根据命令文件*.cmd确定各段存放地址。生成*.OUT文件,*.OUT不是纯二进制代码文件,而是包含代码、符号表、代码定位信息的复合文件。生成的MAP文件可以获

16、得变量、子程序等符号的具体地址。注意:MAP文件只列出全局变量的地址。在DSP的开发软件CCS环境下可以完成编辑、汇编、链接和调试调试程序的方法基本功:编辑汇编链接下载执行程序何处?寄存器内容变化?变量何处?内容?硬件问题?链接器对test.mak各段在C2XX中的缺省分配模式,什么是缺省分配模式?链接器不用命令文件,将使用缺省分配。从程序存储区域1000H开始,先分配.text段存储空间,占空间大小由程序目标代码多少确定;如果有多个段,按程序中顺序依次存放。紧跟其后为.data段分配空间,从片内的存储器模块B1(地址为0300H03FFH)开始对.bss段分配存储区域.超过256字,则存入4

17、00H开始的片内非用户访问单元.在CCS下,观察test.mak程序及数据分配情况 链接器对test.mak各段在C2XX中的缺省分配模式.text从程序取1000H开始存放,多个.text由在ASM中出现的先后依次存放.data内容紧接.text其后存放.bss从片内B1 DARAM的300H开始存放命令文件(*.cmd)缺省分配模式常常并不符合实际系统的情况和要求。比如,希望将程序从TMS320F240程序存储器0040H开始存放;数据或变量放在B2、B0等等,这时候,就要建立一个命令文件。在命令文件中,用MEMORY命令详细定义DSP器件内部及扩展存储器存储器起始地址和长度,SECTIO

18、NS命令告诉链接器如何组合输入段以及在存储器何处存放 无论是否用命令文件,都可通过CCS或MAP文件查看各段地址。3、命令文件的编写 命令文件的功能是说明目标文件如何连接到目标板,即装入存储器(或重定位)的方法。命令文件包括:1)、连接文件说明: a.obj /* First input filename */b.obj /* Second input filename */-o prog.out /* Option to specify output file */-m prog.map /* Option to specify map file */2)、 存储分配说明3)、 段的分配与说明PAGE 0一般存程序;PAGE1存数据命令文件举例对于同一DSP芯片命令文件一般可以不修改思 考 默认模式和加以上命令文件对:程序中的间接寻址是否有影响?对程序中的直接寻址是否有影响?思 考 (续).bss 300H 或在60HLDP #X; LAR AR2,X; X为变量时语句结果不影响LDP 0; LAR AR2,#60H; 如果直接送数值有无命令文件则会出错因此,程序中尽量不用具体数值表示地址或数量头文件*.hDSP的结构比较复杂,寄存器数量较多,映射地址难记IMR .set 0004h ;Interrupt Mask RegisterGREG

温馨提示

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

评论

0/150

提交评论