第3章指系统.ppt

上传人:hyn****60 文档编号:88406265 上传时间:2023-04-26 格式:PPT 页数:92 大小:865KB
返回 下载 相关 举报
第3章指系统.ppt_第1页
第1页 / 共92页
第3章指系统.ppt_第2页
第2页 / 共92页
点击查看更多>>
资源描述

《第3章指系统.ppt》由会员分享,可在线阅读,更多相关《第3章指系统.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、D S P D S P 技技 术术 及及 应应 用用 第三章:TMS320C54x指令系统指令系统7种寻址方式种寻址方式4种基本类型的汇编语言指令。种基本类型的汇编语言指令。第三章:TMS320C54x指令系统 教学要求:教学要求:教学要求:教学要求:C54x C54x DSPDSP的的指指令令系系统统包包括括汇汇编编语语言言指指令令、汇汇编编伪伪指指令令、宏宏指指令令,本本章章主主要要介介绍绍C54xC54x的的7种种寻寻址址方方式式和和汇汇编编语言指令,其他指令将在第语言指令,其他指令将在第4 4章介绍。章介绍。了了解解汇汇编编源源程程序序的的书书写写格格式式,掌掌握握常常见见的的7种种寻

2、寻址址方式,尤其是间接寻址方式。方式,尤其是间接寻址方式。掌掌握握算算术术运运算算、逻逻辑辑运运算算、程程序序控控制制、存存储储和和装装入入4种基本类型的汇编语言指令。种基本类型的汇编语言指令。第三章:C54x指令系统_3.1 3.1 汇编源程序格式汇编源程序格式 C54xC54x汇编语言语句汇编语言语句格式如下(格式如下(4个部分):标号标号标号标号:指令指令指令指令 操作数列表操作数列表操作数列表操作数列表;注释;注释;注释;注释 beginbegin:LD#40LD#40,AR1AR1;将立即数;将立即数;将立即数;将立即数4040传送给传送给传送给传送给ARlARl其中其中其中其中:(

3、1)(1)标号标号标号标号供本程序的其他部分或其他程序调用。供本程序的其他部分或其他程序调用。标标号号一一般般为为可可选选项项,若若使使用用则则必必须须从从源源语语句句的的第第一一列列开开始始;一一个个标标号号允允许许最最多多有有3232个个字字符符(字字母母、数数字字等等,不不能能用用数数字字开开头头),大小写敏感;标号后可跟一个,大小写敏感;标号后可跟一个“:”,也可不跟。,也可不跟。如果不用标号,则第一列上必须是空格、分号或星号。如果不用标号,则第一列上必须是空格、分号或星号。(2)(2)指令域指令域指令域指令域包括以下指令码之一:包括以下指令码之一:助记符指令助记符指令 (如如STMS

4、TM,MACMAC,MPVDMPVD,STL)STL);汇编伪指令汇编伪指令(如如.data.data,.list.list,.set).set);宏指令宏指令(如如.macro.macro,.varvar,.mexitmexit);宏调用。宏调用。注注:作作为为助助记记符符指指令令,一一般般用用大大写写;汇汇编编伪伪指指令令和和宏宏指指令令,以以句句点点“.”.”开开始,且为小写。始,且为小写。第三章:C54x指令系统_3.1 3.1 汇编源程序格式汇编源程序格式 (3)(3)操操操操作作作作数数数数可可以以是是常常量量、符符号号,或或是是常常量量和和符符号号的的混混合表达式,操作数之间用逗

5、号分开。合表达式,操作数之间用逗号分开。汇汇编编器器允允许许在在操操作作数数前前使使用用前前缀缀来来指指定定操操作作数数(常常数、符号或表达式数、符号或表达式)是地址还是立即数或间接地址。是地址还是立即数或间接地址。前缀的使用规则如下:前缀的使用规则如下:前缀前缀#表示其后的操作数为立即数。表示其后的操作数为立即数。例如:例如:LabelLabel:ADD#123ADD#123,A A;第三章:C54x指令系统_3.1 3.1 汇编源程序格式汇编源程序格式 前缀前缀*表示其后的操作数为间接地址。表示其后的操作数为间接地址。例如:例如:LabelLabel:LD *AR4LD *AR4,A A;

6、以以AR4AR4的内容为地址,将该地址的内容装入累加器的内容为地址,将该地址的内容装入累加器A A 前前缀缀 表表示示其其后后的的操操作作数数是是采采用用直直接接寻寻址址或或绝绝对对寻寻址的地址。址的地址。例如:例如:ADD#10,XYZ ADD#10,XYZ (4)(4)注释注释注释注释可以从一行的任一列开始直到行尾。可以从一行的任一列开始直到行尾。任一任一ASCIIASCII码码(包括空格包括空格)都可以组成注释。都可以组成注释。如果注释从第一列开始,用如果注释从第一列开始,用“;”号或号或“*”“*”号开号开头。头。第三章:C54x指令系统_3.2 3.2 指令集符号与意义指令集符号与意

7、义 TMS320C54xTMS320C54x的指令系统符号和意义见的指令系统符号和意义见表表3 3-1 1 第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 寻寻寻寻址址址址方方方方式式式式:指指当当CPUCPU执执行行指指令令时时,寻寻找找指指令令所所指指定定的参与运算的操作数的方法。的参与运算的操作数的方法。作作用用:可可以以根根据据程程序序要要求求采采用用不不同同的的寻寻址址方方式式,以以提提高高程程序序的的速速度度和和代代码码效效率率。不不同同的的寻寻址址方方式式为为编编程程提提供了极大的柔性编程操作空间,供了极大的柔性编程操作空间,第三章:C54x指令系统_3.3 3

8、.3 寻寻 址址 方方 式式C54C54共有共有7 7 7 7种种种种基本寻址方式基本寻址方式立即寻址立即寻址绝对寻址绝对寻址累加器寻址累加器寻址直接寻址直接寻址间接寻址间接寻址存储器映像寄存器寻址存储器映像寄存器寻址堆栈寻址堆栈寻址第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 1.1.立即寻址立即寻址含义含义含义含义:指令中已包含有执行指令所需的操作数;:指令中已包含有执行指令所需的操作数;用途用途用途用途:主要用于:主要用于R R或或M M的初始化;的初始化;说明说明说明说明:在数值或符号前加在数值或符号前加#表示立即数;表示立即数;立即数有两种形式立即数有两种形式:3

9、、5、8、9位短立即数;位短立即数;16位长立即数位长立即数 例如:例如:LD#10,A;LD#10,A;立即数立即数1010AA累加器累加器 RPT#99;将紧跟在后面的语句重复;将紧跟在后面的语句重复99+1次次第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 2.2.绝对寻址绝对寻址 含义含义含义含义:指令中包含所需寻址的:指令中包含所需寻址的M M单元地址或单元地址或I/OI/O端口地址;端口地址;用途用途用途用途:利用:利用1616位地址寻址位地址寻址M M或或I/OI/O 说明说明说明说明:绝对寻址的四种类型:绝对寻址的四种类型 数据存储器寻址:程序标号数据存储器寻

10、址:程序标号oror数据,表示数据数据,表示数据M M地址地址 如:如:MVKD DATAMVKD DATA,*AR5AR5;(DATADATA)(AR5)(AR5)第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 程序存储器寻址:程序存储器寻址:如:如:MVPD TABLEMVPD TABLE,*AR7-AR7-;(TABLETABLE)(AR7)and AR7=AR7-1(AR7)and AR7=AR7-1 I/O I/O端口寻址(端口寻址(2 2条)条)如:如:PORTR FIFOPORTR FIFO,*AR5AR5;从端口从端口FIFOFIFO读数据读数据(AR5AR5

11、)PORTW*AR2PORTW*AR2,BOFOBOFO;将(将(AR2AR2)BOFOBOFO端口端口 *(lklk)寻址:用一个符号或常数确定一个寻址:用一个符号或常数确定一个数据数据M M地址地址 如:如:LD *(BUFFER),A;LD *(BUFFER),A;(BUFFERBUFFER)A A 注:适用于支持单数据存储器操作数(Smem)的指令,访问数据空间的任意单 元而不改变DP的值,不用对AR初始化 第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 3.3.累加器寻址累加器寻址 含义含义含义含义:用:用累加器的数据作为地址累加器的数据作为地址来来读写读写程序程序

12、存储器存储器;用途用途用途用途:累加器对存放数据的程序存储器寻址;:累加器对存放数据的程序存储器寻址;说明说明说明说明:累加器内容的低累加器内容的低1616位作为程序存储器的地位作为程序存储器的地址;址;仅有两条指令用该寻址方式:仅有两条指令用该寻址方式:READAREADA;WRITAWRITA;如:如:READA READA SmemSmem;以以A A中的数为地址,从中的数为地址,从PMPM中读一个数中读一个数由由SmemSmem所指的所指的DMDM中中 WRITA WRITA SmemSmem;SmemSmem所指的所指的DMDM中的数中的数以以A A中的数为地址的中的数为地址的PMP

13、M中中第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 4.4.直接寻址直接寻址 含含含含义义义义:用用指指令令中中包包含含的的数数据据M M地地址址的的低低7 7位位(偏偏移移地地址址值值)+基基地地址址 1616位位数据存储器数据存储器地址地址。基地址基地址基地址基地址:DP_数据页指针数据页指针SP_堆栈指针堆栈指针 用途用途用途用途:利用数据页指针和堆栈指针寻址:利用数据页指针和堆栈指针寻址DMDM。指令代码格式指令代码格式指令代码格式指令代码格式:注:第注:第7位确定了寻址方式,若位确定了寻址方式,若I=0,表示指令使用直接寻址方式,表示指令使用直接寻址方式第三章:C

14、54x指令系统_3.3 3.3 寻寻 址址 方方 式式 说明说明说明说明:地址形成地址形成 当当ST1ST1中中的的CPL=0CPL=0时时,由由ST0ST0中中的的DPDP值值(9(9位位地地址址)与与指指令令中的中的7 7位地址一道形成位地址一道形成1616位数据存储器地址。位数据存储器地址。当当ST1中的中的CP=时,将指令中的时,将指令中的7位地址与位地址与16位位堆栈指针堆栈指针SP相加,形成相加,形成16位的数据存储器地址。位的数据存储器地址。第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 说明说明说明说明:该方式可在不改变该方式可在不改变DPDP或或SPSP的情

15、况下,随机寻址的情况下,随机寻址128128个单元个单元;因为因为DP值的范围是从值的范围是从0到到511,把存储器分成,把存储器分成512页。页。指令长度只需指令长度只需1 1个字(个字(1616位)位);举例举例举例举例:RSBX CPL;RSBX CPL;CPL=0CPL=0 LD#2,DP;LD#2,DP;DPDP指向第指向第2 2页页 LD 60H,16,A;LD 60H,16,A;第第2 2页的页的60H60H单元内容装入单元内容装入A A高高1616位位 第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 5.5.间接寻址间接寻址含义含义含义含义:按辅助:按辅助R

16、R中的内容寻址中的内容寻址数据数据M M用途:用途:主要用在需要主要用在需要存储器地址以步进方式连续变化存储器地址以步进方式连续变化的场合。的场合。说明说明说明说明:(:(1 1)地址形式:)地址形式:AR0AR0AR7AR7 (2 2)间间接接寻寻址址方方式式非非常常灵灵活活:可可在在一一条条指指令令中中访访问问两两个个DMDM单单元(能在两个独立的元(能在两个独立的M M读数据,或在一个读数据,或在一个M M读另一个读另一个M M单元写)单元写)(3)间接寻址有两种方式。)间接寻址有两种方式。单操作数间接寻址:从存储器中读或写一个单单操作数间接寻址:从存储器中读或写一个单16位数据操作数。

17、位数据操作数。双操作数间接寻址:在一条指令中访问两个数据存储单元。双操作数间接寻址:在一条指令中访问两个数据存储单元。第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式(1)单操作数间接寻址单操作数间接寻址单单操操作作数数寻寻址址是是一一条条指指令令中中,只只有有一一个个存存储储器器操操作作数数(即即从从存储器中只存取一个操作数存储器中只存取一个操作数),其指令的格式:,其指令的格式:其其中中:151515158 8 8 8位位是是指指令令的的操操作作码码;第第7 7位位I=1I=1I=1I=1,表表示示指指令令的的寻寻址址方方式式为为间间接接寻寻址址;6 6 6 63 3 3

18、3位位为为方方式式(MOD)(MOD),定定义义了了间间接接寻寻址址的的类类型型(P57P57表表3 3-3 3);2 2 2 20 0 0 0位位定定义义寻寻址址所所使使用用的的辅辅助助寄寄存存器器(如如AR0AR0AR7)AR7)。例例如如:LD LD *AR2+*AR2+,A A ;表表示示将将由由AR2AR2寄寄存存器器内内容容所所指指向向的的数数据据存存储储器器单单元元中中的的数数据传送到累加器据传送到累加器A A中,即(中,即(AR2AR2)AA,然后,然后AR2AR2中的地址加中的地址加1 1。MOD域:域:共有共有16种间接寻址的类型(表种间接寻址的类型(表3-3)域域操作码操

19、作码功能功能0000*ARxAddr=ARx可以将地址加可以将地址加1或减或减1,可以在指令执行存取操作前或后修改,可以在指令执行存取操作前或后修改要存取操作数的地址:要存取操作数的地址:0001*ARx-Addr=ARx,ARx=ARx-10010*ARx+Addr=ARx,ARx=ARx+10011*+ARxAddr=ARx+1,ARx=ARx+1可以将地址加一个可以将地址加一个16位偏移量:位偏移量:1100*ARx(lk)Addr=ARx+lk,ARx=ARx1101*+ARx(lk)Addr=ARx+lk,ARx=ARx+lk1111*(lk)Addr=lk用用AR0中的值中的值索引

20、寻址索引寻址:0101*ARx-0Addr=ARx,ARx=ARx-AR00110*ARx+0Addr=ARx,ARx=ARx+AR0以以B符号表示的符号表示的位倒序寻址:位倒序寻址:0100*ARx-0BAddr=ARx,ARx=B(ARx-AR0)0111*ARx+0BAddr=ARx,ARx=B(ARx+AR0)以以%符号表示的符号表示的循环寻址:循环寻址:1000*ARx-%Addr=ARx,ARx=circ(ARx-1)1010*ARx+%Addr=ARx,ARx=circ(ARx+1)1001*ARx-0%Addr=ARx,ARx=circ(ARx-AR0)1011*ARx+0%A

21、ddr=ARx,ARx=circ(ARx+AR0)1110*+ARx(lk)%Addr=circ(ARx+lk),ARx=circ(ARx+lk)第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 循环寻址循环寻址表示:表示:用用%表示,其辅助寄存器使用规则与其他寻址方式相同。表示,其辅助寄存器使用规则与其他寻址方式相同。用途:用途:在卷积、自相关和在卷积、自相关和FIR滤波器等许多算法中,都需要在存储滤波器等许多算法中,都需要在存储器中设置器中设置循环缓冲区循环缓冲区。它它是一个滑动窗,包含最近的数据,是一个滑动窗,包含最近的数据,若有新的数据到来,它将覆盖旧的数据。若有新的数

22、据到来,它将覆盖旧的数据。例如:循环指针在第一次的移动从例如:循环指针在第一次的移动从1,2,3,4,5,6,78;第二次是从第二次是从2,3,4,5,6,781;第三次是从第三次是从3,4,5,6,7812;循环寻址:循环寻址:实现循环缓冲区的关键。实现循环缓冲区的关键。第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 循环缓冲器主要参数循环缓冲器主要参数:长度计数器长度计数器(BKBK):):定义了循环缓冲区的大小定义了循环缓冲区的大小R R(R2R2N N););有有效效基基地地址址(EFBEFB):定定义义了了循循环环缓缓冲冲区区的的起起始始地地址址,即即ARxARx低

23、低N N位设为位设为0 0所得到的值;所得到的值;尾地址尾地址(EOBEOB):):定义了循环缓冲区的尾部地址定义了循环缓冲区的尾部地址;缓冲区索引缓冲区索引(IndexIndex):):当前当前ARxARx的低的低N N位;位;步长步长(StepStep):):一次加到辅助一次加到辅助R R或从辅助或从辅助R R中减去的值;中减去的值;例例如如,一一个个长长度度为为31个个字字的的循循环环缓缓冲冲区区必必须须开开始始于于最最低低5位位为为零零的的地址地址(即即XXXXXXXXXXX00000b),且赋值,且赋值BK=31。第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 循循

24、环环缓缓冲冲示示意意图图第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 循环寻址的算法循环寻址的算法:If0index+stepBK;Index=index+step;Elseifindex+stepBK;Index=index+step-BK;Elseifindex+step0;Index=index+step+BK;第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 使用循环寻址时,必须遵循以下三个原则:使用循环寻址时,必须遵循以下三个原则:循循循循环环环环缓缓缓缓冲冲冲冲区区区区的的的的长长长长度度度度 R2RBK;故:故:index=index+step

25、-BK=8+8-10=6(寻址寻址106H单元)单元)第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 循环寻址过程循环寻址过程第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 位倒序寻址位倒序寻址 用用用用途途途途:主主要要用用于于FFT运运算算,可可提提高高FFT算算法法的的执执行行速速度和存储器的使用效率。度和存储器的使用效率。原原原原因因因因:当当FFT输输入入样样点点值值是是倒倒序序时时,输输出出是是顺顺序序;反反之之亦亦然然,采采用用位位码码倒倒序序寻寻址址的的方方式式恰恰好好符符合合FFT算算法法要求。要求。图1 N点DITFFT运算流图(N=8)

26、实现方法实现方法实现方法实现方法:AR0存放的整数存放的整数N是总单元个数的是总单元个数的1/2;ARx指向一个数据存放的物理单元;指向一个数据存放的物理单元;AR0以以地地址址倒倒序序的的方方式式+ARx(即即进进行行从从左左到到右右加法进位);加法进位);举举举举例例例例:以以16点点FFT为为例例,当当输输入入序序列列是是顺顺序序时时,其其FFT变变 换换 结结 果果 的的 次次 序序 为为 X(0)、X(8)、X(4)、X(15)的倒序方式(的倒序方式(表表3-43-4 )第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 存储单元地址变换结果位码倒序位码倒序寻址结果00

27、00X(0)0000X(0)0001X(8)1000X(1)0010X(4)0100X(2)0011X(12)1100X(3)0100X(2)0010X(4)0101X(10)1010X(5)0110X(6)0110X(6)0111X(14)1110X(7)1000X(1)0001X(8)1001X(9)1001X(9)1010X(5)0101X(10)1011X(13)1101X(11)1100X(3)0011X(12)1101X(11)1011X(13)1110X(7)0111X(14)1111X(15)1111X(15)第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 位

28、倒序寻址举例:位倒序寻址举例:以以16点点FFT为为例例,假假设设辅辅助助寄寄存存器器都都是是8 8位位字字长长,AR2AR2中中存存放放数数据据存存储储器器的的基基地地址址,指指向向X(0)X(0)的的存存储储单单元元,设设定定AR0AR0的的值值是是FFTFFT长度的一半。长度的一半。即:即:AR2=0110 0000AR2=0110 0000(存储器基地址存储器基地址)AR0=0000 1000AR0=0000 1000(FFTFFT长度的一半长度的一半)第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 执行指令:执行指令:RPT#15;循环执行下一条语句循环执行下一条语

29、句15+1次次PORTW*AR2+0B,PA;PA为外设输出端口,为外设输出端口,AR0以倒序方式加入以倒序方式加入注:第注:第0次循环次循环(01100000)PAX(0)第第1次循环次循环(01101000)PAX(1)第第2次循环次循环(01100100)PAX(2)第第3次循环次循环(01101100)PAX(3)利利用用上上述述两两条条指指令令即即可可向向外外设设口口(口口地地址址为为PA)输输出出整整序序后后的的FFT变换结果变换结果。第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式(2)双操作数间接寻址双操作数间接寻址 用途:用途:用在完成两个读或一个读且一个写的

30、指令中。用在完成两个读或一个读且一个写的指令中。说明:说明:该指令只有一个字长,只能以间接寻址的方式工作。该指令只有一个字长,只能以间接寻址的方式工作。格式如下:格式如下:其中,其中,15158 8位:指令操作码;位:指令操作码;7 76 6位为位为XmodXmod,定义了用于访问定义了用于访问XmemXmem操作数间接寻址方式的类型(见表操作数间接寻址方式的类型(见表3-53-5););5 54 4位为位为XarXar,确定了包含确定了包含XmemXmem地址的辅助寄存器;地址的辅助寄存器;3 32 2位为位为YmodYmod,定义了用于访问定义了用于访问YmemYmem操作数的间接寻址方式

31、的类型;操作数的间接寻址方式的类型;1 10 0位为位为YarYar,确定了包含确定了包含YmemYmem的辅助寄存器。的辅助寄存器。见表见表3-5 3-5 第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 6.存储器映射寄存器寻址存储器映射寄存器寻址含义含义含义含义:寻址:寻址SFR或或MMR;用途用途用途用途:修改:修改SFR的内容且不影响的内容且不影响DP/SP的当前值;的当前值;地址产生方式地址产生方式地址产生方式地址产生方式:采采采采用用用用直直直直接接接接寻寻寻寻址址址址方方方方式式式式:高高9位位DMA置置0,利利用用指指令令中中的的低低7位位地址地址MMR;采采

32、采采用用用用间间间间接接接接寻寻寻寻址址址址方方方方式式式式:高高9位位DMA置置0,按按当当前前ARX中中的的低低位地址位地址MMR;第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 说明说明说明说明:这种寻址方式下,对这种寻址方式下,对MMR执行写操作开销最小;执行写操作开销最小;仅有仅有8 8条指令可进行条指令可进行MMR寻址操作:寻址操作:LDM MMR,dst ;将将MMR内容装入累加器内容装入累加器 MVDM dmad,MMR ;将数据存储器单元内容装入;将数据存储器单元内容装入MMR MVMD MMR,dmad ;将将MMR的内容录入数据存储器单元的内容录入数据存

33、储器单元 MVMM MMRx,MMRy;MMRx,MMRy只能是只能是AR0AR7 POPM MMR ;将将SP指定单元内容给指定单元内容给MMR,然后然后SP=SP+1 PSHM MMR ;将将MMR内容给内容给SP指定单元,然后指定单元,然后SP=SP-1 STLM src,MMR ;将累加器的低;将累加器的低16位给位给MMRSTM#1k,MMR;将一个立即数给;将一个立即数给MMR第三章:C54x指令系统_3.3 3.3 寻寻 址址 方方 式式 7.堆栈寻址堆栈寻址含义含义含义含义:堆栈操作时,利用堆栈指针来寻址;:堆栈操作时,利用堆栈指针来寻址;用途用途用途用途:堆栈内容的压入:堆栈

34、内容的压入/弹出;弹出;说明说明说明说明:a:特殊的存储区域(先进后出);特殊的存储区域(先进后出);b:堆栈指针:堆栈指针SP(16位)位)始终指向栈顶即最后一个存放的数据;始终指向栈顶即最后一个存放的数据;c:C54x的堆栈是从高地址的堆栈是从高地址低地址方向生长;低地址方向生长;采用堆栈寻址指令采用堆栈寻址指令采用堆栈寻址指令采用堆栈寻址指令(4条):条):PSHD将数据存储器中的一个数压入堆栈;将数据存储器中的一个数压入堆栈;PSHM将一个将一个MMR中的值压入堆栈;中的值压入堆栈;POPD从堆栈弹出一个数至数据存储单元;从堆栈弹出一个数至数据存储单元;POPM从堆栈弹出一个数至从堆栈

35、弹出一个数至MMR。第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 TMS320C54X共有共有129条条指令指令按功能分为按功能分为4 4 4 4大类(大类(每大类又分为若干小类)每大类又分为若干小类):算术运算指令;算术运算指令;逻辑运算指令;逻辑运算指令;程序控制指令;程序控制指令;存储和装入指令。存储和装入指令。*指令书写方式:助记符指令书写方式:助记符/表达式表达式 第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 1.算术运算指令算术运算指令(7979条条分为分为6 6小类小类)加法指令加法指令(ADD)(ADD);减法指令减法指令(SUB)(SU

36、B);乘法指令乘法指令(MPY)(MPY);乘加指令乘加指令(MAC)(MAC)和乘减指令和乘减指令(MAS)(MAS);双数双数/双精度指令双精度指令(DADD(DADD、DSUB)DSUB);特殊操作指令特殊操作指令(ABDST、SQDST)。(1)加法指令加法指令(13条)条)P64P64(表(表3-6)不同的加法指令用途不同不同的加法指令用途不同1)ADD:不带进位,可带移位的加法:不带进位,可带移位的加法ADDSmem,src;src=src+SmemADDSmem,TS,src;src=src+SmemTSADDSmem,16,src,dst;dst=src+Smem16ADDSm

37、em,SHIFT,src,dst;dst=src+SmemSHIFTADDXmem,SHFT,src;src=src+XmemSHFTADDXmem,Ymem,dst;dst=Xmem16+Ymem16ADD#lk,SHFT,src,dst;dst=src+#lkSHFTADD#lk,16,src,dst;dst=src+#lk16ADDsrc,SHIFT,dst;dst=dst+srcSHIFTADDsrc,ASM,dst;dst=dst+srcASM2)ADDCSmem,src;带进位的加法,带进位的加法,src=src+Smem+CADDM#lk,Smem;专用于立即数,专用于立即数,S

38、mem=Smem+#lkADDSSmem,src;无符号数的加法,无符号数的加法,src=src+uns(Smem)第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 加法指令举例加法指令举例【例例3.1】ADD*AR3+,14,A;将将AR3所所指指的的数数据据存存储储单单元元内内容容,左左移移14位位与与A相加,结果放相加,结果放A中,中,AR3加加1。(2)(2)减法指令减法指令(13条)条)P65P65(表(表3-7)1)SUB:不带借位、可带移位的减法:不带借位、可带移位的减法SUBSmem,src;src=src-SmemSUBSmem,TS,src;src=src-

39、SmemTSSUBSmem,16,src,dst;dst=src-Smem16SUBSmem,SHIFT,src,dst;dst=src-SmemSHIFTSUBXmem,SHFT,src;src=src-XmemSHFTSUBXmem,Ymem,dst;dst=Xmem16-Ymem16SUB#lk,SHFT,src,dst;dst=src-#lkSHFTSUB#lk,16,src,dst;dst=src-#lk16SUBsrc,SHIFT,dst;dst=dst-srcSHIFTSUBsrc,ASM,dst;dst=dst-srcASM2)SUBBSmem,src;带借位的减法,带借位的减

40、法,src=src-Smem-CSUBSSmem,src;无符号数的减法,无符号数的减法,src=src-uns(Smem)3)条件减法条件减法SUBCSmem,src;if(src-Smem0;src=(src-Smem15)1+1;elsesrc=src1应用:使用应用:使用SUBC重复重复16次减法,就可以完成次减法,就可以完成除法除法功能。功能。被除数被除数-(除数(除数1515):够减:被除数左移,商):够减:被除数左移,商+1+1;不够减:被除数左移,商不够减:被除数左移,商+0+0;注注:被被除除数数和和商商共共用用一一个个R R B B:随随着着B B的的左左移移被被除除数数逐

41、渐退出,商从右逐渐退出,商从右左逐渐进入。左逐渐进入。第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 减法指令举例减法指令举例【例3.2】利用利用SUBC完成整数除法完成整数除法(TEMP1/TEMP2)LDTEMP1,B;将被除数将被除数TEMP1装入装入B累加器的低累加器的低16位位RPT#15;重复重复SUBC指令指令16次次SUBCTEMP2,B;使用使用SUBC指令完成除法指令完成除法STLB,TEMP3;将商将商(B累加器的低累加器的低16位位)存入变量存入变量TEMP3STHB,TEMP4;将余数将余数(B累加器的高累加器的高16位位)存入变量存入变量TEMP4

42、(3)(3)乘乘法指令法指令(10条)条)P66P66(表(表3-8)1)MPYSmem,dst;dst=T*SmemMPYRSmem,dst;带圆整的乘法,带圆整的乘法,dst=rnd(T*Smem)MPYXmem,Ymem,dst;dst=Xmem*Ymem,T=XmemMPYSmem,#lk,dst;dst=Smem*#lk,T=Smem2)MPYAdst;dst=T*A(3216)MPYASmem;B=Smem*A(3216),T=Smem3)MPYUSmem,dst;无符号乘法无符号乘法,dst=T*uns(Smem)4)SQURSmem,dst;平方平方,dst=Smem*Smem

43、,T=SmemSQURA,dst;dst=A(3216)*A(3216)第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 关于关于小数乘法:小数乘法:小数表示:小数点通常安排在最高位后,小数表示:小数点通常安排在最高位后,Q15Q15定标;定标;小数乘法:需将小数乘法:需将FRCT设置为设置为1,系统自动将乘积结果左移,系统自动将乘积结果左移1位。位。第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 乘法指令举例乘法指令举例【例例3.2】MPY*13,A;T*SmemA,Smem所所在在的的单单数数据据存存储储器地址为器地址为13(0Dh)(4 4)乘加和乘减指

44、令乘加和乘减指令(15条)P68(表3-9)1)乘加乘加MACR Smem,src;src=rnd(src+T*Smem)MACR Xmem,Ymem,src,dst;dst=rnd(src+Xmem*Ymem),T=XmemMAC#lk,src,dst;dst=src+T*#lkMACSmem,#lk,src,dst;dst=src+Smem*#lk,T=SmemMACAR Smem,B;B=rnd(B+Smem*A(3216),T=SmemMACAR T,src,dst;dst=rnd(src+T*A(3216)MACPSmem,pmad,src;src=src+Smem*pmad,T=S

45、memMACDSmem,pmad,src;src=src+Smem*pmad;T=Smem,(Smem+1)=SmemMACSUXmem,Ymem,src;src=src+uns(Xmem)*Ymem,T=Xmem2)乘减乘减MASR Smem,src;src=rnd(src-T*Smem)MASR Xmem,Ymem,src,dst;dst=rnd(src-Xmem*Ymem),T=XmemMASA Smem,B;B=B-Smem*A(3216),T=SmemMASAR T,src,dst;dst=rnd(src-T*A(3216)3)SQURASmem,src;src=src+Smem*S

46、mem,T=SmemSQURSSmem,src;src=src-Smem*Smem,T=Smem第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 【例例3.3】MAC*AR5+,A;A+(AR5)*TTA,AR5=AR5+1(5 5)长操作数指令长操作数指令(6条)P69(表3-10)DADDLmem,src,dstifC16=0(双精度加法)(双精度加法)dst=Lmem+srcifC16=1(双(双16位加法)位加法)dst(3916)=Lmem(3116)+src(3116),dst(150)=Lmem(150)+src(150)DSUBLmem,srcifC16=0ds

47、t=src-LmemifC16=1dst(3916)=src(3116)-Lmem(3116),dst(150)=src(150)-Lmem(150)DRSUBLmem,srcifC16=0dst=Lmem-srcifC16=1dst(3916)=Lmem(3116)-src(3116),dst(150)=Lmem(150)-src(150)DADSTLmem,dstifC16=0dst=Lmem+(T16+T)ifC16=1dst(3916)=Lmem(3116)+T,dst(150)=Lmem(150)-TDSADTLmem,dstifC16=0dst=Lmem-(T16+T)ifC16=

48、1dst(3916)=Lmem(3116)-T,dst(150)=Lmem(150)+TDSUBTLmem,dstifC16=0dst=Lmem-(T16+T)ifC16=1dst(3916)=Lmem(3116)-T,dst(150)=Lmem(150)-T第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 【例3.4】DADD *AR3+,A,BDADD *AR3+,A,B;If C16=0 If C16=0 dstdst=LmemLmem+srcsrc (长字运算:长字运算:AR3+2AR3+2)第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 (6 6)特

49、殊应用指令特殊应用指令(15条)P70(表3-11)1)ABDSTXmem,Ymem;求两点之间距离的绝对值求两点之间距离的绝对值2)ABSsrc,dst;求绝对值求绝对值,dst=|src|3)CMPLsrc,dst;求反码求反码,dst=4)DELAYSmem;存储器延迟存储器延迟,(Smem+1)=Smem5)EXPsrc;求累加器指数求累加器指数6)FIRSXmem,Ymem,pmad;对对称称有有限限冲冲击击响响应应滤滤波波器器7)LMSXmem,Ymem;求最小均方值求最小均方值8)MAXdst;dst=max(A,B)9)MINdst;dst=min(A,B)10)NEGsrc,

50、dst;求反值求反值,dst=-src11)NORMsrc,dst;归一化归一化,dst=srcTS12)POLYSmem;求多项式的值求多项式的值,B=Smem16,A=rnd(A(3216)*T+B)13)RNDsrc,dst;累加器的值凑整,累加器的值凑整,dst=src+21514)SATsrc;对累加器的值做饱和计算对累加器的值做饱和计算15)SQDSTXmem,Ymem;求两点之间距离的平方求两点之间距离的平方第三章:C54x指令系统_3.4 3.4 指指 令令 系系 统统 说明:说明:FIRSXmem,Ymem,pmad;B=B+A*pmad/A=(Ymem+Xmem)16FIR

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁