第3章TMS320C54XDSP尋址方式10_第1頁(yè)
第3章TMS320C54XDSP尋址方式10_第2頁(yè)
第3章TMS320C54XDSP尋址方式10_第3頁(yè)
第3章TMS320C54XDSP尋址方式10_第4頁(yè)
第3章TMS320C54XDSP尋址方式10_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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)介

《DSP技術(shù)與應(yīng)用》學(xué)時(shí):32(含8學(xué)時(shí)實(shí)驗(yàn))1第3章

TMS320C54XDSP尋址方式

2本章內(nèi)容1、尋址與尋址方式2、立即尋址3、絕對(duì)尋址4、累加器尋址5、直接尋址6、間接尋址

7、MMR尋址

8、堆棧尋址

9、程序存儲(chǔ)器尋址3

尋址與尋址方式

指令執(zhí)行過(guò)程中涉及兩次尋址操作,一次是預(yù)取指階段的指令代碼尋址,另一次是訪問(wèn)階段的操作數(shù)尋址

指令代碼尋址主要在程序存儲(chǔ)空間進(jìn)行,稱作程序存儲(chǔ)器尋址;操作數(shù)尋址主要在數(shù)據(jù)存儲(chǔ)空間進(jìn)行,稱作數(shù)據(jù)存儲(chǔ)器尋址,簡(jiǎn)稱尋址。尋找指令代碼和尋找參與運(yùn)算的操作數(shù)的方法稱作尋址方式。同一功能指令因?qū)ぶ贩绞讲煌卸喾N表示形式。4符號(hào)含義Smem16位單數(shù)據(jù)尋址操作數(shù)Xmem16位雙數(shù)據(jù)尋址操作數(shù),從DB總線讀出Ymem16位雙數(shù)據(jù)尋址操作數(shù),從CB總線讀出dmad16位立即數(shù),數(shù)據(jù)存儲(chǔ)器地址pmad16位立即數(shù),程序存儲(chǔ)器地址PA16位立即數(shù),I/O口地址src源累加器(A或B)dst目的累加器(A或B)lk16位長(zhǎng)立即數(shù)尋址指令中的縮寫符號(hào)及其含義5立即數(shù)尋址:指令中包含有一個(gè)立即數(shù)(#)操作數(shù)絕對(duì)地址尋址:指令中包含有一個(gè)操作數(shù)的16位物理地址累加器尋址:用累加器的低16位值作為地址去訪問(wèn)程序存儲(chǔ)器直接尋址:指令中包含的7位偏移地址與當(dāng)前數(shù)據(jù)頁(yè)指針DP或堆棧指針SP共同決定了操作數(shù)在數(shù)據(jù)存儲(chǔ)器中的物理地址間接尋址:

8個(gè)輔助寄存器中包含有操作數(shù)所在的數(shù)據(jù)存儲(chǔ)器地址存儲(chǔ)器映射寄存器尋址:修改存儲(chǔ)器映射寄存器中的值,而不影響當(dāng)前DP或SP的值堆棧尋址:把數(shù)據(jù)壓入和彈出系統(tǒng)堆棧尋址方式操作數(shù)尋址方式’C54x共有7種操作數(shù)尋址方式:6

1.立即尋址在立即尋址方式中,指令里包含了立即操作數(shù)。立即尋址方式中的立即數(shù)有兩種數(shù)值形式,1、5、8、9位短立即數(shù)和16位的長(zhǎng)立即數(shù),它們?cè)谥噶钪蟹謩e編碼為單字指令和雙字指令。

例如:

LD#0AH,ASM;5-bit(EDOA) RPT#99H ;8-bit(EC99) LD#020H,DP;9-bit(EA20) LD#0FE00H,A;16-bit(F020FE00)需要注意的是,立即數(shù)前面加需“#”以區(qū)別于地址表示方法,不得遺漏。例如,LD#0FE00H,A,表示將立即數(shù)FE00H送入累加器A,遺漏#,則變成把地址為0FE00H單元的內(nèi)容送入累加器A(1000FE00)。7有四種絕對(duì)尋址指令:

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

MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad程序存儲(chǔ)器地址(pmad)尋址:

FIRSXmem,Ymem,pmadMVDPSmem,pmadMACPSmem,pmad,srcMVPDpmad,SmemI/O端口地址(PA)尋址:

PORTRPA,SmemPORTWSmem,PA長(zhǎng)立即數(shù)*(lk)尋址:

LD*(BUFFER),A2.絕對(duì)尋址絕對(duì)尋址方式的指令中包含有所尋操作數(shù)的16位單元地址。由于尋址16位絕對(duì)地址,故絕對(duì)尋址指令長(zhǎng)度至少為2個(gè)字。8例如:

MVKDDATA,*AR1; 數(shù)據(jù)存儲(chǔ)器尋址

MVPDTABLE, *AR2; 程序存儲(chǔ)器尋址

PORTR0F2F0H, *AR5; 端口尋址第一條指令表示將數(shù)據(jù)存儲(chǔ)器中以DATA符號(hào)為地址單元中的數(shù)據(jù)傳送到由輔助寄存器ARl所指向的數(shù)據(jù)存儲(chǔ)單元中去。DATA代表數(shù)據(jù)存儲(chǔ)單元的地址dmad。第二條指令表示將程序存儲(chǔ)器中以TABLE符號(hào)為地址單元中的數(shù)據(jù)傳送到由輔助寄存器AR2所指向的數(shù)據(jù)存儲(chǔ)單元中去。TABLE代表程序存儲(chǔ)單元的地址pmad。第三條指令表示將地址為0F2F0H的端口中的數(shù)據(jù)傳送到由輔助寄存器AR5所指向的數(shù)據(jù)存儲(chǔ)單元中去。93.累加器尋址

累加器尋址是利用累加器A的低16位(AL內(nèi)容)作為地址對(duì)程序存儲(chǔ)器中的數(shù)據(jù)進(jìn)行訪問(wèn),這種尋址方式常用來(lái)尋址存放數(shù)據(jù)的程序存儲(chǔ)空間。

只有兩條指令可用于累加器尋址方式。

READASmem

WRITASmem第一條指令意為將累加器A(AL)的內(nèi)容作為地址尋找程序存儲(chǔ)器中的數(shù)據(jù),傳送到Smem指定的數(shù)據(jù)存儲(chǔ)單元中。第二條指令意為將Smem指定的數(shù)據(jù)存儲(chǔ)單元中的數(shù)據(jù)(1個(gè)字),寫到累加器A(AL)指定地址的程序存儲(chǔ)器中去。10累加器尋址舉例:DM的地址:0206h1514131211109876543210000000100000011011

4.直接尋址

直接尋址指令中包含有數(shù)據(jù)存儲(chǔ)器地址的低7位(dma)。

以dma為偏移地址,與基地址(數(shù)據(jù)頁(yè)指針DP或堆棧指針SP)共同構(gòu)成16位數(shù)據(jù)存儲(chǔ)器的物理地址。數(shù)據(jù)指針(DP),當(dāng)ST1中的CPL位=0堆棧指針(SP),當(dāng)ST1中的CPL位=1

位于狀態(tài)寄存器ST1中的CPL的值決定了這種尋址方式的指針選擇CPL=0,選擇數(shù)據(jù)頁(yè)指針DP,用DP中的9位作為高位與指令中指定的7位作為低位,共同構(gòu)成16位數(shù)據(jù)存儲(chǔ)單元的地址。CPL=1,選擇堆棧指針SP,用SP的值與指令中指定的7位正偏移量相加,構(gòu)成16位數(shù)據(jù)存儲(chǔ)單元的地址。利用這種尋址方式,可以在不改變數(shù)據(jù)頁(yè)指針DP和堆棧指針SP內(nèi)容的情況下,隨機(jī)地尋址128個(gè)存儲(chǔ)單元中的任何一個(gè)單元。

直接尋址的優(yōu)點(diǎn)是尋址速度快且為單字指令。129-bit的DP與7-bit的dma結(jié)合形成數(shù)據(jù)存儲(chǔ)器物理地址以DP為基準(zhǔn)的直接尋址DP9-bit9-bit的DP指向數(shù)據(jù)存儲(chǔ)空間的512個(gè)數(shù)據(jù)頁(yè)中的某一頁(yè)012510511

CPL=0DP直接尋址注意:用DP直接尋址時(shí)操作對(duì)象需處于同一頁(yè)當(dāng)偏移地址為變量時(shí),變量前加@符號(hào)例:x.set20LD#20hDPLD@x,A13

觀察如下程序,計(jì)算累加器A中數(shù)據(jù)。

RSBXCPLLD#3,DPLD@x,ALD#4,DPADD@y,A

直接尋址方式書(shū)寫時(shí)需在變量前加@,或者用一個(gè)數(shù)dma設(shè)定偏移地址值。

DP的值可由LD指令裝入,用RESET指令復(fù)位清零;

CPL的值可由SSBX置位,由RSBX復(fù)位。

采用DP數(shù)據(jù)頁(yè)指針直接尋址編程舉例地址數(shù)據(jù)00010180????????01FF100002000500????????數(shù)據(jù)存儲(chǔ)器xy14地址計(jì)算公式:例如:SSBXCPL;CPL置位LD@1,AADD@2,A;A的結(jié)果:1500024010000503404SP(SP則始終指向棧頂)

CPL=1SP直接尋址15

5.間接尋址

間接尋址根據(jù)8個(gè)輔助寄存器AR0—AR7中定義的任一寄存器給出的16位地址尋址。每一個(gè)寄存器都可以用來(lái)尋址64K字?jǐn)?shù)數(shù)據(jù)存儲(chǔ)空間中的任何一個(gè)單元。

間接尋址很靈活,不僅能從存儲(chǔ)器中讀或?qū)懸粋€(gè)單16-bit數(shù)據(jù)操作數(shù),而且能在一條指令中訪問(wèn)兩個(gè)數(shù)據(jù)存儲(chǔ)器單元(即從兩個(gè)獨(dú)立的存儲(chǔ)器單元讀數(shù)據(jù),或讀一個(gè)存儲(chǔ)器單元同時(shí)寫另一個(gè)存儲(chǔ)器單元,或讀寫兩個(gè)連續(xù)的存儲(chǔ)器單元)。

VC5402有兩個(gè)輔助寄存器算術(shù)運(yùn)算單元ARAU0和ARAU1,它們與8個(gè)輔肋輔助寄存器一起,可以進(jìn)行無(wú)符號(hào)數(shù)算術(shù)運(yùn)算,實(shí)現(xiàn)16種單操作數(shù)間接尋址或4種雙操作數(shù)間接尋址方式。16

序號(hào)間址類型功能說(shuō)明0*ARxAddr=ARxARx包含了數(shù)據(jù)存儲(chǔ)器地址1*ARx-Addr=ARxARx=ARx-1ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中地址減12*ARx+Addr=ARxARx=ARx+1ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中地址加13*+ARxAddr=ARx+1ARx=ARx+1尋址前,ARx中地址加14*ARx-0BAddr=ARxARx=B(ARx-AR0)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以位倒序方式減去AR05*ARx-0Addr=ARxARx=ARx-AR0ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中減去AR06*ARx+0Addr=ARxARx=ARx+AR0ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中加上AR07*ARx+0BAddr=ARxARx=B(ARx+AR0)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以位倒序方式加上AR0*號(hào)表示間址

32位雙字時(shí)+/-增減為2尋址前變址只用于寫操作指令178*ARx-%Addr=ARxARx=circ(ARx-1)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以循環(huán)尋址方式減19*ARx-0%Addr=ARxARx=circ(ARx-AR0)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以循環(huán)尋址方式減去AR010*ARx+%Addr=ARxARx=circ(ARx+1)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以循環(huán)尋址方式加111*ARx+0%Addr=ARxARx=circ(ARx+AR0)ARx包含了數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx以循環(huán)尋址方式加上AR012*ARx(lk)Addr=ARx+lkARx=ARxARx加上16位長(zhǎng)偏移量作為數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中內(nèi)容不變13*+ARx(lk)Addr=ARx+lkARx=ARx+lkARx加上16位長(zhǎng)偏移量作為數(shù)據(jù)存儲(chǔ)器地址訪問(wèn)后,ARx中內(nèi)容加上16位長(zhǎng)偏移量14*+ARx(lk)%Addr=circ(ARx+lk)ARx=circ(ARx+lk)ARx以循環(huán)尋址方式加上16位長(zhǎng)偏移量作為數(shù)據(jù)存儲(chǔ)器地址,同時(shí)修改ARx中內(nèi)容15*(lk)Addr=lk以無(wú)符號(hào)16位長(zhǎng)偏移量作為數(shù)據(jù)存儲(chǔ)器地址(絕對(duì)地址)(lk)不允許MMR尋址18間接尋址時(shí):間址寄存器前加*號(hào)有B符號(hào),位倒序?qū)ぶ酚校シ?hào),循環(huán)尋址有0符號(hào),與AR0有關(guān)“+”號(hào)在前,修改生成新值后再尋址“+”號(hào)在后,尋址后再修改生成新值19單操作數(shù)間接尋址編程舉例:

.mmregs .bssx,4a .word1,2,3,4 STM#a,AR1 STM#x,AR2 LD#0,A LD*AR1+,T MAC*AR2+,A LD*AR1+,T

MAC*AR2+,A LD*AR1+,T MAC*AR2+,A LD*AR1,T MAC*AR2,A …..采用雙操作數(shù)間接尋址可使程序簡(jiǎn)化20雙操作數(shù)間接尋址方式雙操作數(shù)間接尋址類型為:*ARx、*ARx-、*ARx+、*ARx+0%雙操作數(shù)間接尋址寄存器只能使用:AR2、AR3、AR4、AR5雙操作數(shù)間接尋址特點(diǎn):速度快,使用DB、CB兩條總線

RPTZA,#3 MAC*AR2+,*AR3+,A LD#a,DP STLA,@y STHA,@y+1 …..

.mmregs .bssx,4a.word1,2,3,4 STM#a,AR2 STM#x,AR3

雙操作數(shù)間接尋址編程舉例:21

間接尋址除可以完成增量、減量、變址等常規(guī)尋址要求外,還可以完成數(shù)字信號(hào)處理算法中常用的位倒序和循環(huán)尋址功能。

FFT算法中常用到位碼倒序?qū)ぶ贰?/p>

FFT運(yùn)算時(shí)輸出/輸入序列中必有其一要倒序。以8點(diǎn)蝶形FFT運(yùn)算為例:

FFT變換前按順序排列的輸入序列數(shù)據(jù)經(jīng)蝶形變換后,輸出序列按倒序排列;

FFT變換前按倒序排列的輸入序列數(shù)據(jù)經(jīng)蝶形變換后,輸出序列按順序排列;

(1)

位碼倒序?qū)ぶ?22324倒序及其進(jìn)位(有B符號(hào))位倒序表示:1010,0101;0011,1100

位倒序進(jìn)位:進(jìn)位不是加到左邊而是加到右邊。例如:進(jìn)位加到左邊(正序)

進(jìn)位加到右邊(倒序)

11001100

+1000+1000101000010

16點(diǎn)蝶形FFT運(yùn)算中,將FFT序列長(zhǎng)度的一半(8)存放AR0中,如果AR2指向x(0)首址2000H,則執(zhí)行下面2條程序后將以倒序地址:2000H,2008H,2004H,200CH,2002H,…,2007H,200FH存放讀自PA口采樣數(shù)據(jù)。

RPT#15PORTR*AR2+0B,PA2526(2)

循環(huán)尋址在卷積、相關(guān)、FIR濾波算法中,要求在存儲(chǔ)器中設(shè)置一個(gè)緩沖區(qū)作為滑動(dòng)窗,保存最新一批數(shù)據(jù)。循環(huán)尋址過(guò)程中,不斷有新的數(shù)據(jù)覆蓋舊的數(shù)據(jù),從而實(shí)現(xiàn)循環(huán)緩沖區(qū)尋址。循環(huán)緩沖區(qū)長(zhǎng)度BK決定緩沖區(qū)的大小,循環(huán)尋址時(shí)首先應(yīng)將緩沖區(qū)的長(zhǎng)度值R加載至循環(huán)緩沖區(qū)長(zhǎng)度寄存器BK。

STM#lk,BK;設(shè)置循環(huán)緩沖區(qū)長(zhǎng)度循環(huán)緩沖區(qū)從N位的地址邊界(N位0)開(kāi)始,要求2N>緩沖區(qū)長(zhǎng)度R。若R=32,則N=6,即開(kāi)始地址為:

xxxxxxxxxx000000。循環(huán)尋址時(shí)用一個(gè)ARx指向緩沖區(qū)。27循環(huán)尋址算法:

if0≤index+step<BK:index=index+step;

elseifindex+step≥BK:index=index+step-BK;

elseifindex+step<0:index=index+step+BK;

其中,index是ARx的低N位(緩沖區(qū)偏移地址)。

28

256點(diǎn)16階FIR濾波器 .sect “fir-prog”

STM#255,BRC

;BlockRepeatCounter

……………

;Repeat256times

STM#1,AR0

RPTBDfir_filter_loop

STM#16,BK ;FIRcircularbuffersize LD*AR7+,A ;loadtheinputvalue STLA,*AR4+% ;replaceoldestsamplewith ;newestsample RPTZA,#16-1 MAC*AR4+0%,*AR3+0%,A ;filtering STHA,*AR5+ ;replacetheoldestbuffervaluefir_filter_loop循環(huán)尋址編程舉例:29

6.存儲(chǔ)器映像寄存器尋址

存儲(chǔ)器映像寄存器尋址主要用于不改變DP、SP的情況下,訪問(wèn)MMR中的內(nèi)容。因此,這種尋址方式對(duì)MMR執(zhí)行寫操作開(kāi)銷小。

存儲(chǔ)器映像寄存器MMR尋址有兩種方法。(1)采用直接尋址方式,高9位數(shù)據(jù)存儲(chǔ)器地址置0(無(wú)論DP、SP為何值),利用指令中的低7位地址直接訪問(wèn)MMR。(2)采用間接尋址方式,高9位數(shù)據(jù)存儲(chǔ)器地址置0(無(wú)論DP、SP為何值),按照當(dāng)前輔助寄存器的低7位地址訪問(wèn)MMR。此種方式訪問(wèn)MMR,尋址操作完成后,輔助寄存器的高9位被強(qiáng)迫置成0。30CPU存儲(chǔ)器映射寄存器31只有8條指令能使用存儲(chǔ)器映射寄存器尋址:LDM

MMR,dstSTLMsrc,MMRSTM#lk,MMR

MVMD

MMR,dmad

MVDMdmad,MMR

MVMM

MMRx,MMRyPSHM

MMR

POPM

MMR存儲(chǔ)器映射寄存器尋址用來(lái)訪問(wèn)存儲(chǔ)器映射寄存器而不影響當(dāng)前數(shù)據(jù)頁(yè)指針(DP)或堆棧指針(SP)的值。

直接尋址中利用操作數(shù)中的低7位訪問(wèn)MMR;間接尋址中利用ARx訪問(wèn)MMR時(shí)ARx高9位被置0。327.堆棧尋址

’C54x的堆棧是從高地址向低地址方向生長(zhǎng)的,并用16位堆棧指針SP管理堆棧。

SP總是指向存放在堆棧中的最后一個(gè)元素,即棧頂。

堆棧尋址就是利用SP完成尋址操作。共有4條堆棧尋址指令:

PSHD;數(shù)據(jù)存儲(chǔ)器中的一個(gè)數(shù)壓棧

PSHM;MMR中的數(shù)壓棧

POPD;彈出一個(gè)數(shù)至數(shù)據(jù)存儲(chǔ)單元

POPM;彈出一個(gè)數(shù)至MMR33幾種尋址方式的特點(diǎn)(1)立即尋址的特點(diǎn)是操作數(shù)在指令中,運(yùn)行速度快,但需要較多的程序存儲(chǔ)空間,而且數(shù)值不能改變,主要用于表示常數(shù)和初始化。

絕對(duì)尋址可以訪問(wèn)任何的數(shù)據(jù)空間,但速度慢,且要求較多的存儲(chǔ)空間,可用于對(duì)速度沒(méi)有苛刻要求的場(chǎng)合。

累加器尋址是利用累加器中的數(shù)值尋址程序存儲(chǔ)器,故主要

用于程序空間和數(shù)據(jù)空間的數(shù)據(jù)傳送。

間接尋址是通過(guò)輔助寄存器和輔助寄存器指針尋址數(shù)據(jù)存儲(chǔ)空間任一單元的,較為靈活,可自動(dòng)實(shí)現(xiàn)增量、減量、變址尋址、循環(huán)尋址等操作。2634幾種尋址方式的特點(diǎn)(2)直接尋址指令中包含有數(shù)據(jù)存儲(chǔ)器的低7位地址,與DP或SP內(nèi)容結(jié)合形成l6位地址,可以實(shí)現(xiàn)單指令周期尋址128個(gè)單元。速度較快,利用并行流水線操作,用于時(shí)間要求較高的場(chǎng)合。

MMR是基地址為零(不考慮SP、DP、CPL)的直接尋址方式,尋址速度較快,可以直接利用存儲(chǔ)器映像寄存器MMR快速訪

溫馨提示

  • 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)論