TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章

上传人:E**** 文档编号:89350498 上传时间:2019-05-23 格式:PPT 页数:237 大小:11.28MB
返回 下载 相关 举报
TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章_第1页
第1页 / 共237页
TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章_第2页
第2页 / 共237页
TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章_第3页
第3页 / 共237页
TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章_第4页
第4页 / 共237页
TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章_第5页
第5页 / 共237页
点击查看更多>>
资源描述

《TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章》由会员分享,可在线阅读,更多相关《TMS320C54x DSP原理及应用 第二版 教学课件 ppt 作者 乔瑞萍 第1-4章1 第3章(237页珍藏版)》请在金锄头文库上搜索。

1、第3章 指 令 系 统,3.1 数据寻址方式 3.2 TMS320C54x的指令系统,3.1 数据寻址方式 3.1.1 指令的表示方法 1指令的基本形式 与所有的微处理器助记符指令一样,TMS320C54x的助记符指令也是由操作符和操作数两部分组成的。在汇编前,操作符是用助记符表示的,指出指令应完成何种操作;操作数用来描述该指令的操作对象,它可以是数据本身,也可以是指出如何获取操作数的信息。,助记符指令的基本形式为: 标号,操作符,操作数1,操作数2,操作数3 其中,标号是可选项,操作数可以没有或有多个,其内容可 以是立即数、寄存器、程序地址、数据地址、I/O地址等。 TMS320C54x中源

2、操作数一般在操作数1的位置,目的操作数则在操作数3的位置,指令执行结果存放到目的操作数单元中,源操作数不变。,例如: LD #0FFH,A 上述指令的执行结果是将立即数0FFH传送至累加器A中。这里的LD为操作符,#0FFH为操作数1,累加器A为操作数2。,2指令的数据类型 TMS320C54x 寻址存储器有两种基本的数据形式:16位数和32位数。大多数指令能够寻址16位数,只有双精度和长字指令才能寻址32位数,如表3-1所示。,在对32位数进行寻址时,先处理高有效字,然后处理低有效字。如果寻址的第1个字处在偶地址,那么第2个字就处在下一个(较高的)地址;如果第1个字处在奇地址,那么第2个字就

3、处在前一个(较低的)地址,如图3-1所示。,图3-1 32位字的存储顺序,在讨论寻址方式时,要用到一些缩写语,表3-2给出了部分寻址方式缩写语的名称和含义。,3.1.2 数据寻址方式 TMS320C54x数字信号处理器共有7种数据寻址方式,如表3-3所示。,1立即寻址 立即寻址就是在指令中已经包含有执行指令所需的操作数(一个固定的立即数)。立即寻址方式中的立即数有两种数值形式,数值的位数为3、5、8或9位时为短立即数;数值的位数为16位时是长立即数。立即数可以包含在单字节或双字节指令中,短立即数在单字节指令中,长立即数在双字节指令中。,在立即寻址方式的指令中,在数字前面加一个“#”符号,表示此

4、数为一个立即数,否则会误认为是一个地址。 例如:用一个十六进制数80H加载累加器A,可以写成如下指令: LD #80H,A ;执行后,A=0080H,如果将立即数10H先左移4位后,再加载累加器A,可以写成如下指令: LD #10H,4,A ;执行后,A = 0000 0100H LD #32768,B ;执行后,B = FFFF 8000H,状态寄存器ST1中的 ;SXM位等于1,数据进入ALU之前进行符号扩展 如果没有“#”符号,那么指令“LD 80H,A”的执行结果就变成把存储器单元地址为80H中的内容加载到累加器A中。如果(0080H) = 0034H,那么指令执行后A = 0034H

5、。,2绝对寻址 绝对寻址有以下四种形式: (1) 数据存储器地址单元(dmad)寻址:用程序标号或数据来确定指令中所需要的数据空间地址。其指令如下: MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad,例如: MVKD SAMPLE,*AR5;SAMPLE是一个符号常数, ;表示一个数据存储单元的地址。 ;把数据空间SAMPLE标注的地 ;址单元中的数据传送到由AR5 ;所指的数据存储单元中,(2) 程序存储器地址单元(pmad)寻址:用一个符号或一个具体的数来确定程序存储器中的地址。其指令如下: FIRS Xmem,Ymem,p

6、mad MACD Smem,pmad,src MACP Smem,pmad,src MVDP Smem,pmad MVPD pmad,Smem,例如: MVPD TABLE,*AR7+ ;TABLE是一个地址标号,代 ;表一个程序存储单元的地址。 ;把用TABLE标注的程序存储 ;器单元中的内容传送到AR7所 ;指的数据存储器单元,(3) 端口地址(PA)寻址:用一个符号或一个常数来确定外 部I/O端口地址。其指令如下: PORTR PA,Smem PORTW Smem,PA,例如: PORTR FIFO,*AR5 ;从FIFO端口读入一个数据,将 ;其放入AR5寄存器所指的数据 ;存储单元中

7、。FIFO是一个I/O端 ;口的标号,(4) *(lk)寻址:16位符号常数所指的数据存储单元(Smem)中的操作数。 例如: STL A,*(SAMPLE);SAMPLE是一个16位符号常数,3累加器寻址 有两条指令可以用累加器寻址: READA Smem ;把累加器A所确定的程序存储单元中的内容传送到由 ;Smem所指定的数据存储单元中 WRITA Smem ;将Smem所指定的数据存储单元中的一个数传送到累 ;加器A确定的程序存储器单元中,对于上述两条指令,如果前面有一条RPT重复指令,则累加器A能够自动增量寻址,但累加器A的值不变。对大多数TMS320C54x而言,用累加器的低16位作

8、为程序存储器的地址。而对于TMS320C548来说,是用累加器的低23位作为程序存储器的地址。,4直接寻址 直接寻址就是在指令中包含有数据存储器地址(dma)的低 7位,用这7位作为偏移地址,并与基地址值(数据页指针DP的9位或堆栈指针SP的16位)组成一个16位的数据存储器地址。 直接寻址分为数据页指针直接寻址和堆栈指针直接寻址两种。,这两种寻址方式可以在不改变 DP或SP的情况下,随机地寻找128个存储单元中的任何一个单元地址。直接寻址的优点是访问方便快捷,每条指令只需要一个字。直接寻址的代码格式如下:,当状态寄存器ST1中的CPL位等于0时,ST0中的DP值 (9位地址)与指令中的7位地

9、址一起形成16位数据存储器地址,以OP为基准的直接寻址如图3-2所示。,图3-2 以DP为基准的直接寻址,因为DP值的范围是0511,所以以DP为基准的直接寻址把存储器分成512页;又因为7位dma值的范围是0127,所以每页有128个可访问的单元。也就是说,DP指向512页中的一页,dma就指向该页中的特定单元。DP值可以由LD指令装入,RESET指令将DP赋为0。DP不能通过上电进行初始化,只有在程序中对它进行初始化后,才能保证程序正常工作。,当ST1中的CPL位等于1时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址,以SP为基准的直接寻址方式如图3-3所示。,图

10、3-3 以SP为基准的直接寻址方式,(1) 数据页指针直接寻址:x=01FFH,y=0200H。,(2) 堆栈指针直接寻址:SP=0010H。,编程时直接寻址和立即寻址容易混淆。例如,ST1中的CPL=1,SP=0120H,指令“LDU 34H,A”是一条直接寻址指令,表示将数据空间0120H + 34H = 0154H单元的内容装入累加器A。如果要装入一个立即数,立即数前一定要加“#”符号。值得注意的是,直接寻址时常数前面加符号“”与不加是一样的,但地址范围必须是0127。,5间接寻址 在间接寻址中,64 K字数据空间中的任意单元都可以通过一个辅助寄存器中的16位地址进行访问,同时可以预调整

11、或修改辅助寄存器值,完成循环寻址和位码倒序寻址等特殊功能。TMS320C54x有8个16位辅助寄存器(AR0AR7)、2个辅助寄存器算术运算单元(ARAU0和ARAU1),它们与8个辅助寄存器一起完成16位无符号数算术运算。,间接寻址很灵活。它不仅能在单条指令中对存储器读/写一个16位操作数,还能在单条指令中读两个独立的数据存储 单元,读/写两个顺序的数据存储单元,或者读一个数据存储单元的同时写另一个数据存储单元。,1) 单数据存储器操作数间接寻址 单数据存储器操作数间接寻址指令的格式如下:,20位:3位辅助寄存器域,它定义了寻址所使用的辅助寄存器。ARP由状态寄存器ST1中的兼容方式位CMP

12、T来决定。 CMPT=0:标准方式。ARP始终设置为0,不能修改。 CMPT=1:兼容方式。 表3-4列出了16种单数据存储器操作数的间接寻址类型。,例如: ST #1000H,*(0060H) ;把立即数1000H放到数据存储器地址 ;为0060H的单元中 STM #0060H,AR1 ;执行后,AR1 = 0060H STM #2,AR0 ;执行后,AR0 = 0002H LD *AR1+0,A ;执行后,累加器A = 1000H,即 ;0060H单元中的内容; ;AR1=0062H,2) 位码倒序寻址功能 位码倒序寻址提高了执行速度,在FFT算法中,经常要用到位码倒序寻址功能。在这种寻址

13、方式中,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) 循环寻址 在卷积、相关和FIR滤波器等算法中,都需要在存储器中设置一个循环

14、缓冲器,它是一个滑动窗口,保存着最新的一批数据。当新的数据到来时,缓冲器中最早的数据就会被新的数据覆盖。循环缓冲器实现的关键是循环寻址的实现。循环缓冲器大小寄存器(BK)的内容确定了循环缓冲器的大小。,BK中的数值由指令“STM #lk,BK”设定。长度为R的缓冲器必须从N位地址的边界开始(即循环缓冲器基地址的N个最低有效位必须为0),N应满足2NR的最小整数。例如,长度R=127的循环缓冲区必须从二进制地址XXXX XXXX X000 0000B(N=7,27127,该地址的最低7位为0)开始,同时必须 将R值加载到BK寄存器中。,循环缓冲区的有效基地址(EFB)就是用户选定的辅助寄存器(A

15、Rx)的低N位置0后所得到的值,循环缓冲区的的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到的。循环缓冲区的指针index就是ARx的低N位,step就是加到辅助寄存器或从辅助寄存器中减去的值。,循环寻址的算法为 if 0index+stepBK; index=index+step. else if index+stepBK; index=index+stepBK. else if index+step0; index=index+step+BK.,例如,一个循环缓冲区大小BK=6=N,AR1=0060H,用 *AR1+%间接寻址。第一次寻址后,AR1 = 0061H;第二 次寻址后,AR1=0062H;第六次寻址后,AR1指向0066H,再按BK的值6取模,此时AR1又指向0060H单元 (前面5次按BK取模时,AR1的值不变)。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号