好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第3章 指令系统.jsp.ppt

212页
  • 卖家[上传人]:飞***
  • 文档编号:8352938
  • 上传时间:2017-08-10
  • 文档格式:PPT
  • 文档大小:2.68MB
  • / 212 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第3章 指令系统,3.1 数据寻址方式3.2 TMS320C54x的指令系统,TMS320C54x DSP的指令系统有助记符和代数两种形式,本章介绍助记符指令系统 TMS320C54x DSP有7种寻址方式,指令系统包含129条指令,由于操作数的寻址方式不同,由此派生出205条指令3.1 数据寻址方式,3.1.1 指令的表示方法  1.指令的基本形式 与所有的微处理器助记符指令一样,TMS320C54x的助记符指令也是由操作符和操作数两部分组成的在汇编前,操作符是用助记符表示的,指出指令应完成何种操作;操作数用来描述该指令的操作对象,它可以是数据本身,也可以是指出如何获取操作数的地址信息助记符指令的基本形式为 [标号,] 操作符 [,操作数1,操作数2,操作数3] 其中,标号是可选项,操作数可以没有或有多个,其内容可以是立即数、寄存器、程序地址、数据地址、I/O地址等TMS320C54x中源操作数一般在操作数1的位置,目的操作数则在操作数2或3的位置,指令执行结果存放到目的操作数单元中,源操作数不变。

      例:LD #0FFH,A 上述指令的执行结果是将立即数0FFH传送至累加器A中这里的LD为操作符,#0FFH为操作数1,累加器A为操作数22.指令的数据类型 TMS320C54x寻址存储器有两种基本的数据形式:16位数和32位数大多数指令能够寻址16位数,只有双精度和长字指令才能寻址32位数,如表3-1所示表3-1 寻址32位数的指令,注意:在对32位数寻址时,先处理高有效字,然后处理低有效字如果寻址的第1个字处在偶地址,那么第2个字就处在下一个(较高的)地址;如果第1个字处在奇地址,那么第2个字就处在前一个(较低的)地址,如图3-1所示 在讨论寻址方式时,要用到一些缩写语,表3-2给出了部分缩写语的名称和含义图3-1 32位字的存储顺序,,表3-2 部分寻址方式缩写语,3.1.2 数据寻址方式 TMS320C54x数字信号处理器共有7种寻址方式,如表3-3所示表3-3 TMS320C54x的数据寻址方式,1.立即寻址 立即寻址就是在指令中包含有执行指令所需的操作数(一个固定的立即数)。

      立即寻址方式中的立即数有两种数值形式:数值的位数为3、5、8或9位时为短立即数;数值的位数为16位时是长立即数立即数可以包含在单字节或双字节指令中,短立即数在单字节指令中,长立即数在双字节指令中在一条指令中,立即数的形式是由所使用的指令的类型决定的 在立即寻址方式的指令中,在数字前面加一个“#”符号,表示此数为一个立即数,否则会误认为是一个地址例如:用一个十六进制数80H加载累加器A,可以写成如下指令: LD #80H,A 执行后,A=0080H (注:LD 80H,A) 如果将立即数10H先左移4位后,再加载累加器A,可以写成如下指令: LD #10H,4,A 执行后,A=0000 0100H LD #32768,B 执行后,B=FFFF 8000H, 状态寄存器ST1中的SXM位等于1,数据进入ALU之前进行符号扩展2.绝对寻址 绝对寻址就是指令中包含所要寻址的存储单元的16位地址,指令按照此地址进行数据寻址。

      这种寻址方式为双字指令,速度慢 绝对寻址有以下四种形式:,(1) 数据存储器地址单元(dmad)寻址:用程序标号或数据来确定指令中所需要的数据空间地址其指令如下: MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad 例如:MVKD SAMPLE,*AR5(P33),(2) 程序存储器地址单元(pmad)寻址:用一个符号或一个具体的数来确定程序存储器中的地址其指令如下: FIRS Xmem,Ymem,pmad MACD Smem,pmad,src MACP Smem,pmad,src MVDP Smem,pmad MVPD pmad,Smem 例如:MVPD TABLE,*AR7+(P33),(3) 端口地址(PA)寻址:用一个符号或一个常数来确定外部I/O端口地址。

      其指令如下: PORTR PA,Smem PORTW Smem,PA 例如:PORTR FIFO,*AR5(P33) (4) *(lk)寻址:16位符号常数所指的数据存储单元(Smem)中的操作数 例如:STL A,*(SAMPLE)(P33),3.累加器寻址 累加器寻址是以累加器内容作为一个地址来读取程序存储器中的数据的 有两条指令可以用累加器寻址: READA Smem ;把累加器A所确定的程序存储单元中的内容传送到由Smem所指定的数据存储单元中 WRITA Smem ;将Smem 所指定的数据存储单元中的一个数传送到累加器A确定的程序存储器单元中 注意:对于绝大多数TMS320C54x而言,用累加器的低16位作为程序存储器的地址,而对于TMS320C548来说,是用累加器的低23位作为程序存储器的地址的4.直接寻址 直接寻址就是在指令中包含有数据存储器地址(dma)的低7位,用这7位作为偏移地址,并与基地址值(数据页面指针DP的9位或堆栈指针SP的16位)组成一个16位的数据存储器地址。

      直接寻址分为数据页指针直接寻址和堆栈指针直接寻址两种这两种寻址方式可以在不改变 DP或SP的情况下,随机地寻找128个存储单元中的任何一个单元地址 直接寻址的优点是访问方便快捷,每条指令只需要一个字直接寻址的代码格式如下:,当状态寄存器ST1中的CPL位等于0时,ST0中的DP值(9位地址)与指令中的7位地址一起形成16位数据存储器地址,如图3-2所示图3-2 以DP为基准的直接寻址,因为DP值的范围是0~511,所以以DP为基准的直接寻址把存储器分成512页;又因为7位dma值的范围是0~127,所以每页有128个可访问的单元,也就是说,DP指向512页中的一页,dma就指向该页中的特定单元DP值可以由LD指令装入,RESET指令将DP赋为0DP不能通过上电进行初始化,必须在程序中对它进行初始化后,才能保证程序正常工作 当ST1中的CPL位等于1时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址,如图3-3所示图3-3 以SP为基准的直接寻址方式,,直接寻址的句法是利用一个符号“@”(加在变量的前面)或者一个常数来确定偏移地址值的。

      例如: (1) 数据页指针直接寻址:x=01FFH,y=0200H (2) 堆栈指针直接寻址:SP=0010H 注意:直接寻址时在常数前面加符号@与不加是一样的,但地址范围必须是0~1275.间接寻址 在间接寻址中,64 K字数据空间中的任意单元都可以通过一个辅助寄存器中的16位地址进行访问,同时可以预调整或修改辅助寄存器值,完成循环寻址和位码倒序寻址等特殊功能 TMS320C54x有8个16位辅助寄存器(AR0~AR7)、两个辅助寄存器算术运算单元(ARAU0和ARAU1),它们与8个辅助寄存器一起完成16位无符号数算术运算间接寻址很灵活,它不仅能在单条指令中对存储器读/写一个16位操作数,而且还能在单条指令中读两个独立的数据存储单元,读/写两个顺序的数据存储单元,或者读一个数据存储单元的同时写另一个数据存储单元1) 单数据存储器操作数间接寻址单数据存储器操作数间接寻址指令的格式如下:,2~0位:3位辅助寄存器域,它定义了寻址所使用的辅助寄存器ARP由状态寄存器ST1中的兼容方式位CMPT来决定 CMPT=0:标准方式。

      ARP始终设置为0,不能修改 CMPT=1:兼容方式 P36表3-4列出了16种单数据存储器操作数的间接寻址功能及其说明 例见P37 单操作数间接寻址的硬件框图如图3-4所示表3-4 单数据存储器操作数的间接寻址类型,图3-4 单操作数间接寻址的硬件框图,,2) 位码倒序寻址功能 位码倒序寻址提高了执行速度,在FFT算法中,经常要用到位码倒序寻址功能在这种寻址方式中,AR0存放的整数N是FFT点数的一半一个辅助寄存器指向一个数据存放的物理单元,当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是通常的从右向左例如:AR0=0000 1010B,AR2=0110 0110B,如执行*AR2+0B寻址功能,也就是(0110 0110)+(000 1010),结果AR2=0110 1101B应注意,计算是采用从左到右运算的 以16点FFT为例,其运算结果的顺序为X(0)、X(8)、X(4)、…、X(15),如表3-5所示表3-5 位码倒序寻址,3) 循环寻址 在卷积、相关和FIR滤波器等算法中,都需要在存储器中设置一个循环缓冲器,它是一个滑动窗口,保存着最新的一批数据。

      当新的数据到来时,缓冲器中最早的数据就会被新的数据覆盖循环缓冲器实现的关键是循环寻址的实现循环缓冲器大小寄存器(BK)的内容确定了循环缓冲器的大小BK中的数值由指令“STM #lk,BK”设定长度为R的缓冲器必须从N位地址的边界开始(即循环缓冲器基地址的N个最低有效位必须为0),N应满足2N>R的最小整数循环缓冲区的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置0后所得到的值,循环缓冲区的的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到的循环缓冲区的指针index就是ARx的低N位,step就是加到辅助寄存器或从辅助寄存器中减去的值图3-5说明了BK、辅助寄存器(ARx)、循环缓冲区的尾地址和首地址以及循环缓冲器的指针关系图3-5 循环寻址的框图,,循环寻址的算法为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.,4) 双数据存储器操作数寻址 双数据存储器操作数寻址用来完成两个读操作,或一个读和一个并行存储操作。

      采用这种方式的指令只有一个长字,并且只能以间接寻址的方式工作 用Xmem和Ymem来代表这两个数据存储器操作数在完成两个读操作过程中,Xmem表示读操作数(访问D数据总线),Ymem表示读操作数(访问C数据总线);在一个读操作同时并行一个并行存储操作过程中,Xmem表示读操作数(访问D数据总线),Ymem表示一个写(访问E数据总线)操作数。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.