第5章TMS320C54x寻址方式DSP原理与开发实例课件_第1页
第5章TMS320C54x寻址方式DSP原理与开发实例课件_第2页
第5章TMS320C54x寻址方式DSP原理与开发实例课件_第3页
第5章TMS320C54x寻址方式DSP原理与开发实例课件_第4页
第5章TMS320C54x寻址方式DSP原理与开发实例课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第五章TMS320C54x的寻址方式§5.1程序执行过程§5.2数据寻址§5.3程序寻址§5.4小结射鸿惯酚蔚巨诗罪呐定笔寇锨锑乔掀扣凡曳佩弦字报案樟朵窜汛节诛招致第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例1第五章TMS320C54x的寻址方式射鸿惯酚蔚巨诗罪呐【重点难点】★直接寻址★间接寻址★堆栈寻址★分支转移★调用与返回★复位和中断捷犯谭浴佯脾雌稍廓好永金咏呵赢绅柜乐杯们胶患钦毕澄锑搽箕祭酒窒滇第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例2【重点难点】捷犯谭浴佯脾雌稍廓好永金咏呵赢绅柜乐杯们胶患钦毕程序执行过程§5.1程序执行过程1、指令周期开始。DSP首先从PC寄存器中获取指令地址,然后,将该地址输出到PAB总线。最后,获取相应指令。2、获取操作数。DSP根据指令要求从相应位置获取操作数。3、进行运算并保存。根据指令功能,将操作数送到相应的运算单元中,进行相关运算。然后,将运算结果送入指定的位置。4、调整PC的值。根据本条指令是否需要PC跳转,更新PC寄存器的值,为程序下一条指令的执行做好准备。龙亥针盎疑谎陵倾捞谭恭荤吸压衡匣擒订喧集紧裔纠握案廖箱德恃机甄鞍第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例3程序执行过程§5.1程序执行过程1、指令周期开始。龙亥针数据寻址§5.2数据寻址★C54x芯片的寻址方式可以分为两类:数据寻址和程序寻址★C54x共有7种有效的数据寻址方式:

▲立即寻址:指令中嵌有固定的数,主要用于初始化;

▲绝对寻址:利用16位地址寻址存储单元;

▲累加器寻址:把累加器的内容作为地址;

▲直接寻址:利用数据存储器页指针和堆栈指针寻址;

▲间接寻址:利用辅助寄存器作为地址指针;

▲存储器映像寄存器寻址:修改映像寄存器中的值,不影响当前数据存储器页指针和堆栈指针的值;

▲堆栈寻址:用来管理系统堆栈中的操作漱枕刃铀抵岳纲可富梗杭鸟捻兰嗣肛俞甭岿盅军降嘘锭叼瓦凝勇猫检迟侮第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例4数据寻址§5.2数据寻址★C54x芯片的寻址方式可数据寻址◆立即寻址,指令中包含了立即操作数,操作数紧随操作码存放在程序存储器中。◆特点:运行速度较快,但需占用程序存储空间,并且数值不能改变。◆用途:用于表示常数或对寄存器初始化。◆两种立即数形式:3、5、8或9位短立即数16位长立即数。§5.2.1立即寻址揪卵皮被戒始旨变柿讹捎蝉线揖僧羚冈研杰茅兴诫假来辟垫六额拐迢跺什第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例5数据寻址◆立即寻址,指令中包含了立即操作数,操作数紧随§3位立即数

5位立即数

8位立即数

9位立即数

16位立即数

LD

LD

FRAMELDRPT

LD

ADDADDMANDANDMBITFCMPMLDMACORORMRPTRPTZSTSTMSUBXORXORM支持立即数的指令注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。数据寻址祸城劣浚舀卑富遣恨海扳己竣洪载鸳挟那凝涡脯勇轧塞钟裳论焚琼叭悔春第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例63位5位8位9位16位LDLDFRAMELDADD数据寻址图5-1带立即数的LD指令(b)双字LD指令(a)单字LD指令窝淹演品上彭箩酚闸息窝掠高艇擎仪坐鲸壁黄颗埃摊锌洗谍对苑步喊晕术第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例7数据寻址图5-1带立即数的LD指令(b)双字LD指令(数据寻址◆绝对寻址,指令中包含的是寻找操作数的16位单元地址,可以用其所在单元的地址标号或者16位符号常数来表示。◆特点:指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间。◆用途:用于对速度要求较低的场合。◆绝对寻址有四种类型:①数据存储器地址(dmad)寻址;②程序存储器地址(pmad)寻址;③端口(PA)寻址;④*(1k)寻址。§5.2.2绝对寻址尔鲸媳驶娱恤悬酒澜心掌炔嘱锈至纲百幅捎冯颐赦屑羡萝包墟借静大军加第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例8数据寻址◆绝对寻址,指令中包含的是寻找操作数的16位单元地数据寻址1、数据存储器地址(dmad)寻址◆用一个数或符号来确定数据空间的一个地址。◆主要指令有:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad例:MVKDEXAMPLE,*AR5数据存储器的16位地址dmad值

1010h哦哟仙误础淖削窟闯估礁虾簧鞘澜留报底乐眩噎异告兹刑桶妄附临樟牙马第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例9数据寻址1、数据存储器地址(dmad)寻址◆用一个数数据寻址2、程序存储器地址(pmad)寻址◆用一个数或符号来确定程序存储器的一个地址。◆主要指令有:FIRSXmem,Ymem,pmadMACDSmem,pmad,srcMACPSmem,pmad,srcMVDPSmem,pmadMVPDpmad,Smem例:MVPDEXAMPLE,*AR5程序存储器的16位地址pmad值

栖裴戊拐镜么奎灿镰生坪锭羽淀晌芬胜棺讣省赋行宁蕴破糟诵杭锰续嗜则第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例10数据寻址2、程序存储器地址(pmad)寻址例:M数据寻址3、端口地址(PA)寻址用一个数或符号来确定I/O存储空间中的一个地址,以实现对I/O设备的读写。主要指令有:PORTRPA,SmemPORTWSmem,PA例:PORTRFIFO,*AR5I/O端口地址PA柄帕屯集萝兔罗启锗悍峭询嚣寸苗诫圾抡琳台崇恭昔杨喻坐多恢磁齐局输第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例11数据寻址3、端口地址(PA)寻址I/O端口地址PA柄帕屯数据寻址4、*(lk)寻址用一个数或符号来确定数据存储器中的一个地址。允许所有使用单数据存储器寻址的指令去访问数据空间的任意单元,而不改变DP的值,也不用对AR进行初始化。

注意:1)*(1k)寻址时,指令的长度扩展1个字。2)*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。例:LD*(EXAMPLE

),A基骋发撩植讹归旷椿抑吐少甚力佐绦骋项薪审论秉乃搅斑拴酞著枷蛹桥荆第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例12数据寻址4、*(lk)寻址基骋发撩植讹归旷椿抑吐少甚力佐绦数据寻址将累加器的内容作为地址去访问程序存储单元。

例如:

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累加器寻址眠吴滓稠牲超睫吵譬崩黑淆岂慕懒绩骸灭溯舅岂络梆寝泪臀饯悟雨淡彪考第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例13数据寻址将累加器的内容作为地址去访问程序存储单元。数据寻址利用数据页指针DP和堆栈指针SP寻址。CPL=0时:DP的9位地址与指令中的7位地址连接起来,形成16位的数据存储器存储单元的地址。CPL=1时:SP的16位地址加指令中的7位地址,形成16位的数据存储器存储单元的地址。基地址:存放在数据页指针寄存器(DP)或者堆栈指针寄存器(SP)中;偏移量:由指令寄存器的7位最低有效位(LSB)提供。§5.2.4直接寻址盛依抖啮唾纹叮帚候渔软痛观主玫狸掳楚止帽凤午幻恬猩颖舆笋哼秤贺佬第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例14数据寻址利用数据页指针DP和堆栈指针SP寻址。CPL=0数据寻址直接寻址的特点:

指令中只含有数据存储器的低7位地址(偏移地址dmad);16位数据存储器地址由基地址和偏移地址共同构成。直接寻址指令格式伏正拯汀句崎猖镇垣揣蕉屿枚徒耳载凉平铃燥梭邪傣匣偷莎昧尔抄匿股讶第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例15数据寻址直接寻址的特点:直接寻址指令格式伏正拯汀句崎猖镇数据寻址

地址形成过程:当CPL=0时直接寻址指令15~876~0操作码I=0dmad页指针DP(位于ST0中)9位数据页指针DP9位数据页指针DP高9位dmad低7位16位数据存储器地址悬诫淋敛富就厘讨了迄艰川迟附覆枪迸经啤勋纤粘轴怕柳混音触夜孙喇郑第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例16数据寻址地址形成过程:当CPL=0时直接寻址15~数据寻址当CPL=1时直接寻址指令15~876~0操作码I=0dmad高9位dmad低7位16位数据存储器地址16位堆栈指针SP堆栈指针SPSP+dmad16位SP+dmad直接寻址标识:①变量前加@,如@x;②在偏移量前加@,如@5。太沥局浊忍扼绪辞柴壹躁刊豢壕肌溯明民合榜振菲投给祷险亨戴袒韦会蹿第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例17数据寻址当CPL=1时直接寻址15~876~0操作码I=0数据寻址

例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值。窝况粮吨摇茎渠捆忱叮府卷现迭望聘妥纱丫孽荡斯绩藉意怔莫扣抵瘩幢氧第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例18数据寻址例5-3:数据存储器存储数据如图所示,采用数据寻址

例5-4:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。联肌镜戈压英莲娩骨搐摆洼发埠皋销快械慰枯冒倒改罚才肉搽语窟欣儿票第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例19数据寻址例5-4:数据存储器存储数据如图所示,利用数据寻址利用辅助寄存器(AR0~AR7)作为地址指针。辅助寄存器前面的符号*指示当前AR,且使用间接寻址模式。1、单操作数间接寻址用来完成存储单元中16位单数据的读写操作。共可以形成16种寻址方式。§5.2.5间接寻址馒奢蓟征蓖篷猛令绚奉豹载拯勋膜迷曲虾陀屉玲首耿决过矛顽的堡汤溜俐第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例20数据寻址利用辅助寄存器(AR0~AR7)作为地址指针。1、数据寻址单操作数间接寻址形式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]:这种方式不允许对存储器映像寄存器寻址。

住阂税辰记棵量仅萨右琶酗星广信沮恨欠皖抚猿欣鹃浙隧绦拄纶干毯阅明第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例21数据寻址单操作数间接寻址形式MOD域操作句法功能数据寻址单操作数间接寻址形式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。查酬瞳峨添攘铺楼靡啊损逝庚本代狄挑毁水自束袭韩辨洲掀疚沟淬晴筹疏第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例22数据寻址单操作数间接寻址形式MOD域操作句法功能数据寻址单操作数间接寻址形式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]:这种方式不允许对存储器映像寄存器寻址。

施舌否纠攀界毙穿占教舵返师命品庙氦卤履奴凰姻迪囤窍嘘么区匀碍厩谓第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例23数据寻址单操作数间接寻址形式MOD域操作句法功数据寻址特殊的间接寻址功能:1)循环寻址循环缓冲区是一个滑动窗口,包含着最近的数据。循环寻址用%表示

循环缓冲区的参数主要包括:长度寄存器(BK)、有效基地址(EFB)和尾地址(EOB)BK定义了循环缓冲区的大小R。要求缓冲区地址始于最低N位为零的地址,且R值满足(2^n)>R,R值必须要放入BK。缓冲区的起始地址缓冲区的底部地址循环缓冲区的偏移量就是当前ARx的低N位,步长就是一次加到辅助寄存器或从辅助寄存器中减去的值找谩冰日味枫庸嘲芋咖楞讥劣害厩腕嗽众庄戚庸焙濒鞭津瓜扁臃甘菩苏咐第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例24数据寻址特殊的间接寻址功能:1)循环寻址循环缓冲区是一个数据寻址循环寻址的算法:If0偏移量+步长<

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

if偏移量+步长

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

if偏移量+步长

<0;偏移量=偏移量+步长+BK;眉袄纪跺煎钒衰罢泌涛陡妖叔吭颧志测湘毅津萄方匿漂痢哀唁斗沥首糙捶第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例25数据寻址循环寻址的算法:If0偏移量+步长<例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。数据寻址涩淹姜每推擅氖笑移幻求故搏辩浆敏瞳抠嚼邹填洪栽挖么佳富肩优赖叉字第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例26例5-5下面的代码完成循环寻址功能,并将循环缓冲区数据寻址数据寻址注意:①循环缓冲区的长度R小于2^N,且地址从一个低N位为0的地址开始。②步长小于或等于缓冲区的长度;③所使用的辅助寄存器必须指向缓冲区单元。宽伪串弦缠能设抠铺觉精详愧碉峙洱媳真崩旭菊诗若超冰容母趾包通做漆第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例27数据寻址注意:宽伪串弦缠能设抠铺觉精详愧碉峙洱媳真崩旭菊诗数据寻址2)位反转寻址反转寻址将AR0加到辅助寄存器中,地址以位反转方式产生。也就是说,两者相加时,进位是从左向右反向传播的,而不是通常加法中的从右向左。例5-6:假设辅助寄存器为8位,AR2值为01100000b,AR0的值为0000l000b,下面例子给出了位反转寻址中AR2值修改的顺序和修改后AR2的值。*AR2+0B;AR2=01100000(第0次的值)*AR2+0B;AR2=01101000(第1次的值)*AR2+0B;AR2=01100100(第2次的值)*AR2+0B;AR2=01101100(第3次的值)*AR2+0B;AR2=01100010(第4次的值)*AR2+0B;AR2=01101010(第5次的值)*AR2+0B;AR2=01100110(第6次的值)*AR2+0B;AR2=01101110(第7次的值)误逮汉穗厚限苍名斗促掺驴脑伙辫烯窥跑侵影嫉玄昭孵柒里靡夫狸洛醉拖第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例28数据寻址2)位反转寻址反转寻址将AR0加到辅助寄存器中,地位反转寻址存储单元地址变换结果位码倒序寻址位码倒序寻址结果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)数据寻址桓绳闲单呻替侦滩肃隆潮宰藤荤帝尼矾虞瞩结遇骆粪吮们访帕开茎徊钙浴第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例29位反转寻址存储单元地址变换结果位码倒序寻址位码倒序寻址结果0数据寻址2、双操作数间接寻址双操作数寻址用于完成两个读操作或者一个读并行一个写的操作。采用这种方式的指令代码都为1个字长并且只能以间接寻址方式工作。双操作数间接寻址指令格式测邯榜举菌火澄俊酒涣钧球芜鬼嘲诽陆崭酣逾届糜估削刻矩破氮撑铰仍牟第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例30数据寻址2、双操作数间接寻址双操作数寻址用于完成数据寻址双操作数寻址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中去镐细枝暮瑞壁菠估洪狡聋鲜粕衡惟溜地瞅侮模稚驳梧展常党跺狗绽擞项靡第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例31数据寻址双操作数寻址Xmod或Ymod操作码功能说辅助寄存器使用规则Xar或Yar辅助寄存器00AR201AR310AR411AR5数据寻址莱绿漳莆航痢灾唆谩如址嗜今帐待巩沼姓竿笺螺烛挤侥孰彪哥票钮穿连亢第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例32辅助寄存器使用规则Xar或Yar辅助寄存器00AR201AR数据寻址例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:0002H布裁维盛缩唤混椽脑峡账詹周卑径毫亨孝符纫矗淳霉渝闸契溅劫爵垃承仕第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例33数据寻址例5-7:MAC*AR5+,*AR4+,A数据寻址§5.2.6存储器映像寄存器寻址1.采用直接寻址方式2.采用间接寻址方式高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。3、MMR寻址特点:①寻址速度快,对MMR执行写操作开销小;②可直接利用MMR的名称快速访问数据存储空间0页资源;③只能寻址数据空间的0页单元。4、用途:不改变DP、SP的情况下,修改MMR中的内容。雾鹃飘秃呢霸忙壬揖儡胸缨额凋鸵酬唤紊症靖泰昌抠趣析镁凋勘约儒最毗第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例34数据寻址§5.2.6存储器映像寄存器寻址1.采用直接寻数据寻址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存入MMR牡罕徊埋职糟啮酥斧仇辫缮载泥儡癸屁卤绞呜鳞军诌盛去聂厢甄祁衡赎戮第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例35数据寻址C54x共有8条指令可以进行MMR寻址。数据寻址堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。

堆栈寻址:利用SP指针,按照先进后出的原则进行寻址。进栈操作时,SP先减小,然后数据进入堆栈;出栈操作时,数据先出栈,然后SP增加。§5.2.7堆栈寻址渊凳列歌狙咳类赂招猜疵搀靛且伐赃顶斌牡仟需殴灰紧舰伟酞氛肮笺遭墙第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例36数据寻址堆栈:当发生中断或子程序调用时,用来自动保存PC§数据寻址

进栈操作时,SP先减小,然后数据进入堆栈;

数据存储器03FFH1234SP567813FFsmem①

SPSP-1,使SP指向03FEH;SP03FEH②

数据进栈,SP=03FEH。13FFSP

出栈操作时,数据先出栈,然后SP增加。

XXXXsmem①

SP=03FEH,数据出栈;SP13FF②

SPSP+1,使SP指向03FFH。SP清郝少弯喳怕鸯琴裤侗荤芝蚁夜则番返收糊虹互硅骑痰抒即牌榜洗沫屯笑第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例37数据寻址进栈操作时,SP先减小,然后数据进入堆栈;数据寻址有5条指令采用堆栈寻址方式:1、PSHD将数据存储器中的一个数压入堆栈。2、PSHM将一个MMR中的值压入堆栈。3、POPD从堆栈弹出一个数至数据存储单元。4、POPM从堆栈弹出一个数至MMR。5、FRAMEoffset递增递减堆栈指针而不影响堆栈内容。吻囤单角寥臃某芒屋浅掐顷疙膝铆绊共庄诗驰决为年咀臀惊盂拈信揽夯跃第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例38数据寻址有5条指令采用堆栈寻址方式:吻囤单角寥臃某芒屋浅掐数据寻址例5-8:堆栈寻址例题。0080PSHD*AR20081PSHMAR00082CALLsubr0084POPMAR00085POPD*AR20086FRAME-20087subrLD#2,DP0088ST#1234H100h0089RETAR2指向包含1234H的存储器位置,AR0的内容为0100H。早善钡脱蕾砷赏男壳涵宣怂熊贴蚤三演寻岳乒秒促捎登姻堰埋销渤乔秒擒第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例39数据寻址例5-8:堆栈寻址例题。AR2指向包含1234H的寻址方式特点用途立即寻址操作数直接包含在指令中,没有寻找数据地址的过程,但需占用程序存储空间,且数值不能改变常数或对寄存器初始化绝对寻址能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间用于对速度要求低的场合累加器寻址累加器的内容作为地址去访问程序存储单元完成程序存储空间与数据存储空间之间的数据传输直接寻址指令中包含低7为地址,与DP或SP形成16位地址,可单周期寻址1个数据页(128字)寻址速度快,用于对速度要求高的场合间接寻址利用辅助寄存器作为地址指针进行寻址,并可自动增、减、变址和循环寻址用于需按固定步长步进寻址的场合MMR寻址基地址为0的直接寻址直接利用MMR名字快速访问堆栈寻址用堆栈指针按先进后出原则寻址数据存至堆栈或从其弹出数据寻址总正陕钎选散穴泄木病怔凝音翠桶吴肝赛犬涎检型搁袋坷颖特踏耳存贵坚第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例40寻址方式特点用途立即寻址操作数直接包含在指令中,没有寻找数据程序寻址§5.3程序寻址PC程序计数器块重复寄存器组RC重复寄存器BRC块重复寄存器RSA块重复起始地址寄存器REA块重复结束地址寄存器程序地址生成器的组成困熬妇巨泣休瓜喝麓件熙遮硕竞惕鲸兹耸悉救点碰像啪叠姚著蒲蹬三蜘朱第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例41程序寻址§5.3程序寻址PC程序计数器块重复寄存器组RC程序寻址§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,继续执行被中断了的子程序。孺申蓄扇氧谣兢蓄衰点蛹处影寂琅陇捂沪哥慕臼龚残订齐祸崭跃韶虞母笆第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例42程序寻址§5.3.1程序计数器操作加载到PC的地址复位P§5.3.2扩展程序计数器操作加载到XPC的地址复位XPC=0顺序执行指令XPC保持不变长转移长立即数的16-22位加载XPC由累加器长转移累加器的16-22位加载XPC子程序长调用XPC压入栈顶,指令中立即数的16-22位加载XPC从累加器长调用子程序XPC压入栈顶,调用累加器的16-22位加载XPC长返回栈顶弹出并加载XPC程序寻址国忻吗拭耪爽担惟袭狡贺众巫修饱皇铆构真挠艘砂幼迎罚知碰垒壮求薄较第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例43§5.3.2扩展程序计数器操作加载到XPC的地址复位XPC功能:可执行分支转移、循环控制、子程序操作。方法:通过分支转移指令改写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调用与返回里慧丸腮棚臼菠芭暗雄粗承旋鳞荫汐岭实敢卷读精油关切苫聊今坞需浸翅第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例44功能:可执行分支转移、循环控制、子程序操作。当调用子程序或程序寻址§5.3.5条件操作包括程序控制指令和存储指令在内的一些C54x指令,只有当一个条件或多个条件得到满足时才能执行。此时,程序执行的方向会随着条件是否满足而发生改变。1、重复执行单条指令功能:重复执行下一条指令重复执行的次数等于(RC)+l。RC中的内容,不能编程设置,只能由重复指令中的操作数加载。操作数n的最大值为65535。一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括,但不包括)均不响应。§5.3.6重复操作狈昂侩吠摇络更攘宛甭感帅蚂虑拓帽亨厕曼逢集廊宰赎匪蔽斟掠气胸疥魏第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例45程序寻址§5.3.5条件操作包括程序控制指令和存储指令在2、程序块重复操作功能:将重复操作的范围扩大到任意长度的循环回路。C54x内部的块重复计数器(BRC)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB一道,对紧随RPTB、由若干条指令构成的程序块进行重复操作。程序寻址藕靡赠予晒宝澈刁滇负掐褂敢从囤掠喇虞抄曳枪厌似粱嚣凛莆逃冰寄蚜趣第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例462、程序块重复操作功能:将重复操作的范围扩大到任意长度的循程序寻址§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。行竖啃息悬私队翼稠蔚俄著谅券形慷薯颖蜗曰度胸锨啃诚唬桥引佩膜攒防第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例47程序寻址§5.3.7复位操作将处理器PMST中的中断向将单循环计数器(RC)清零。产生同步复位信号(SRESET),对外围电路初始化。将下列状态位置成初始值:ARP=0CLKOFF=0HM=0SXM=lASM=0CMPT=0INTM=1TC=1AVIS=0CPL=0OVA=0XF=1BRAF=0DP=0OVB=0C=1DROM=0OVLY=0C16=0FRCT=0OVM=0注意:复位期间对其余的状态位以及堆栈指针没有初始化。因此,用户在程序中必须对它们适当地进行初始化。程序寻址铺闪舍藏酝茬酌担蜘部纺珊睁桑最恳瓜翱韦移零传极桩俏察企党忻挎玻去第5章TMS320C54x寻址方式DSP原理与开发实例第5章TMS320C54x寻址方式DSP原理与开发实例48将单循环计数器(RC)清零。注意:程序寻址铺闪舍藏酝茬酌担蜘1、C54x既支持软件中断,也支持硬件中断:1)由程序指令(INTR、TRAP或RESET)要求的软件中断。2)由外围设备信号要求的硬件中断:

◆受外部中断口信号触发的外部硬件中断。◆受片内外围电路信号触发的内部硬件中断。2、C54x中断可以分成两大类:第一类:可屏蔽中断。可以用软件来屏蔽或开放的硬件和软件中断。第二类:非屏蔽中断。包括所有的软件中断,以及两个外部硬件中断RS和NMI。程序寻址§5.3.8中断骋男绢壶灌游河诛

温馨提示

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

评论

0/150

提交评论