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

下载本文档

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

文档简介

TMS320C54x的指令系统寻址方式2026/7/517:07DSP原理及应用2

寻址方式

当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法——寻址方式。

根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。

’C54x芯片的寻址方式可以分为两类:

●数据寻址

●程序寻址

2026/7/517:07DSP原理及应用3

寻址方式

’C54x有7种基本的数据寻址方式:

立即寻址

绝对寻址累加器寻址直接寻址间接寻址存储器映像寄存器寻址堆栈寻址:由指令提供一个操作数:由指令提供一个操作数地址:以累加器的内容为地址访问程序空间某单元:寻址地址为DP或SP的值加上指令提供的偏移量:利用辅助寄存器访问存储器:用来改变映像寄存器,但不影响DP或SP的值:用来管理系统堆栈中的操作2026/7/517:07DSP原理及应用4

寻址方式

寻址方式用

途举

例指令含义立即寻址主要用于初始化LD#10,A立即数10

A绝对寻址利用16位地址寻址存储单元STLA,*(y)将AL内容存入y所在的存储单元累加器寻址将累加器中的内容作为地址READAx将A的内容作为地址读程序存储器,并存入x存储单元直接寻址利用数据页指针和堆栈指针寻址LD@x,A(DP+x的低7位地址)

A间接寻址利用辅助寄存器作为地址指针LD*AR1,A((AR1))

A存储器映像寄存器寻址快速寻址存储器映象寄存器LDMST1,B(ST1)

B堆栈寻址压入/弹出数据存储器和存储器映像寄存器MMRPSHMAG(SP)-1

SP,(AG)

(SP)2026/7/517:07DSP原理及应用5部分寻址缩略语

缩略语含义Smem16位单寻址操作数Xmem16位双寻址操作数,用于双操作数或部分单操作数指令,从DB数据总线上读取Ymem16位双寻址操作数,用于双操作数指令,从CB数据总线上读取dmad16位立即数:数据存储器地址(0~65535)pmad16位立即数:程序存储器地址(0~65535)PA16位立即数:I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)1k16位长立即数1

立即寻址

2026/7/517:07DSP原理及应用6

指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。

例如:LD#F180,A;将立即数F180加载到A程序存储器操作码立即数F180

立即数的数值形式:

①短立即数。3、5、8、9位,单字指令;②长立即数。16位,双字指令。

特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。

用途:用于表示常数或对寄存器初始化。1

立即寻址

2026/7/517:07DSP原理及应用73位立即数

5位立即数

8位立即数

9位立即数

16位立即数

LD

LD

FRAMELDRPT

LD

ADDADDMANDANDMBITFCMPMLDMACORORMRPTRPTZSTSTMSUBXORXORM支持立即数的指令

注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。

2

绝对寻址2026/7/517:07DSP原理及应用8

指令中含有所要寻找的操作数的16位存储单元地址。

16位地址表示形式:

①地址标号,如:TABLE;

②16位符号常量,如:89AB、1234。

例如:

MVKDTABLE,*AR1

;将数据存储器TABLE为地址

的单元数据送入AR1寄存器

指定的数据存储单元中

LD*(DATA),A;将DATA指定的数据存储单元中的数据送入累加器A中

特点:指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间。用途:用于对速度要求较低的场合。2

绝对寻址2026/7/517:07DSP原理及应用9绝对寻址是利用16位地址来寻址操作数的存储单元。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少应为2个字长。绝对寻址有四种类型:

①数据存储器地址(dmad)寻址;

②程序存储器地址(pmad)寻址;

③端口(PA)寻址;

④*(1k)寻址。

1.数据存储器地址寻址

2026/7/517:07DSP原理及应用10

用于确定操作数存于数据存储单元的地址。

例如,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器所指向的数据存储单元中。

MVKDEXAM1,*AR5

语法:使用一个程序标号或一个数字来指定数据空间的一个地址。数据存储器的16位地址dmad值

2.程序存储器地址寻址

2026/7/517:07DSP原理及应用11用于确定程序存储器中的一个地址。例如,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中。

MVPDTABLE,

*AR2

语法:使用一个符号或具体的数字来指定程序空间的一个地址。程序存储器的16位地址pmad值

3.端口(PA)寻址2026/7/517:07DSP原理及应用12用一个符号或一个数字来确定外部I/O端口的地址。例如,把一个数从端口为FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中。

PORTRFIFO,*AR5

I/O端口地址PA4.*(1k)寻址2026/7/517:07DSP原理及应用13使用一个指定数据空间的地址来确定数据存储器中的一个地址。

例如,把地址为PN的数据单元中的数据装到累加器A中。

LD*(PN),A

语法:允许所有使用单数据存储器(Smem)寻址的指令去访问数据空间的任意单元,而不改变DP的值,也不用对AR进行初始化。

这种寻址可用于支持单数据存储器操作数的指令。

注意:*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。

3

累加器寻址2026/7/517:07DSP原理及应用14

将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。

例如:

READASmem

;将A中的数据作为地址寻址程序

存储器中的数据,并将数据送

入Smem指定的数据存储单元。

WRITASmem

;将Smem指定的数据存储单元中的

数据,写入A所指定的程序存储

单元。

用途:用于完成程序存储空间与数据存储空间之间的数据传输。注意:

①大多数’C54x用A的低16位作为程序存储器的地址,而’C548和’C549是以A的低23位作为程序存储器地址,’C5402是以A的低20位作为程序存储器地址;

②上述两条指令重复使用时,累加器A自动增减;

③只能使用累加器A寻址程序空间。

累加器A用来寻址程序空间。Smem用来寻址数据空间。4

直接寻址2026/7/517:07DSP原理及应用15利用数据指针DP和堆栈指针SP寻址。

指令格式:15~8

7

6~0

操作码

I=0

数据存储器地址(dmad)

指令的8位操作码指令的标识符表示指令为直接寻址

数据存储器地址

包含了数据存储器偏移地址

特点:①指令中只含有数据存储器的低7位地址(偏移地址dmad);

②16位数据存储器地址由基地址(数据页指针DP或堆栈指针SP)和偏移地址(dmad)共同构成。

4

直接寻址2026/7/517:07DSP原理及应用16所要寻址的数据存储器16位地址是由基地址和偏移地址构成。

基地址:

数据页指针DP(9位);

②堆栈指针SP。

当CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;

当CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。2026/7/517:07DSP原理及应用17

地址形成过程:当CPL=0时,直接寻址指令15~876~0操作码I=0dmad页指针DP(位于ST0中)9位数据页指针DP9位数据页指针DP高9位dmad低7位16位数据存储器地址2026/7/517:07DSP原理及应用18

地址形成过程:当CPL=1时,直接寻址指令15~876~0操作码I=0dmad高9位dmad低7位16位数据存储器地址16位堆栈指针SP堆栈指针SPSP+dmad16位SP+dmad4

直接寻址2026/7/517:07DSP原理及应用19

DP地址的范围是从0~511(29-1),将存储器分成512页。

以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。

7位dmad范围是从0~127,每页有128个可以访问的单元。

SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元

4

直接寻址2026/7/517:07DSP原理及应用20直接寻址标识:

①变量前加@,如@x;

②在偏移量前加@,如@5。利用直接寻址可以在不改变DP或SP的情况下,随机寻址128个存储单元中的任何一个单元。直接寻址的优点:每条指令只需要一个字。4

直接寻址2026/7/517:07DSP原理及应用21

例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。RSBXCPL数据存储器地址数据01800001......X:01FF1000y:02000500......第3页第4页LD#3,DPLD@x,AADD@y,A;CPL复位;立即数3赋给DP;x单元的数据送入A;完成x和y单元的数据相加DPdmaLD#3,DPLD#3,DP000000011LD@x,ALD@x,A1111111操作码01111111机器码@x000000011111111101FF@x01FF1000A000000100001FF1000ADD@y,A操作码00000000机器码0000000@y00000001100000001800@y018000010180H0001+1001018000011001000000ADD@y,A0000001001A结果ADD@y,ALD@x,ALD#3,DPRSBXCPLADD@y,ALD#4,DPLD#4,DPRSBXCPLLD#3,DPDP000000011LD@x,Adma111111101FF@xA0000001000LD#4,DPDP000000100ADD@y,Adma00000000200@y05000200H05000200H+005100000000000015000000001500A结果4

直接寻址2026/7/517:07DSP原理及应用22

例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。SSBXCPL数据存储器002001000050A000...LD@1,AADD@2,A;CPL置位;x单元的数据送入A;完成x和y单元的数据相加12SP→x:y:SP→x:y:0000001000000000SP0000001dmax0000010dmay0201X地址0202y地址SSBXCPLLD@1,Ax:0200H@1=0201H0100A00000001000100x:ADD@2,A@2=0202Hy:00500202H00500000000510+y:005000000001500000000150A执行结果4

直接寻址2026/7/517:07DSP原理及应用23直接寻址特点:

①所寻址数据存储器的16位地址是由DP或SP

与7位偏移地址dmad构成;

②可在单周期寻址128个单元;

③寻址速度快,能进行流水线并行操作。用途:主要用于要求运算速度较快的场合。注意:①上述两种直接寻址方式是相互排斥的;

②采用DP寻址时,要注意数据所在的页面指针。5

间接寻址2026/7/517:07DSP原理及应用24

是根据辅助寄存器(AR0~AR7)给出的16位地址进行寻址。每一个辅助寄存器都可以用来寻址64K字数据存储空间中任何一个单元。

两个辅助寄存器算术运算单元(ARAU0和ARAU1)可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。

5

间接寻址2026/7/517:07DSP原理及应用25

可完成以下操作:

①用单指令对存储器进行16位数据的读操作或写操作;

②用单指令可以完成对两个独立的数据存储单元的读操作;

③用单指令可以读和写两个连续的数据存储单元;

④用单指令可以在读一个数据存储单元的同时,向另一个存储单元进行写操作。5

间接寻址2026/7/517:07DSP原理及应用261.单操作数寻址

用来完成存储单元中16位单数据的读写操作。

指令格式:15~8

7

6~3

2~0

操作码

I=1

MOD

ARF

指令的8位操作码指令的标识符表示指令为间接寻址4位的方式域用来定义间接寻址的类型3位辅助寄存器域用来定义所使用的辅助寄存器2026/7/517:07DSP原理及应用27单操作数间接寻址形式MOD域

操作句法功

能说

明0000*

ARx

地址=ARxARx的内容为数据存储器地址0001*

ARx-

地址=ARxARx=ARx-1寻址结束后,ARx地址减1。[注2]

0010*

ARx+

地址=ARxARx=ARx+1寻址结束后,ARx地址加1。

[注1]

0011*

+ARx

ARx=ARx+1地址=ARx

ARx中的地址加1后,再寻址。

[注1]、[注2]、[注3]

0100*

ARx-0B

地址=ARxARx=B(ARx-AR0)寻址结束后,用位倒序进位的方法从

ARx中减去AR0的值。

[注1]:寻址16位字时增/减量为1,32位字时增/减量为2。[注2]:这种方式只能用写操作指令。[注3]:这种方式不允许对存储器映像寄存器寻址。

2026/7/517:07DSP原理及应用28单操作数间接寻址形式MOD域

操作句法功

能说

明0101*

ARx-0

地址=ARxARx=ARx-AR0

寻址结束后,从ARx中减去AR0的值。0110

*

ARx+0

地址=ARx

ARx=ARx+AR0

寻址结束后,把AR0加到ARx中。0111

*

ARx+0B

地址=ARxARx=B(ARx+AR0)寻址结束后,用位倒序进位的方法将

AR0加到ARx中1000

*

ARx-%

地址=ARxARx=Circ(ARx-1)寻址结束后,ARx中的地址值按循环减的方法减1。[注1]

1001

*

ARx-0%

地址=ARx

ARx=Circ(ARx-AR0)

寻址结束后,按循环减的方法从ARx中减去AR0中的值

[注1]:寻址16位字时增/减量为1,32位字时增/减量为2。2026/7/517:07DSP原理及应用29单操作数间接寻址形式MOD域

操作句法功

能说

明1010

*

ARx+%

地址=ARxARx=Circ(ARx+1)寻址结束后,ARx中的地址值按循环加的方法加1。[注1]

1011

*

ARx+0%

地址=ARxARx=Circ(ARx+AR0)

寻址结束后,按循环加的方法将AR0中的值加到ARx。

1100

*

ARx(lk)

地址=ARx+lkARx=ARx以ARx与16位数之和作为地址,寻址结束后,ARx中的值不变。

1101

*+ARx(lk)

地址=ARx+lk

ARx=ARx+lk将一个16位带符号数加到ARx,然后寻址。[注3]1110*

ARx(lk)%

地址=Circ(ARx+lk)

ARx=Circ(ARx+lk)

将一个16位带符号数按循环加的方法加至ARx,然后再寻址1111*

(lk)

地址=(lk)利用16位无符号数作为地址,寻址数据存储器[注3]:这种方式不允许对存储器映像寄存器寻址。

2026/7/517:07DSP原理及应用30特殊的间接寻址功能:

在存储器中设置一个缓冲区作为滑动窗,来保存最新的一批数据,并用新的数据覆盖旧的数据,实现循环寻址。

循环缓冲区的长度R,由循环缓冲区长度寄存器BK确定,可通过指令设定。1.单操作数寻址

(1)循环寻址

其指令:

STM#1K,BK

;将立即数1K存放BK中2026/7/517:07DSP原理及应用31长度为R的缓冲区必须从N位地址的边界开始,即循环缓冲区基地址的N个最低有效位必须为0。

N应满足:(1)循环寻址

2N>R的最小整数例如:缓冲区长度R=32,若2N>32,则N=6。缓冲区开始的地址:xxxxxxxxxx000000B

缓冲区长度R=32装入循环缓冲长度寄存器BK中。

循环寻址是以BK的值为模,对缓冲区长度R进行取模运算。2026/7/517:07DSP原理及应用32(1)循环寻址

循环寻址通常是指定一个辅助寄存器ARx指向循环缓冲区;

循环缓冲区的有效基地址(EFB)就是用户指定的辅助寄存器(ARx)的低N位置0后所得到的值;

循环缓冲区的尾基地址(EOB)是通过用BK的低N代替ARx的低N位得到;

循环缓冲区的偏移量(index)就是ARx的低N位;

循环寻址的步长(step)就是加到辅助寄存器ARx或从辅助寄存器ARx中减去的值。2026/7/517:07DSP原理及应用33(1)循环寻址循环寻址的算法:If0

偏移量+步长<

BK;

偏移量=偏移量+步长;Else

if偏移量+步长

BK;偏移量=偏移量+步长-BK;Else

if偏移量+步长

<0;偏移量=偏移量+步长+BK;注意:①

步长小于BK,其大小与所用指令有关;②

若步长为正,进行循环加寻址;否则进行循环减寻址;

③若BK=0,则为不作修正的辅助寄存器间接寻址。

2026/7/517:07DSP原理及应用34(1)循环寻址循环寻址操作过程:

首先要指定一个ARx指向循环缓冲区,根据ARx的低N位作为循环缓冲区的偏移量进行规定的寻址操作。

寻址完成后,再根据循环寻址算法修正偏移量,并返回ARx的低N位。2026/7/517:07DSP原理及应用35(1)循环寻址2026/7/517:07DSP原理及应用361.单操作数寻址

(2)位倒序寻址

用于快速傅氏变换算法FFT。

位码顺序寻址:按照二进制递增规律寻址。如:0000,0001,0010,0011,…,1111。如:0000,1000,0100,1100,…,1111。

位码倒序寻址:根据二进制递增码,按其位码倒序的规律进行寻址。2026/7/517:07DSP原理及应用37(2)位倒序寻址位码顺序和倒序对照表序号位码顺序寻址位码倒序寻址序号位码顺序寻址位码倒序寻址0000000008100000011000110009100110012001001001010100101300111100111011110140100001012110000115010110101311011011601100110141110011170111111015111111112026/7/517:07DSP原理及应用38位码倒序寻址存储单元地址变换结果位码倒序寻址位码倒序寻址结果0000X(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)2026/7/517:07DSP原理及应用39(2)位倒序寻址实现过程:

①根据FFT算法进行转换,按转换顺序将

X(0)、X(8)、X(4)、…、X(15)的转换

结果存入数据存储器。

②按照位码倒序的方法寻址,可将乱序的转换结果进行整序输出。2026/7/517:07DSP原理及应用40(2)位倒序寻址实现方法:

设AR2=01100000,作为基地址,指向X(0)

的存储单元。②

设AR0=00001000,取FFT长度的一半。

程序:

RPT#15

;重复执行下条指令16次

PORTW*AR2+0B,PA

;采用位码倒序的间接寻

址,向PA口输出数据

5

间接寻址2026/7/517:07DSP原理及应用412.双操作数寻址用于完成执行2次读操作或者1次读和1次的并行存储操作(用‖表示)。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。

两个数据存储器操作数由Xmem和Ymem表示。

Xmem:读操作数;

Ymem:

在两次读操作的指令中,表示一个读操作数;

在一次读和一次写的指令中,表示写操作数。

2026/7/517:07DSP原理及应用422.双操作数寻址用于完成执行2次读操作或者1次读和1次的并行存储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。

指令格式:15~8

76

54

32

10

操作码

Xmod

Xar

Ymod

Yar

指令的8位操作码用来定义Xmem操作数间接寻址方式的类型用来定义存储Xmem地址的辅助寄存器用来定义Ymem操作数间接寻址方式的类型用来定义存储Ymem地址的辅助寄存器2026/7/517:07DSP原理及应用432.双操作数寻址双操作数间接寻址的类型

Xmod、Ymod操作码语法功能

说明

00*

ARx地址=ARxARx中的内容是数据存储器地址

01*

ARx-地址=ARxARx=ARx-1寻址后,ARx的地址减1

10*

ARx+地址=ARxARx=ARx+1寻址后,ARx的地址加1

11*

ARx+0%地址=ARxARx=circ(ARx+AR0)寻址后,AR0以循环寻址方式加到ARx中去

2026/7/517:07DSP原理及应用442.双操作数寻址

在指令中,由于只有2位可以用于选择辅助寄存器,所以根据Xar或Yar的值可以选择4个寄存器。Xar和Yar域选择的辅助寄存器Xar、Yar辅助寄存器00011011AR2AR3AR4AR55

间接寻址2026/7/517:07DSP原理及应用45

间接寻址特点:通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址,共有16种修正地址的方式。用途:用于需要按固定步长寻址的场合。6

存储器映像寄存器寻址2026/7/517:07DSP原理及应用46是一种不考虑DP和SP为何值,以0为基地址来访问MMR的寻址方式。

主要用于修改存储器映像寄存器的内容。

1.采用直接寻址方式2.采用间接寻址方式

高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。

高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。

6

存储器映像寄存器寻址2026/7/517:07DSP原理及应用47

’C54x共有8条指令可以进行MMR寻址。

LDMMMR,dst

;将MMR加载到累加器

MVDMdmad,MMR

;数据存储器向MMR传送数据

MVMDMMR,dmad

;MMR向指定地址传送数据

MVMMMMRx,MMRy

;MMRx向MMRy传送数据

POPMMMR

;将数据从栈顶弹至MMR

PSHMMMR

;将MMR数据压入堆栈

STLMsr

温馨提示

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

评论

0/150

提交评论