dsp课件第3章指令系统

上传人:E**** 文档编号:90581166 上传时间:2019-06-13 格式:PPT 页数:56 大小:1.06MB
返回 下载 相关 举报
dsp课件第3章指令系统_第1页
第1页 / 共56页
dsp课件第3章指令系统_第2页
第2页 / 共56页
dsp课件第3章指令系统_第3页
第3页 / 共56页
dsp课件第3章指令系统_第4页
第4页 / 共56页
dsp课件第3章指令系统_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《dsp课件第3章指令系统》由会员分享,可在线阅读,更多相关《dsp课件第3章指令系统(56页珍藏版)》请在金锄头文库上搜索。

1、D S P 技 术 及 应 用,第三章:TMS320C54x指令系统 7种寻址方式 4种基本类型的汇编语言指令。,第三章:TMS320C54x指令系统,教学要求: C54x DSP的指令系统包括汇编语言指令、汇编伪指令、宏指令,本章主要介绍C54x的7种寻址方式和汇编语言指令,其他指令将在第4章介绍。 了解汇编源程序的书写格式,掌握常见的7种寻址方式,尤其是间接寻址方式。掌握算术运算、逻辑运算、程序控制、存储和装入4种基本类型的汇编语言指令。,第三章:C54x指令系统_3.1 汇编源程序格式,C54x汇编语言语句格式如下(4个部分): 标号 : 指令 操作数列表 ;注释 begin: LD #

2、40, AR1 ;将立即数40传送给ARl 其中:(1) 标号供本程序的其他部分或其他程序调用。 (2) 指令域包括以下指令码之一: 助记符指令 (如STM,MAC,MPVD,STL); 汇编伪指令(如.data,.list,.set); 宏指令(如.macro,.var,.mexit); 宏调用。 注:作为助记符指令,一般用大写;汇编伪指令和宏指令,以句点“.”开始,且为小写。,第三章:C54x指令系统_3.1 汇编源程序格式,(3)操作数可以是常量、符号,或是常量和符号的混合表达式,操作数之间用逗号分开。 汇编器允许在操作数前使用前缀来指定操作数(常数、符号或表达式)是地址还是立即数或间接

3、地址。 前缀的使用规则如下: 前缀 #表示其后的操作数为立即数。 例如:Label: ADD #123,A ;,第三章:C54x指令系统_3.1 汇编源程序格式,前缀 *表示其后的操作数为间接地址。 例如:Label:LD *AR4,A ;以AR4的内容为地址,将该地址的内容装入累加器A 前缀 表示其后的操作数是采用直接寻址或绝对寻址的地址。 例如: ADD #10, XYZ (4)注释可以从一行的任一列开始直到行尾。任一ASCII码(包括空格)都可以组成注释。如果注释从第一列开始,用“;”号或“*”号开头。,第三章:C54x指令系统_3.2 指令集符号与意义,TMS320C54x的指令系统符

4、号和意义见表3-1,第三章:C54x指令系统_3.3 寻 址 方 式,寻址方式:指当CPU执行指令时,寻找指令所指定的参与运算的操作数的方法。 作用:可以根据程序要求采用不同的寻址方式,以提高程序的速度和代码效率。不同的寻址方式为编程提供了极大的柔性编程操作空间,,第三章:C54x指令系统_3.3 寻 址 方 式,C54共有7种基本寻址方式 立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像寄存器寻址 堆栈寻址,第三章:C54x指令系统_3.3 寻 址 方 式,1. 立即寻址 含义:指令中已包含有执行指令所需的操作数; 用途:主要用R或M的初始化; 说明: 在数值或符号前加#表示立

5、即数; 立即数有两种形式:短和长 例如: LD #10 , A ; 立即数10A累加器 RPT #99;将紧跟在后面的语句重复99+1次,第三章:C54x指令系统_3.3 寻 址 方 式,2. 绝对寻址 含义:指令中包含所需寻址的M单元地址或I/O端口地址; 用途:利用16位地址寻址M或I/O 说明:绝对寻址的四种类型 数据存储器寻址:程序标号or数据,表示数据M地址 如:MVKD DATA,*AR5;(DATA)(AR5),第三章:C54x指令系统_3.3 寻 址 方 式, 程序存储器寻址: 如:MVPD TABLE,*AR7-;(TABLE)(AR7) and AR7=AR7-1 I/O端

6、口寻址(2条) 如:PORTR FIFO,*AR5;从端口FIFO读数据(AR5) PORTW *AR2,BOFO;将(AR2)BOFO端口 *(1K)寻址:用一个符号或常数确定一个数据M地址 如:LD *(BUFFER),A; (BUFFER)A 注:访问数据空间的任意单元而不改变DP的值,不用对AR初始化,第三章:C54x指令系统_3.3 寻 址 方 式,3. 累加器寻址 含义:用累加器的数据作为地址来读写程序存储器; 用途:累加器对存放数据的程序存储器寻址; 说明: 累加器的内容低16位是程序存储器的地址; 仅有两条指令用该寻址方式: READA ; WRITA ; 如:READA Sm

7、em;以A中的数为地址,从PM中读一个数由Smem所指的DM中;,第三章:C54x指令系统_3.3 寻 址 方 式,4. 直接寻址 含义:用指令中包含的数据M地址的低7位+基地址 16位数据存储器地址。 基地址: DP_ 数据页指针 SP_堆栈指针 用途:利用数据页指针和堆栈指针寻址DM 指令代码格式:,第7位确定了寻址方式,若I=0,表示指令使用直接寻址方式,第三章:C54x指令系统_3.3 寻 址 方 式,说明: 地址形成 当ST1中的CPL=0时,由ST0中的DP值(9位地址)与指令中的7位地址一道形成16位数据存储器地址。, 当ST1中的CP=时,将指令中的7位地址与16位堆栈指针SP

8、相加,形成16位的数据存储器地址。,第三章:C54x指令系统_3.3 寻 址 方 式,说明: 该方式可在不改变DP或SP的情况下,随机寻址128个单元; 因为DP值的范围是从0到511(129),把存储器分成512页。 指令长度只需1个字(16位); 举例: RSBX CPL; CPL=0 LD #2, DP; LD 60H, 16, A; 第2页的60H单元内容装入A高16位,第三章:C54x指令系统_3.3 寻 址 方 式,5. 间接寻址 含义:按辅助R中的内容寻址数据M 用途:主要用在需要存储器地址以步进方式连续变化的场合。 说明:(1)地址形式: AR0AR7 (2)间接寻址方式非常灵

9、活:在一条指令中访问两个DM单元(能在两个独立的M读数据,或在一个M读另一个M单元写) (3)间接寻址有两种方式。 单操作数间接寻址:从存储器中读或写一个单16位数据操作数。 双操作数间接寻址:在一条指令中访问两个数据存储单元。,第三章:C54x指令系统_3.3 寻 址 方 式,(1)单操作数间接寻址 单操作数寻址是一条指令中,只有一个存储器操作数(即从存储器中只存取一个操作数),其指令的格式: 其中:158位是指令的操作码;第7位I=1,表示指令的寻址方式为间接寻址;63位为方式(MOD),定义了间接寻址的类型(表3-3);20位定义寻址所使用的辅助寄存器(如AR0AR7)。 例如:LD *

10、AR2+,A ;表示将由AR2寄存器内容所指向的数据存储器单元中的数据传送到累加器A中,然后AR2中的地址加1。,第三章:C54x指令系统_3.3 寻 址 方 式,MOD域:共有16种间接寻址的类型 可以加1、减1;(如*ARx- 、*ARx+ ) 加一个16位偏移量;(如*ARx(lk)、*+ARx(lk) ) 用AR0中的值索引寻址;(如*ARx-0和*ARx+0) 以%符号表示的循环寻址,如*ARx+0%; 以B符号表示位倒序寻址,如*ARx+0B。 可以在指令执行存取操作前或后修改要存取操作数的地址。,第三章:C54x指令系统_3.3 寻 址 方 式,循环寻址 表示:用%表示,其辅助寄

11、存器使用规则与其他寻址方式相同。 用途:在卷积、自相关和FIR滤波器等许多算法中,都需要在存储 器中设置循环缓冲区。 它是一个滑动窗,包含最近的数据, 若有新的数据到来,它将覆盖旧的数据。 循环指针在第一次的移动从1,2,3,4,5,6,78; 第二次是从2,3,4,5,6,781; 第三次是从3,4,5,6,7812; 循环寻址:实现循环缓冲区的关键。,第三章:C54x指令系统_3.3 寻 址 方 式, 循环缓冲器主要参数: 长度计数器(BK):定义了循环缓冲区的大小R(R2N); 有效基地址(EFB):定义了循环缓冲区的起始地址,即ARx低N位设为0所得到的值; 尾地址(EOB):定义了循

12、环缓冲区的尾部地址; 缓冲区索引(Index):当前ARx的低N位; 步长(Step):一次加到辅助R或从辅助R中减去的值; 例如,一个长度为31个字的循环缓冲区必须开始于最低5位为零的地址(即XXXX XXXX XXX0 0000b),且赋值BK=31。,第三章:C54x指令系统_3.3 寻 址 方 式,循环缓冲示意图,第三章:C54x指令系统_3.3 寻 址 方 式, 循环寻址的算法: If 0index+stepBK; Index =index+step; Else if index+step BK; Index =index+step-BK; Else if index+step0;

13、Index =index+step+BK;,第三章:C54x指令系统_3.3 寻 址 方 式,循环寻址 使用循环寻址时,必须遵循以下三个原则: 循环缓冲区的长度 R2N,且地址从一个低N位为0的地址开始; 步长小于或等于循环缓冲区的长度; 所使用的辅助寄存器必须指向缓冲区单元。,第三章:C54x指令系统_3.3 寻 址 方 式,举例: LD *+AR1(8)%,A; STL A, *+AR1(8)%; 假定:BK=10,N=4,AR1=100H 由上可知:index = 0 (因为 AR1的低四位) Step =8(*+AR1(8)%) 执行第一条指令时:index = index + ste

14、p = 8 (寻址108H单元) 执行第二条指令时:index = index+ step= 8+8=16 BK; 故:index=index+step-BK=8+8-10=6 (寻址106H单元),第三章:C54x指令系统_3.3 寻 址 方 式,循环寻址过程,第三章:C54x指令系统_3.3 寻 址 方 式,位倒序寻址 用途:主要用于FFT运算,可提高FFT算法的执行速度和存储器的使用效率。 原因:当FFT输入样点值是倒序时,输出是顺序;反之亦然,采用位码倒寻址的方式恰好符合FFT算法要求。 实现方法:AR0存放的整数N是总单元个数的1/2; ARX指向一个数据存放的物理单元; AR0以地

15、址倒序的方式+ARX(即进行从左到右加法进位); 举例:以16点FFT为例,当输入序列是顺序时,其FFT变换结果的次序为X(0)、X(8)、X(4)、X(15)的倒序方式(表3-4 ),,第三章:C54x指令系统_3.3 寻 址 方 式,第三章:C54x指令系统_3.3 寻 址 方 式,位倒序寻址举例: 以16点FFT为例,假设辅助寄存器都是8位字长,AR2中存放数据存储器的基地址,指向X(0)的存储单元,设定AR0的值是FFT长度的一半。 即: AR2=0110 0000(存储器基地址) AR0=0000 1000(FFT长度的一半),第三章:C54x指令系统_3.3 寻 址 方 式,执行指令: RPT #15;循环执行下一条语句15+1次 PORTW *AR2 +0B,PA;PA为外设输出端口,AR0以倒序方式加入 注:第0次循环 (0110 0000) PA X(0) 第1次循环 (0110 1000) PA X(1) 第2次循环 (0110 0100) PA X(2) 第3次循环 (0110 1100) PA X(3) 利用上述两条指令即可向外设口(口地址为PA)输出整序后的FFT变换结果。,第三章:C54x指令

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

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

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