第3章C54x的尋址方式_第1頁(yè)
第3章C54x的尋址方式_第2頁(yè)
第3章C54x的尋址方式_第3頁(yè)
第3章C54x的尋址方式_第4頁(yè)
第3章C54x的尋址方式_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章TMS320C54x的指令系統(tǒng)知識(shí)要點(diǎn)

本章涉及的內(nèi)容包括’C54x指令系統(tǒng)尋址方式的分類和功能,指令系統(tǒng)中的常用符號(hào)、縮略語(yǔ)和運(yùn)算符,數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、程序控制、并行操作和重復(fù)操作指令。

2023/1/12第3章TMS320C54x的指令系統(tǒng)3.1尋址方式3.2TMS320C54x的指令表示方法3.3TMS320C54x的指令系統(tǒng)2023/1/12第3章TMS320C54x的指令系統(tǒng)3.1尋址方式當(dāng)硬件執(zhí)行指令時(shí),尋找指令所指定的參與運(yùn)算的操作數(shù)的方法——尋址方式。

根據(jù)程序的要求采用不同的尋址方式,可以有效地縮短程序的運(yùn)行時(shí)間和提高代碼執(zhí)行效率。’C54x芯片的尋址方式可以分為兩類:

●數(shù)據(jù)尋址●程序?qū)ぶ?/p>

2023/1/12第3章TMS320C54x的指令系統(tǒng)3.1尋址方式’C54x有7種基本的數(shù)據(jù)尋址方式:

立即尋址絕對(duì)尋址累加器尋址直接尋址間接尋址存儲(chǔ)器映像寄存器尋址堆棧尋址:由指令提供一個(gè)操作數(shù):由指令提供一個(gè)操作數(shù)地址:以累加器的內(nèi)容為地址訪問(wèn)程序空間某單元:尋址地址為DP或SP的值加上指令提供的偏移量:利用輔助寄存器訪問(wèn)存儲(chǔ)器:用來(lái)改變映像寄存器,但不影響DP或SP的值:用來(lái)管理系統(tǒng)堆棧中的操作2023/1/12第3章TMS320C54x的指令系統(tǒng)3.1尋址方式尋址方式用

途舉

例指令含義立即尋址主要用于初始化LD#10,A立即數(shù)10

A絕對(duì)尋址利用16位地址尋址存儲(chǔ)單元STLA,*(y)將AL內(nèi)容存入y所在的存儲(chǔ)單元累加器尋址將累加器中的內(nèi)容作為地址READAx將A的內(nèi)容作為地址讀程序存儲(chǔ)器,并存入x存儲(chǔ)單元直接尋址利用數(shù)據(jù)頁(yè)指針和堆棧指針尋址LD@x,A(DP+x的低7位地址)

A間接尋址利用輔助寄存器作為地址指針LD*AR1,A((AR1))A存儲(chǔ)器映像寄存器尋址快速尋址存儲(chǔ)器映象寄存器LDMST1,B(ST1)B堆棧尋址壓入/彈出數(shù)據(jù)存儲(chǔ)器和存儲(chǔ)器映像寄存器MMRPSHMAG(SP)-1SP,(AG)(SP)2023/1/12第3章TMS320C54x的指令系統(tǒng)部分尋址縮略語(yǔ)

縮略語(yǔ)含義Smem16位單尋址操作數(shù)Xmem16位雙尋址操作數(shù),用于雙操作數(shù)或部分單操作數(shù)指令,從DB數(shù)據(jù)總線上讀取Ymem16位雙尋址操作數(shù),用于雙操作數(shù)指令,從CB數(shù)據(jù)總線上讀取dmad16位立即數(shù):數(shù)據(jù)存儲(chǔ)器地址(0~65535)pmad16位立即數(shù):程序存儲(chǔ)器地址(0~65535)PA16位立即數(shù):I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)1k16位長(zhǎng)立即數(shù)2023/1/12第3章TMS320C54x的指令系統(tǒng)

立即尋址

指令中含有執(zhí)行指令所需的操作數(shù)。操作數(shù)緊隨操作碼存放在程序存儲(chǔ)器中。例如:LD#F180h,A;將立即數(shù)F180加載到A程序存儲(chǔ)器操作碼立即數(shù)F180立即數(shù)的數(shù)值形式:①短立即數(shù)。3、5、8、9位,單字指令;②長(zhǎng)立即數(shù)。16位,雙字指令。特點(diǎn):指令中含有一個(gè)固定的立即數(shù),運(yùn)行速度較快,但需占用程序存儲(chǔ)空間,并且數(shù)值不能改變。用途:用于表示常數(shù)或?qū)拇嫫鞒跏蓟?023/1/12立即數(shù)尋址1.短立即數(shù)尋址(單字指令)在指令字中包括立即操作數(shù)RPT#99;將下一條指令循環(huán)100次ADD#0ffh,A;將0ffh加給累加器A2023/1/122.長(zhǎng)立即數(shù)尋址指令字的后一個(gè)字是立即數(shù)(雙字指令)ADD#1234h,A;將1234h加給累加器A2023/1/12絕對(duì)地址尋址1。數(shù)據(jù)存儲(chǔ)器地址(dmad)尋址用一個(gè)符號(hào)或一個(gè)數(shù)來(lái)確定數(shù)據(jù)空間中的一個(gè)地址MVKDsample,*AR5smaple代表的就是一個(gè)dmad2。程序存儲(chǔ)器地址(pmad)尋址2023/1/123.端口地址(PA)尋址用一個(gè)符號(hào)或常數(shù)來(lái)確定I/O口地址PORTWPA,SmemPORTRSmem,PA4.(lk)尋址用一個(gè)符號(hào)或常數(shù)來(lái)確定數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址LD*(buffer),A;把地址為buffer的數(shù)據(jù)單元中的數(shù)據(jù)裝到累加器A中2023/1/12第3章TMS320C54x的指令系統(tǒng)

絕對(duì)尋址

指令中含有所要尋找的操作數(shù)的16位存儲(chǔ)單元地址。

16位地址表示形式:

①地址標(biāo)號(hào),如:TABLE;

②16位符號(hào)常量,如:89AB、1234。

例如:

MVKDTABLE,*AR1

;將數(shù)據(jù)存儲(chǔ)器TABLE為地址

的單元數(shù)據(jù)送入AR1寄存器

指定的數(shù)據(jù)存儲(chǔ)單元中

LD*(DATA),A;將DATA指定的數(shù)據(jù)存儲(chǔ)單元中的數(shù)據(jù)送入累加器A中

特點(diǎn):指令中包含一個(gè)固定的16位地址,能尋址所有數(shù)據(jù)存儲(chǔ)空間,但運(yùn)行速度慢,需要較大的存儲(chǔ)空間。用途:用于對(duì)速度要求較低的場(chǎng)合。2023/1/12第3章TMS320C54x的指令系統(tǒng)

絕對(duì)尋址絕對(duì)尋址是利用16位地址來(lái)尋址操作數(shù)的存儲(chǔ)單元。由于絕對(duì)地址代碼的位數(shù)為16位,所以絕對(duì)地址尋址的指令至少應(yīng)為2個(gè)字長(zhǎng)。絕對(duì)尋址有四種類型:

①數(shù)據(jù)存儲(chǔ)器地址(dmad)尋址;

②程序存儲(chǔ)器地址(pmad)尋址;③端口(PA)尋址;④*(1k)尋址。2023/1/12絕對(duì)地址尋址數(shù)據(jù)存儲(chǔ)器地址(dmad)尋址:用一個(gè)符號(hào)或一個(gè)數(shù)來(lái)確定數(shù)據(jù)空間中的一個(gè)地址例:MVKDsample,*AR5sample所代表的就是一個(gè)dmad2023/1/12絕對(duì)地址尋址程序存儲(chǔ)器地址(pmad)尋址:用一個(gè)符號(hào)或一個(gè)數(shù)來(lái)確定程序地址空間中的一個(gè)地址例:MVKDtable,*AR5table所代表的就是一個(gè)pmad2023/1/12絕對(duì)地址尋址端口地址(PA)尋址用一個(gè)符號(hào)或常數(shù)來(lái)確定I/O口地址

PORTRPA,Smem

PORTWSmem,PA2023/1/12絕對(duì)地址尋址*(lk)尋址

用一個(gè)符號(hào)或一個(gè)常數(shù)來(lái)確定數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址例:

LD*(BUFFER),A把地址為BUFFER的數(shù)據(jù)單元中的數(shù)據(jù)裝到AccA中2023/1/12第3章TMS320C54x的指令系統(tǒng)1.數(shù)據(jù)存儲(chǔ)器地址尋址

用于確定操作數(shù)存于數(shù)據(jù)存儲(chǔ)單元的地址。例如,將數(shù)據(jù)存儲(chǔ)器EXAM1地址單元中的數(shù)據(jù)復(fù)制到AR5寄存器所指向的數(shù)據(jù)存儲(chǔ)單元中。

MVKDEXAM1,*AR5

語(yǔ)法:使用一個(gè)程序標(biāo)號(hào)或一個(gè)數(shù)字來(lái)指定數(shù)據(jù)空間的一個(gè)地址。數(shù)據(jù)存儲(chǔ)器的16位地址dmad值

2023/1/12第3章TMS320C54x的指令系統(tǒng)2.程序存儲(chǔ)器地址尋址用于確定程序存儲(chǔ)器中的一個(gè)地址。例如,將程序存儲(chǔ)器TABLE地址單元中的內(nèi)容復(fù)制到AR2寄存器所指向的數(shù)據(jù)存儲(chǔ)單元中。

MVPDTABLE,

*AR2

語(yǔ)法:使用一個(gè)符號(hào)或具體的數(shù)字來(lái)指定程序空間的一個(gè)地址。程序存儲(chǔ)器的16位地址pmad值

2023/1/12第3章TMS320C54x的指令系統(tǒng)3.端口(PA)尋址用一個(gè)符號(hào)或一個(gè)數(shù)字來(lái)確定外部I/O端口的地址。例如,把一個(gè)數(shù)從端口為FIFO的I/O口復(fù)制到AR5寄存器所指向的數(shù)據(jù)存儲(chǔ)單元中。

PORTRFIFO,*AR5I/O端口地址PA2023/1/12第3章TMS320C54x的指令系統(tǒng)4.*(1k)尋址使用一個(gè)指定數(shù)據(jù)空間的地址來(lái)確定數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址。例如,把地址為PN的數(shù)據(jù)單元中的數(shù)據(jù)裝到累加器A中。

LD*(PN),A

語(yǔ)法:允許所有使用單數(shù)據(jù)存儲(chǔ)器(Smem)尋址的指令去訪問(wèn)數(shù)據(jù)空間的任意單元,而不改變DP的值,也不用對(duì)AR進(jìn)行初始化。

這種尋址可用于支持單數(shù)據(jù)存儲(chǔ)器操作數(shù)的指令。注意:*(1k)尋址的指令不能與循環(huán)指令(RPT,RPTZ)一起使用。

2023/1/12第3章TMS320C54x的指令系統(tǒng)

累加器尋址將累加器的內(nèi)容作為地址去訪問(wèn)程序存儲(chǔ)單元,即將累加器中的內(nèi)容作為地址,用來(lái)對(duì)存放數(shù)據(jù)的程序存儲(chǔ)器尋址。

例如:

READASmem

;將A中的數(shù)據(jù)作為地址尋址程序

存儲(chǔ)器中的數(shù)據(jù),并將數(shù)據(jù)送

入Smem指定的數(shù)據(jù)存儲(chǔ)單元。

WRITASmem

;將Smem指定的數(shù)據(jù)存儲(chǔ)單元中的

數(shù)據(jù),寫入A所指定的程序存儲(chǔ)

單元。用途:用于完成程序存儲(chǔ)空間與數(shù)據(jù)存儲(chǔ)空間之間的數(shù)據(jù)傳輸。注意:①大多數(shù)’C54x用A的低16位作為程序存儲(chǔ)器的地址,而’C548和’C549是以A的低23位作為程序存儲(chǔ)器地址,’C5402是以A的低20位作為程序存儲(chǔ)器地址;②上述兩條指令重復(fù)使用時(shí),累加器A自動(dòng)增減;

③只能使用累加器A尋址程序空間。

累加器A用來(lái)尋址程序空間。Smem用來(lái)尋址數(shù)據(jù)空間。2023/1/12累加器尋址用累加器中的數(shù)作為一個(gè)地址,可用來(lái)對(duì)存放數(shù)據(jù)的程序存儲(chǔ)器尋址READASmemWRITASmemREADA把累加器A所確定的程序存儲(chǔ)器單元中的一個(gè)字,傳送到數(shù)據(jù)存儲(chǔ)器單元(Smem)中WRITA把數(shù)據(jù)存儲(chǔ)器單元(Smem)中的一個(gè)字,傳送到累加器A所確定的程序存儲(chǔ)器單元中2023/1/12直接尋址C54x的數(shù)據(jù)存儲(chǔ)器分為512頁(yè),每頁(yè)有128個(gè)字。設(shè)置一個(gè)數(shù)據(jù)頁(yè)指針DP(datapointer),用9bit指向一個(gè)數(shù)據(jù)頁(yè),在加上一個(gè)7bit的頁(yè)內(nèi)偏移地址,形成16bit的數(shù)據(jù)地址。LD#4,DP;指向頁(yè)4(0200h~027Fh)ADD9h,A;將數(shù)據(jù)頁(yè)4中地址9h的的數(shù)據(jù)加到累加器。2023/1/122023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址利用數(shù)據(jù)指針DP和堆棧指針SP尋址。指令格式:15~8

7

6~0

操作碼

I=0

數(shù)據(jù)存儲(chǔ)器地址(dmad)

指令的8位操作碼指令的標(biāo)識(shí)符表示指令為直接尋址

數(shù)據(jù)存儲(chǔ)器地址包含了數(shù)據(jù)存儲(chǔ)器偏移地址

特點(diǎn):①指令中只含有數(shù)據(jù)存儲(chǔ)器的低7位地址(偏移地址dmad);②16位數(shù)據(jù)存儲(chǔ)器地址由基地址(數(shù)據(jù)頁(yè)指針DP或堆棧指針SP)和偏移地址(dmad)共同構(gòu)成。

2023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址所要尋址的數(shù)據(jù)存儲(chǔ)器16位地址是由基地址和偏移地址構(gòu)成?;刂罚孩?/p>

數(shù)據(jù)頁(yè)指針DP(9位);②堆棧指針SP。

當(dāng)CPL=0時(shí),數(shù)據(jù)存儲(chǔ)器16位地址由DP和偏移地址dmad構(gòu)成;

當(dāng)CPL=1時(shí),數(shù)據(jù)存儲(chǔ)器16位地址由SP加偏移地址dmad構(gòu)成。2023/1/12第3章TMS320C54x的指令系統(tǒng)地址形成過(guò)程:當(dāng)CPL=0時(shí),直接尋址指令15~876~0操作碼I=0dmad頁(yè)指針DP(位于ST0中)9位數(shù)據(jù)頁(yè)指針DP9位數(shù)據(jù)頁(yè)指針DP高9位dmad低7位16位數(shù)據(jù)存儲(chǔ)器地址2023/1/12第3章TMS320C54x的指令系統(tǒng)地址形成過(guò)程:當(dāng)CPL=1時(shí),直接尋址指令15~876~0操作碼I=0dmad高9位dmad低7位16位數(shù)據(jù)存儲(chǔ)器地址16位堆棧指針SP堆棧指針SPSP+dmad16位SP+dmad2023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址

DP地址的范圍是從0~511(29-1),將存儲(chǔ)器分成512頁(yè)。

以DP為基準(zhǔn)的直接尋址是由DP值確定是512頁(yè)中的哪一頁(yè),由dmad確定是該頁(yè)中的哪一個(gè)單元。

7位dmad范圍是從0~127,每頁(yè)有128個(gè)可以訪問(wèn)的單元。

SP可以指向存儲(chǔ)器中的任意一個(gè)地址。dmad可以指向當(dāng)前頁(yè)中具體的單元,從而允許訪問(wèn)存儲(chǔ)器任意基地址中的連續(xù)的128個(gè)單元2023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址直接尋址標(biāo)識(shí):①變量前加@,如@x;②在偏移量前加@,如@5。利用直接尋址可以在不改變DP或SP的情況下,隨機(jī)尋址128個(gè)存儲(chǔ)單元中的任何一個(gè)單元。直接尋址的優(yōu)點(diǎn):每條指令只需要一個(gè)字。2023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址

例1:數(shù)據(jù)存儲(chǔ)器存儲(chǔ)數(shù)據(jù)如圖所示,采用數(shù)據(jù)頁(yè)指針DP直接尋址,完成x,y單元的兩個(gè)數(shù)據(jù)求和。RSBXCPL數(shù)據(jù)存儲(chǔ)器地址數(shù)據(jù)01800001......X:01FF1000y:02000500......第3頁(yè)第4頁(yè)LD#3,DPLD@x,AADD@y,A;CPL復(fù)位;立即數(shù)3賦給DP;x單元的數(shù)據(jù)送入A;完成x和y單元的數(shù)據(jù)相加DPdmaLD#3,DPLD#3,DP000000011LD@x,ALD@x,A1111111操作碼01111111機(jī)器碼@x000000011111111101FF@x01FF1000A000000100001FF1000ADD@y,A操作碼00000000機(jī)器碼0000000@y00000001100000001800@y018000010180H0001+1001018000011001000000ADD@y,A0000001001A結(jié)果ADD@y,ALD@x,ALD#3,DPRSBXCPLADD@y,ALD#4,DPLD#4,DPRSBXCPLLD#3,DPDP000000011LD@x,Adma111111101FF@xA0000001000LD#4,DPDP000000100ADD@y,Adma00000000200@y05000200H05000200H+005100000000000015000000001500A結(jié)果2023/1/12第3章TMS320C54x的指令系統(tǒng)

直接尋址直接尋址特點(diǎn):

①所尋址數(shù)據(jù)存儲(chǔ)器的16位地址是由DP或SP

與7位偏移地址dmad構(gòu)成;

②可在單周期尋址128個(gè)單元;

③尋址速度快,能進(jìn)行流水線并行操作。用途:主要用于要求運(yùn)算速度較快的場(chǎng)合。注意:①上述兩種直接尋址方式是相互排斥的;

②采用DP尋址時(shí),要注意數(shù)據(jù)所在的頁(yè)面指針。2023/1/12間接尋址8個(gè)輔助寄存器(AR0-AR7),由一個(gè)輔助寄存器指針(ARP3bit)來(lái)指定。輔助寄存器算術(shù)單元(ARAU)作16bit無(wú)符號(hào)數(shù)運(yùn)算,決定一個(gè)新的地址,裝入輔助寄存器中的一個(gè)。AR0-AR7的內(nèi)容相當(dāng)靈活,可以裝入立即數(shù),加上立即數(shù),減去立即數(shù),也可以從數(shù)據(jù)存儲(chǔ)器中裝入地址,還可以作以下的變址尋址2023/1/122023/1/122023/1/12將該AR的內(nèi)容加1或減1,然后再尋址(循環(huán)常用)。將該AR的內(nèi)容加或減AR0的內(nèi)容,然后再尋址將該AR的內(nèi)容逆向進(jìn)位加或減AR0的內(nèi)容,然后再尋址2023/1/12尋址方式:間接尋址

ADD*,8,A;將當(dāng)前輔助寄存器所指的地址里的數(shù)據(jù),左移8-bit后加給AccAADD*+,8,A,AR4;數(shù)據(jù)左移,加給AccA后,當(dāng)前輔助寄存器加1,選擇輔助寄存器AR42023/1/12尋址方式:間接尋址

ADD*0+,8,A;執(zhí)行加法后,將AR0的值加給當(dāng)前輔助寄存器ADD*BR0+,8,A;執(zhí)行加法后,將AR0的值加給當(dāng)前輔助寄存器,但反向進(jìn)位2023/1/12正向進(jìn)位與反向進(jìn)位2023/1/12第3章TMS320C54x的指令系統(tǒng)

間接尋址是根據(jù)輔助寄存器(AR0~AR7)給出的16位地址進(jìn)行尋址。每一個(gè)輔助寄存器都可以用來(lái)尋址64K字?jǐn)?shù)據(jù)存儲(chǔ)空間中任何一個(gè)單元。兩個(gè)輔助寄存器算術(shù)運(yùn)算單元(ARAU0和ARAU1)可以根據(jù)輔助寄存器的內(nèi)容進(jìn)行操作,完成16位無(wú)符號(hào)數(shù)算術(shù)運(yùn)算。2023/1/12第3章TMS320C54x的指令系統(tǒng)

間接尋址可完成以下操作:

①用單指令對(duì)存儲(chǔ)器進(jìn)行16位數(shù)據(jù)的讀操作或?qū)懖僮?;②用單指令可以完成?duì)兩個(gè)獨(dú)立的數(shù)據(jù)存儲(chǔ)單元的讀操作;

③用單指令可以讀和寫兩個(gè)連續(xù)的數(shù)據(jù)存儲(chǔ)單元;

④用單指令可以在讀一個(gè)數(shù)據(jù)存儲(chǔ)單元的同時(shí),向另一個(gè)存儲(chǔ)單元進(jìn)行寫操作。2023/1/12第3章TMS320C54x的指令系統(tǒng)

間接尋址1.單操作數(shù)尋址用來(lái)完成存儲(chǔ)單元中16位單數(shù)據(jù)的讀寫操作。指令格式:15~8

76~3

2~0

操作碼

I=1

MODARF指令的8位操作碼指令的標(biāo)識(shí)符表示指令為間接尋址4位的方式域用來(lái)定義間接尋址的類型3位輔助寄存器域用來(lái)定義所使用的輔助寄存器2023/1/12第3章TMS320C54x的指令系統(tǒng)單操作數(shù)間接尋址形式MOD域

操作句法功

能說(shuō)

明0000*

ARx

地址=ARxARx的內(nèi)容為數(shù)據(jù)存儲(chǔ)器地址0001*

ARx-

地址=ARxARx=ARx-1尋址結(jié)束后,ARx地址減1。[注2]

0010*

ARx+

地址=ARxARx=ARx+1尋址結(jié)束后,ARx地址加1。

[注1]

0011*

+ARx

ARx=ARx+1地址=ARx

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

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

0100*

ARx-0B

地址=ARxARx=B(ARx-AR0)尋址結(jié)束后,用位倒序進(jìn)位的方法從

ARx中減去AR0的值。

[注1]:尋址16位字時(shí)增/減量為1,32位字時(shí)增/減量為2。[注2]:這種方式只能用寫操作指令。[注3]:這種方式不允許對(duì)存儲(chǔ)器映像寄存器尋址。

2023/1/12第3章TMS320C54x的指令系統(tǒng)單操作數(shù)間接尋址形式MOD域

操作句法功

能說(shuō)

明0101*

ARx-0

地址=ARxARx=ARx-AR0

尋址結(jié)束后,從ARx中減去AR0的值。0110

*

ARx+0

地址=ARx

ARx=ARx+AR0

尋址結(jié)束后,把AR0加到ARx中。0111

*

ARx+0B

地址=ARxARx=B(ARx+AR0)尋址結(jié)束后,用位倒序進(jìn)位的方法將

AR0加到ARx中1000

*

ARx-%地址=ARxARx=Circ(ARx-1)尋址結(jié)束后,ARx中的地址值按循環(huán)減的方法減1。[注1]

1001

*

ARx-0%地址=ARx

ARx=Circ(ARx-AR0)

尋址結(jié)束后,按循環(huán)減的方法從ARx中減去AR0中的值

[注1]:尋址16位字時(shí)增/減量為1,32位字時(shí)增/減量為2。2023/1/12第3章TMS320C54x的指令系統(tǒng)單操作數(shù)間接尋址形式MOD域

操作句法功

能說(shuō)

明1010

*

ARx+%地址=ARxARx=Circ(ARx+1)尋址結(jié)束后,ARx中的地址值按循環(huán)加的方法加1。[注1]

1011

*

ARx+0%地址=ARxARx=Circ(ARx+AR0)尋址結(jié)束后,按循環(huán)加的方法將AR0中的值加到ARx。

1100

*

ARx(lk)地址=ARx+lkARx=ARx以ARx與16位數(shù)之和作為地址,尋址結(jié)束后,ARx中的值不變。

1101

*+ARx(lk)

地址=ARx+lk

ARx=ARx+lk將一個(gè)16位帶符號(hào)數(shù)加到ARx,然后尋址。[注3]1110*

ARx(lk)%

地址=Circ(ARx+lk)

ARx=Circ(ARx+lk)

將一個(gè)16位帶符號(hào)數(shù)按循環(huán)加的方法加至ARx,然后再尋址1111*

(lk)

地址=(lk)利用16位無(wú)符號(hào)數(shù)作為地址,尋址數(shù)據(jù)存儲(chǔ)器[注3]:這種方式不允許對(duì)存儲(chǔ)器映像寄存器尋址。

2023/1/12.mmregs.bssx,4,1a0 .word012ha1 .word3211ha2 .wordfe11ha3 .wordff03h.sect“program”LD#X,AR1LD#0,A,AR1LD#a0,T

MAC*+,A LD#a1,T MAC*+,A LD#a2,T MAC*+,ALD#a3,T MAC*,A2023/1/12第3章TMS320C54x的指令系統(tǒng)特殊的間接尋址功能:在存儲(chǔ)器中設(shè)置一個(gè)緩沖區(qū)作為滑動(dòng)窗,來(lái)保存最新的一批數(shù)據(jù),并用新的數(shù)據(jù)覆蓋舊的數(shù)據(jù),實(shí)現(xiàn)循環(huán)尋址。

循環(huán)緩沖區(qū)的長(zhǎng)度R,由循環(huán)緩沖區(qū)長(zhǎng)度寄存器BK確定,可通過(guò)指令設(shè)定。1.單操作數(shù)尋址(1)循環(huán)尋址其指令:

STM#1K,BK;將立即數(shù)1K存放BK中2023/1/12循環(huán)尋址許多算法,如卷積,相關(guān)和FIR濾波等,都需要在存儲(chǔ)器中實(shí)現(xiàn)一個(gè)循環(huán)緩沖器。在這些算法中,一個(gè)循環(huán)緩沖器就是一個(gè)包含了最近的數(shù)據(jù)的滑動(dòng)窗口。當(dāng)新的數(shù)據(jù)來(lái)到時(shí),緩沖器就會(huì)覆蓋最早的數(shù)據(jù)。循環(huán)緩沖器實(shí)現(xiàn)的關(guān)鍵是循環(huán)尋址的實(shí)現(xiàn)。C54x間接尋址中提供了循環(huán)尋址的方式,以%表示。2023/1/12定義循環(huán)緩沖器大小寄存器(BK)來(lái)確定循環(huán)緩沖器的大小。用循環(huán)緩沖器的有效基地址(EFB)和尾地址(EOB)來(lái)組成循環(huán)地址。step是加到輔助寄存器,或從輔助寄存器中減去的值。2023/1/12第3章TMS320C54x的指令系統(tǒng)長(zhǎng)度為R的緩沖區(qū)必須從N位地址的邊界開(kāi)始,即循環(huán)緩沖區(qū)基地址的N個(gè)最低有效位必須為0。

N應(yīng)滿足:(1)循環(huán)尋址

2N>R的最小整數(shù)例如:緩沖區(qū)長(zhǎng)度R=32,若2N>32,則N=6。緩沖區(qū)開(kāi)始的地址:xxxxxxxxxx000000B

緩沖區(qū)長(zhǎng)度R=32裝入循環(huán)緩沖長(zhǎng)度寄存器BK中。

循環(huán)尋址是以BK的值為模,對(duì)緩沖區(qū)長(zhǎng)度R進(jìn)行取模運(yùn)算。2023/1/12第3章TMS320C54x的指令系統(tǒng)(1)循環(huán)尋址循環(huán)尋址通常是指定一個(gè)輔助寄存器ARx指向循環(huán)緩沖區(qū);循環(huán)緩沖區(qū)的有效基地址(EFB)就是用戶指定的輔助寄存器(ARx)的低N位置0后所得到的值;循環(huán)緩沖區(qū)的尾基地址(EOB)是通過(guò)用BK的低N代替ARx的低N位得到;循環(huán)緩沖區(qū)的偏移量(index)就是ARx的低N位;循環(huán)尋址的步長(zhǎng)(step)就是加到輔助寄存器ARx或從輔助寄存器ARx中減去的值。2023/1/12第3章TMS320C54x的指令系統(tǒng)(1)循環(huán)尋址循環(huán)尋址的算法:If0偏移量+步長(zhǎng)<

BK;

偏移量=偏移量+步長(zhǎng);Else

if偏移量+步長(zhǎng)

BK;偏移量=偏移量+步長(zhǎng)-BK;Else

if偏移量+步長(zhǎng)

<0;偏移量=偏移量+步長(zhǎng)+BK;注意:①

步長(zhǎng)小于BK,其大小與所用指令有關(guān);②

若步長(zhǎng)為正,進(jìn)行循環(huán)加尋址;否則進(jìn)行循環(huán)減尋址;

③若BK=0,則為不作修正的輔助寄存器間接尋址。

2023/1/12第3章TMS320C54x的指令系統(tǒng)(1)循環(huán)尋址循環(huán)尋址操作過(guò)程:

首先要指定一個(gè)ARx指向循環(huán)緩沖區(qū),根據(jù)ARx的低N位作為循環(huán)緩沖區(qū)的偏移量進(jìn)行規(guī)定的尋址操作。

尋址完成后,再根據(jù)循環(huán)尋址算法修正偏移量,并返回ARx的低N位。2023/1/12第3章TMS320C54x的指令系統(tǒng)1.單操作數(shù)尋址(2)位倒序?qū)ぶ酚糜诳焖俑凳献儞Q算法FFT。位碼順序?qū)ぶ罚喊凑斩M(jìn)制遞增規(guī)律尋址。如:0000,0001,0010,0011,…,1111。如:0000,1000,0100,1100,…,1111。位碼倒序?qū)ぶ罚焊鶕?jù)二進(jìn)制遞增碼,按其位碼倒序的規(guī)律進(jìn)行尋址。2023/1/12位倒序?qū)ぶ稟R0=100AR1=000按AR1尋址后,將AR0加給AR1,反向進(jìn)位2023/1/12原序原地址位倒序后地址位倒序2023/1/12第3章TMS320C54x的指令系統(tǒng)(2)位倒序?qū)ぶ穼?shí)現(xiàn)過(guò)程:①根據(jù)FFT算法進(jìn)行轉(zhuǎn)換,按轉(zhuǎn)換順序?qū)?/p>

X(0)、X(4)、X(2)、…、X(7)的轉(zhuǎn)換

結(jié)果存入數(shù)據(jù)存儲(chǔ)器。②按照位碼倒序的方法尋址,可將亂序的轉(zhuǎn)換結(jié)果進(jìn)行整序輸出。2023/1/12第3章TMS320C54x的指令系統(tǒng)

間接尋址2.雙操作數(shù)尋址用于完成執(zhí)行2次讀操作或者1次讀和1次的并行存儲(chǔ)操作(用‖表示)。這些指令代碼都是1個(gè)字長(zhǎng),而且只能以間接尋址方式進(jìn)行操作。兩個(gè)數(shù)據(jù)存儲(chǔ)器操作數(shù)由Xmem和Ymem表示。

Xmem:讀操作數(shù);

Ymem:

在兩次讀操作的指令中,表示一個(gè)讀操作數(shù);在一次讀和一次寫的指令中,表示寫操作數(shù)。2023/1/12第3章TMS320C54x的指令系統(tǒng)2.雙操作數(shù)尋址用于完成執(zhí)行2次讀操作或者1次讀和1次的并行存儲(chǔ)操作。這些指令代碼都是1個(gè)字長(zhǎng),而且只能以間接尋址方式進(jìn)行操作。指令格式:15~8

76

54

32

10

操作碼

XmodXarYmodYar指令的8位操作碼用來(lái)定義Xmem操作數(shù)間接尋址方式的類型用來(lái)定義存儲(chǔ)Xmem地址的輔助寄存器用來(lái)定義Ymem操作數(shù)間接尋址方式的類型用來(lái)定義存儲(chǔ)Ymem地址的輔助寄存器2023/1/12第3章TMS320C54x的指令系統(tǒng)2.雙操作數(shù)尋址雙操作數(shù)間接尋址的類型Xmod、Ymod操作碼語(yǔ)法功能

說(shuō)明

00*

ARx地址=ARxARx中的內(nèi)容是數(shù)據(jù)存儲(chǔ)器地址

01*

ARx-地址=ARxARx=ARx-1尋址后,ARx的地址減1

10*

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

11*

ARx+0%地址=ARxARx=circ(ARx+AR0)尋址后,AR0以循環(huán)尋址方式加到ARx中去

2023/1/12第3章TMS320C54x的指令系統(tǒng)2.雙操作數(shù)尋址在指令中,由于只有2位可以用于選擇輔助寄存器,所以根據(jù)Xar或Yar的值可以選擇4個(gè)寄存器。Xar和Yar域選擇的輔助寄存器Xar、Yar輔助寄存器00011011AR2AR3AR4AR52023/1/12第3章TMS320C54x的指令系統(tǒng)

間接尋址特點(diǎn):通過(guò)輔助寄存器和輔助寄存器指針來(lái)尋址數(shù)據(jù)空間存儲(chǔ)單元,并自動(dòng)實(shí)現(xiàn)增量、減量、變址尋址、循環(huán)尋址,共有16種修正地址的方式。用途:用于需要按固定步長(zhǎng)尋址的場(chǎng)合。

間接尋址2023/1/12存儲(chǔ)器映射寄存器(MMR)尋址存儲(chǔ)器映射寄存器尋址用來(lái)修改存儲(chǔ)器映射寄存器而不影響當(dāng)前數(shù)據(jù)頁(yè)指針(DP)或堆棧指針(SP)的值。存儲(chǔ)器映射寄存器尋址既可以在直接尋址中使用,又可以在間接尋址中使用。2023/1/12第3章TMS320C54x的指令系統(tǒng)

存儲(chǔ)器映像寄存器尋址是一種不考慮DP和SP為何值,以0為基地址來(lái)訪問(wèn)MMR的尋址方式。主要用于修改存儲(chǔ)器映像寄存器的內(nèi)容。1.采用直接尋址方式2.采用間接尋址方式

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論