版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章TMS320C54x的寻址方式§5.1程序执行过程§5.2数据寻址§5.3程序寻址§5.4小结1【重点难点】★直接寻址★间接寻址★堆栈寻址★分支转移★调用与返回★复位和中断2程序执行过程§5.1程序执行过程1、指令周期开始。DSP首先从PC寄存器中获取指令地址,然后,将该地址输出到PAB总线。最后,获取相应指令。2、获取操作数。DSP根据指令要求从相应位置获取操作数。3、进行运算并保存。根据指令功能,将操作数送到相应的运算单元中,进行相关运算。然后,将运算结果送入指定的位置。4、调整PC的值。根据本条指令是否需要PC跳转,更新PC寄存器的值,为程序下一条指令的执行做好准备。3数据寻址◆立即寻址,指令中包含了立即操作数,操作数紧随操作码存放在程序存储器中。◆特点:运行速度较快,但需占用程序存储空间,并且数值不能改变。◆用途:用于表示常数或对寄存器初始化。◆两种立即数形式:3、5、8或9位短立即数16位长立即数。§5.2.1立即寻址53位立即数
5位立即数
8位立即数
9位立即数
16位立即数
LD
LD
FRAMELDRPT
LD
ADDADDMANDANDMBITFCMPMLDMACORORMRPTRPTZSTSTMSUBXORXORM支持立即数的指令注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。数据寻址6数据寻址图5-1带立即数的LD指令(b)双字LD指令(a)单字LD指令7数据寻址1、数据存储器地址(dmad)寻址◆用一个数或符号来确定数据空间的一个地址。◆主要指令有:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad例:MVKDEXAMPLE,*AR5数据存储器的16位地址dmad值
1010h9数据寻址2、程序存储器地址(pmad)寻址◆用一个数或符号来确定程序存储器的一个地址。◆主要指令有:FIRSXmem,Ymem,pmadMACDSmem,pmad,srcMACPSmem,pmad,srcMVDPSmem,pmadMVPDpmad,Smem例:MVPDEXAMPLE,*AR5程序存储器的16位地址pmad值
10数据寻址3、端口地址(PA)寻址用一个数或符号来确定I/O存储空间中的一个地址,以实现对I/O设备的读写。主要指令有:PORTRPA,SmemPORTWSmem,PA例:PORTRFIFO,*AR5I/O端口地址PA11数据寻址将累加器的内容作为地址去访问程序存储单元。
例如:
READASmem
;将累加器A所指定的程序存储单元的内容传送到Smem指向的数据存储单元中。
WRITASmem
;将Smem指定的数据存储单元中的
数据,写入A所指定的程序存储
单元。用途:用于程序存储空间与数据存储空间之间的数据传输。注意:①对大多数C54x,用累加器的低16位作为程序存储器的地址,但是C548、C549、C5410和C5416有23根地址线,C5402有20根地址线,C5420有18根地址线,这些芯片的程序存储器单元分别由累加器的低23位、低20位、低18位来确定。②上述两条指令重复使用时,累加器A自动增减;③只能使用累加器A寻址程序空间。④
累加器A用来寻址程序空间。Smem用来寻址数据空间。§5.2.3累加器寻址13数据寻址利用数据页指针DP和堆栈指针SP寻址。CPL=0时:DP的9位地址与指令中的7位地址连接起来,形成16位的数据存储器存储单元的地址。CPL=1时:SP的16位地址加指令中的7位地址,形成16位的数据存储器存储单元的地址。基地址:存放在数据页指针寄存器(DP)或者堆栈指针寄存器(SP)中;偏移量:由指令寄存器的7位最低有效位(LSB)提供。§5.2.4直接寻址14数据寻址直接寻址的特点:
指令中只含有数据存储器的低7位地址(偏移地址dmad);16位数据存储器地址由基地址和偏移地址共同构成。直接寻址指令格式15数据寻址当CPL=1时直接寻址指令15~876~0操作码I=0dmad高9位dmad低7位16位数据存储器地址16位堆栈指针SP堆栈指针SPSP+dmad16位SP+dmad直接寻址标识:①变量前加@,如@x;②在偏移量前加@,如@5。17数据寻址
例5-3:数据存储器存储数据如图所示,采用数据页指针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@y00000001100000000180@y018000010180H0001+1001018000011001000000ADD@y,A0000001001A结果ADD@y,ALD@x,ALD#3,DPRSBXCPLADD@y,ALD#4,DPLD#4,DPRSBXCPLLD#3,DPDP000000011LD@x,Admad111111101FF@xA0000001000LD#4,DPDP000000100ADD@y,Adma00000000200@y05000200H05000200H+005100000000000015000000001500A结果注意:若一段代码的所有直接寻址指令都访问同一个数据页,则只需在该代码的最前面装载一次DP值;如果要访问不同的数据页,则需要改变DP值。18数据寻址
例5-4:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。19数据寻址单操作数间接寻址形式MOD域
操作句法功
能说
明0000*
ARx
地址=ARxARx的内容为数据存储器地址0001*
ARx-
地址=ARxARx=ARx-1寻址结束后,ARx地址减1。[注1]
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]:这种方式不允许对存储器映像寄存器寻址。
21数据寻址单操作数间接寻址形式MOD域
操作句法功
能说
明0101*
ARx-0
地址=ARxARx=ARx-AR0寻址结束后,
ARx减去AR0的值。0110
*
ARx+0
地址=ARx
ARx=ARx+AR0
寻址结束后,ARx加上AR0的值。0111
*
ARx+0B
地址=ARxARx=B(ARx+AR0)寻址结束后,ARx加上AR0的值并进行位反转。
1000
*
ARx-%
地址=ARxARx=Circ(ARx-1)寻址结束后,ARx中的地址值按循环减的方法减1。[注1]
1001
*
ARx-0%
地址=ARx
ARx=Circ(ARx-AR0)
寻址结束后,按循环减的方法从ARx中减去AR0中的值
[注1]:寻址16位字时增/减量为1,32位字时增/减量为2。22数据寻址单操作数间接寻址形式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,然后再寻址[注3]1111*
(lk)
地址=(lk)利用16位无符号数作为地址,寻址数据存储器[注3][注3]:这种方式不允许对存储器映像寄存器寻址。
23数据寻址循环寻址的算法:If0偏移量+步长<
BK;偏移量=偏移量+步长;Else
if偏移量+步长
BK;偏移量=偏移量+步长-BK;Else
if偏移量+步长
<0;偏移量=偏移量+步长+BK;25例5-5下面的代码完成循环寻址功能,并将循环缓冲区内相关单元的内容加载到累加器B。STM#1000H,AR2STM#5,BKSTM#2,AR0ST#0,*AR2+ST#1,*AR2+ST#2,*AR2+ST#3,*AR2+ST#4,*AR2+;将0-4依次放到数据单元1000H-1004H中。STM#1000H,AR2;循环缓冲区为1000H-1004H。LD*AR2+0%,B;B=(1000H)=0。LD*AR2+0%,B;B=(1002H)=2。LD*AR2+%,B;B=(1004H)=4。LD*+AR2(3)%,B;B=(1003H)=3。LD*+AR2(3)%,B;B=(1001H)=1。数据寻址26位反转寻址存储单元地址变换结果位码倒序寻址位码倒序寻址结果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)数据寻址29数据寻址2、双操作数间接寻址双操作数寻址用于完成两个读操作或者一个读并行一个写的操作。采用这种方式的指令代码都为1个字长并且只能以间接寻址方式工作。双操作数间接寻址指令格式30数据寻址双操作数寻址Xmod或Ymod操作码功能说明00*ARx地址=ARxARx中的内容是数据存储器地址01*ARx-地址=ARxARx=ARx-1寻址后,ARx的地址减110*ARx+地址=ARxARx=ARx+1寻址后,ARx的地址加111*ARx+0%地址=ARxARx=circ(ARx+AR0)寻址后,AR0以循环寻址方式加到ARx中去31辅助寄存器使用规则Xar或Yar辅助寄存器00AR201AR310AR411AR5数据寻址32数据寻址例5-7:MAC*AR5+,*AR4+,A,B指令格式为:MACXmem,Ymem,src[,dst]指令功能为:dst=src+Xmem*Ymem,T=Xmem由表5-4和表5-5可知:Xmod=Ymod=10B,Xar=11B,Yar=10B 指令执行前 指令执行后累加器A: 0000000010H; 累加器A:0000000012H;T: 0000H T:0001HAR4: 2000H AR4:2001HAR5: 1000H AR5:1001H数据存储器: 数据存储器:1000H:0001H; 1000H:0001H2000H:0002H; 2000H:0002H33数据寻址§5.2.6存储器映像寄存器寻址1.采用直接寻址方式2.采用间接寻址方式高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。3、MMR寻址特点:①寻址速度快,对MMR执行写操作开销小;②可直接利用MMR的名称快速访问数据存储空间0页资源;③只能寻址数据空间的0页单元。4、用途:不改变DP、SP的情况下,修改MMR中的内容。34数据寻址C54x共有8条指令可以进行MMR寻址。
LDMMMR,dst
;将MMR加载到累加器
MVDMdmad,MMR
;数据存储器向MMR传送数据
MVMDMMR,dmad
;MMR向指定地址传送数据
MVMM
MMRx,MMRy
;MMRx向MMRy传送数据
POPMMMR
;将数据从栈顶弹至MMR
PSHMMMR
;将MMR数据压入堆栈
STLMsrc,MMR
;累加器低位存入MMR
STM#lk,MMR
;长立即数lk存入MMR35数据寻址堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。
堆栈寻址:利用SP指针,按照先进后出的原则进行寻址。进栈操作时,SP先减小,然后数据进入堆栈;出栈操作时,数据先出栈,然后SP增加。§5.2.7堆栈寻址36数据寻址
进栈操作时,SP先减小,然后数据进入堆栈;
数据存储器03FFH1234SP567813FFsmem①
SPSP-1,使SP指向03FEH;SP03FEH②
数据进栈,SP=03FEH。13FFSP
出栈操作时,数据先出栈,然后SP增加。
XXXXsmem①
SP=03FEH,数据出栈;SP13FF②
SPSP+1,使SP指向03FFH。SP37数据寻址有5条指令采用堆栈寻址方式:1、PSHD将数据存储器中的一个数压入堆栈。2、PSHM将一个MMR中的值压入堆栈。3、POPD从堆栈弹出一个数至数据存储单元。4、POPM从堆栈弹出一个数至MMR。5、FRAMEoffset递增递减堆栈指针而不影响堆栈内容。38数据寻址例5-8:堆栈寻址例题。0080PSHD*AR20081PSHMAR00082CALLsubr0084POPMAR00085POPD*AR20086FRAME-20087subrLD#2,DP0088ST#1234H100h0089RETAR2指向包含1234H的存储器位置,AR0的内容为0100H。39寻址方式特点用途立即寻址操作数直接包含在指令中,没有寻找数据地址的过程,但需占用程序存储空间,且数值不能改变常数或对寄存器初始化绝对寻址能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间用于对速度要求低的场合累加器寻址累加器的内容作为地址去访问程序存储单元完成程序存储空间与数据存储空间之间的数据传输直接寻址指令中包含低7为地址,与DP或SP形成16位地址,可单周期寻址1个数据页(128字)寻址速度快,用于对速度要求高的场合间接寻址利用辅助寄存器作为地址指针进行寻址,并可自动增、减、变址和循环寻址用于需按固定步长步进寻址的场合MMR寻址基地址为0的直接寻址直接利用MMR名字快速访问堆栈寻址用堆栈指针按先进后出原则寻址数据存至堆栈或从其弹出数据寻址40程序寻址§5.3程序寻址PC程序计数器块重复寄存器组RC重复寄存器BRC块重复寄存器RSA块重复起始地址寄存器REA块重复结束地址寄存器程序地址生成器的组成41程序寻址§5.3.1程序计数器操作加载到PC的地址复位PC=FF80h顺序执行指令PC=PC+1分支转移用紧跟在分支转移指令后面的16位立即数加载PC由累加器分支转移用累加器A或B的低16位立即数加载PC块重复循环假如ST1中的块重复有效位BRAF=1,当PC+1等于块重复结束地址(REA)+1时,将块重复起始地址(RSA)加载PC子程序调用将返回地址压入堆栈,并用紧跟在调用指令后面的16位立即数加载PC。返回指令将返回地址从栈顶弹出至PC,回到原先的程序处继续执行。从累加器调用子程序将PC+1压入椎栈,用累加器A或B的低16位加载PC。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。硬件中断或软件中断将PC压入堆栈,用适当的中断向量地址加载PC。中断返回时,将栈顶弹出至PC,继续执行被中断了的子程序。42§5.3.2扩展程序计数器操作加载到XPC的地址复位XPC=0顺序执行指令XPC保持不变长转移长立即数的16-22位加载XPC由累加器长转移累加器的16-22位加载XPC子程序长调用XPC压入栈顶,指令中立即数的16-22位加载XPC从累加器长调用子程序XPC压入栈顶,调用累加器的16-22位加载XPC长返回栈顶弹出并加载XPC程序寻址43功能:可执行分支转移、循环控制、子程序操作。方法:通过分支转移指令改写PC,可以改变程序的流向。指令:B[D]、BACC[D]、BC[D]、BANZ[D]当调用子程序或函数时,DSP就会中断原先的程序,转移到程序存储器的其他地址继续运行。调用时,下条指令的地址被压入堆栈,以便返回时将这个地址弹出至PC,使中断的程序继续执行。指令:CALL[D]、CALA[D]、RET[D]、RETE[D]RETF[D]、CC[D]、RC[D]程序寻址§5.3.3分支转移§5.3.4调用与返回44程序寻址§5.3.5条件操作包括程序控制指令和存储指令在内的一些C54x指令,只有当一个条件或多个条件得到满足时才能执行。此时,程序执行的方向会随着条件是否满足而发生改变。1、重复执行单条指令功能:重复执行下一条指令重复执行的次数等于(RC)+l。
RC中的内容,不能编程设置,只能由重复指令中的操作数加载。操作数n的最大值为65535。一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括,但不包括)均不响应。§5.3.6重复操作452、程序块重复操作功能:将重复操作的范围扩大到任意长度的循环回路。C54x内部的块重复计数器(BRC)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB一道,对紧随RPTB、由若干条指令构成的程序块进行重复操作。程序寻址46程序寻址§5.3.7复位操作将处理器PMST中的中断向量指针IPTR置成1FFh。将处理器PMST中的MP/MC位置成与引脚MP/MC相同的数值。
RS被拉高。将PC置成FF80h。扩展的程序计数器XPC寄存器清0。无论MP/MC状态如何,将FF80h加到地址总线。数据总线变成高阻状态。控制线均处于无效状态。产生IACK信号。
ST1中的中断方式位INTM置1,关闭所有的可屏蔽中断。中断标志寄存器IFR清0。47将单循环计数器(RC)清零。产生同步复位信号(SRESET),对外围电路初始化。将下列状态位置成初始值:
ARP=0CLKOFF=0HM=0SXM=lASM=0CMPT=0INTM=1TC=1AVIS=0CPL=0OVA=0XF=1BRAF=0DP=0OVB=0C=1DROM=0OVLY=0C16=0FRCT=0OVM=0注意:复位期间对其余的状态位以及堆栈指针没有初始化。因此,用户在程序中必须对它们适当地进行初始化。程序寻址481、C54x既支持软件中断,也支持硬件中断:1)由程序指令(INTR、TRAP或RESET)要求的软件中断。2)由外围设备信号要求的硬件中断:
◆受外部中断口信号触发的外部硬件中断。◆受片内外围电路信号触发的内部硬件中断。2、C54x中断可以分成两大类:第一类:可屏蔽中断。可以用软件来屏蔽或开放的硬件和软件中断。第二类:非屏蔽中断。包括所有的软件中断,以及两个外部硬件中断RS和NMI。程序寻址§5.3.8中断4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赔偿工资的协议书模板
- 手术间物品规范放置品管圈
- 妇产科妇科炎症护理要点
- 保险知识科普
- 口腔科牙周病防治指南培训教程
- 2026山西农业大学招聘博士研究生116人备考题库及参考答案详解(基础题)
- 2026内蒙古鄂尔多斯景泰艺术中学(普高)招聘教师3人备考题库附答案详解(研优卷)
- 2026山西经济管理干部学院(山西经贸职业学院)招聘博士研究生5人备考题库及参考答案详解(新)
- 2026安徽师范大学教育集团面向校内外招聘中小学正副校长备考题库含答案详解(轻巧夺冠)
- 2026上半年四川成都职业技术学院(考核)招聘高层次人才8人备考题库完整参考答案详解
- 2025辽宁葫芦岛市总工会招聘工会社会工作者5人笔试考试参考试题及答案解析
- 经济学的思维方式全套课件
- 郑钦文事迹介绍
- 中外舞蹈史课程大纲
- 载人飞艇系留场地净空要求细则
- 大棚螺旋桩施工方案
- 中数联物流科技(上海)有限公司招聘笔试题库2025
- DB4401∕T 147-2022 游泳场所开放条件与技术要求
- DB65∕T 4767-2024 普通国省干线公路服务设施建设技术规范
- 制氧站建设合同3篇
- 安静的力量主题班会课件
评论
0/150
提交评论