版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《DSP技術與應用》學時:32(含8學時實驗)1第3章
TMS320C54XDSP尋址方式
2本章內(nèi)容1、尋址與尋址方式2、立即尋址3、絕對尋址4、累加器尋址5、直接尋址6、間接尋址
7、MMR尋址
8、堆棧尋址
9、程序存儲器尋址3
尋址與尋址方式
指令執(zhí)行過程中涉及兩次尋址操作,一次是預取指階段的指令代碼尋址,另一次是訪問階段的操作數(shù)尋址
指令代碼尋址主要在程序存儲空間進行,稱作程序存儲器尋址;操作數(shù)尋址主要在數(shù)據(jù)存儲空間進行,稱作數(shù)據(jù)存儲器尋址,簡稱尋址。尋找指令代碼和尋找參與運算的操作數(shù)的方法稱作尋址方式。同一功能指令因尋址方式不同而有多種表示形式。4符號含義Smem16位單數(shù)據(jù)尋址操作數(shù)Xmem16位雙數(shù)據(jù)尋址操作數(shù),從DB總線讀出Ymem16位雙數(shù)據(jù)尋址操作數(shù),從CB總線讀出dmad16位立即數(shù),數(shù)據(jù)存儲器地址pmad16位立即數(shù),程序存儲器地址PA16位立即數(shù),I/O口地址src源累加器(A或B)dst目的累加器(A或B)lk16位長立即數(shù)尋址指令中的縮寫符號及其含義5立即數(shù)尋址:指令中包含有一個立即數(shù)(#)操作數(shù)絕對地址尋址:指令中包含有一個操作數(shù)的16位物理地址累加器尋址:用累加器的低16位值作為地址去訪問程序存儲器直接尋址:指令中包含的7位偏移地址與當前數(shù)據(jù)頁指針DP或堆棧指針SP共同決定了操作數(shù)在數(shù)據(jù)存儲器中的物理地址間接尋址:
8個輔助寄存器中包含有操作數(shù)所在的數(shù)據(jù)存儲器地址存儲器映射寄存器尋址:修改存儲器映射寄存器中的值,而不影響當前DP或SP的值堆棧尋址:把數(shù)據(jù)壓入和彈出系統(tǒng)堆棧尋址方式操作數(shù)尋址方式’C54x共有7種操作數(shù)尋址方式:6
1.立即尋址在立即尋址方式中,指令里包含了立即操作數(shù)。立即尋址方式中的立即數(shù)有兩種數(shù)值形式,1、5、8、9位短立即數(shù)和16位的長立即數(shù),它們在指令中分別編碼為單字指令和雙字指令。
例如:
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有四種絕對尋址指令:
數(shù)據(jù)存儲器地址(dmad)尋址:
MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad程序存儲器地址(pmad)尋址:
FIRSXmem,Ymem,pmadMVDPSmem,pmadMACPSmem,pmad,srcMVPDpmad,SmemI/O端口地址(PA)尋址:
PORTRPA,SmemPORTWSmem,PA長立即數(shù)*(lk)尋址:
LD*(BUFFER),A2.絕對尋址絕對尋址方式的指令中包含有所尋操作數(shù)的16位單元地址。由于尋址16位絕對地址,故絕對尋址指令長度至少為2個字。8例如:
MVKDDATA,*AR1; 數(shù)據(jù)存儲器尋址
MVPDTABLE, *AR2; 程序存儲器尋址
PORTR0F2F0H, *AR5; 端口尋址第一條指令表示將數(shù)據(jù)存儲器中以DATA符號為地址單元中的數(shù)據(jù)傳送到由輔助寄存器ARl所指向的數(shù)據(jù)存儲單元中去。DATA代表數(shù)據(jù)存儲單元的地址dmad。第二條指令表示將程序存儲器中以TABLE符號為地址單元中的數(shù)據(jù)傳送到由輔助寄存器AR2所指向的數(shù)據(jù)存儲單元中去。TABLE代表程序存儲單元的地址pmad。第三條指令表示將地址為0F2F0H的端口中的數(shù)據(jù)傳送到由輔助寄存器AR5所指向的數(shù)據(jù)存儲單元中去。93.累加器尋址
累加器尋址是利用累加器A的低16位(AL內(nèi)容)作為地址對程序存儲器中的數(shù)據(jù)進行訪問,這種尋址方式常用來尋址存放數(shù)據(jù)的程序存儲空間。
只有兩條指令可用于累加器尋址方式。
READASmem
WRITASmem第一條指令意為將累加器A(AL)的內(nèi)容作為地址尋找程序存儲器中的數(shù)據(jù),傳送到Smem指定的數(shù)據(jù)存儲單元中。第二條指令意為將Smem指定的數(shù)據(jù)存儲單元中的數(shù)據(jù)(1個字),寫到累加器A(AL)指定地址的程序存儲器中去。10累加器尋址舉例:DM的地址:0206h1514131211109876543210000000100000011011
4.直接尋址
直接尋址指令中包含有數(shù)據(jù)存儲器地址的低7位(dma)。
以dma為偏移地址,與基地址(數(shù)據(jù)頁指針DP或堆棧指針SP)共同構成16位數(shù)據(jù)存儲器的物理地址。數(shù)據(jù)指針(DP),當ST1中的CPL位=0堆棧指針(SP),當ST1中的CPL位=1
位于狀態(tài)寄存器ST1中的CPL的值決定了這種尋址方式的指針選擇CPL=0,選擇數(shù)據(jù)頁指針DP,用DP中的9位作為高位與指令中指定的7位作為低位,共同構成16位數(shù)據(jù)存儲單元的地址。CPL=1,選擇堆棧指針SP,用SP的值與指令中指定的7位正偏移量相加,構成16位數(shù)據(jù)存儲單元的地址。利用這種尋址方式,可以在不改變數(shù)據(jù)頁指針DP和堆棧指針SP內(nèi)容的情況下,隨機地尋址128個存儲單元中的任何一個單元。
直接尋址的優(yōu)點是尋址速度快且為單字指令。129-bit的DP與7-bit的dma結合形成數(shù)據(jù)存儲器物理地址以DP為基準的直接尋址DP9-bit9-bit的DP指向數(shù)據(jù)存儲空間的512個數(shù)據(jù)頁中的某一頁012510511
CPL=0DP直接尋址注意:用DP直接尋址時操作對象需處于同一頁當偏移地址為變量時,變量前加@符號例:x.set20LD#20hDPLD@x,A13
觀察如下程序,計算累加器A中數(shù)據(jù)。
RSBXCPLLD#3,DPLD@x,ALD#4,DPADD@y,A
直接尋址方式書寫時需在變量前加@,或者用一個數(shù)dma設定偏移地址值。
DP的值可由LD指令裝入,用RESET指令復位清零;
CPL的值可由SSBX置位,由RSBX復位。
采用DP數(shù)據(jù)頁指針直接尋址編程舉例地址數(shù)據(jù)00010180????????01FF100002000500????????數(shù)據(jù)存儲器xy14地址計算公式:例如:SSBXCPL;CPL置位LD@1,AADD@2,A;A的結果:1500024010000503404SP(SP則始終指向棧頂)
CPL=1SP直接尋址15
5.間接尋址
間接尋址根據(jù)8個輔助寄存器AR0—AR7中定義的任一寄存器給出的16位地址尋址。每一個寄存器都可以用來尋址64K字數(shù)數(shù)據(jù)存儲空間中的任何一個單元。
間接尋址很靈活,不僅能從存儲器中讀或寫一個單16-bit數(shù)據(jù)操作數(shù),而且能在一條指令中訪問兩個數(shù)據(jù)存儲器單元(即從兩個獨立的存儲器單元讀數(shù)據(jù),或讀一個存儲器單元同時寫另一個存儲器單元,或讀寫兩個連續(xù)的存儲器單元)。
VC5402有兩個輔助寄存器算術運算單元ARAU0和ARAU1,它們與8個輔肋輔助寄存器一起,可以進行無符號數(shù)算術運算,實現(xiàn)16種單操作數(shù)間接尋址或4種雙操作數(shù)間接尋址方式。16
序號間址類型功能說明0*ARxAddr=ARxARx包含了數(shù)據(jù)存儲器地址1*ARx-Addr=ARxARx=ARx-1ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx中地址減12*ARx+Addr=ARxARx=ARx+1ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx中地址加13*+ARxAddr=ARx+1ARx=ARx+1尋址前,ARx中地址加14*ARx-0BAddr=ARxARx=B(ARx-AR0)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以位倒序方式減去AR05*ARx-0Addr=ARxARx=ARx-AR0ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx中減去AR06*ARx+0Addr=ARxARx=ARx+AR0ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx中加上AR07*ARx+0BAddr=ARxARx=B(ARx+AR0)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以位倒序方式加上AR0*號表示間址
32位雙字時+/-增減為2尋址前變址只用于寫操作指令178*ARx-%Addr=ARxARx=circ(ARx-1)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以循環(huán)尋址方式減19*ARx-0%Addr=ARxARx=circ(ARx-AR0)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以循環(huán)尋址方式減去AR010*ARx+%Addr=ARxARx=circ(ARx+1)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以循環(huán)尋址方式加111*ARx+0%Addr=ARxARx=circ(ARx+AR0)ARx包含了數(shù)據(jù)存儲器地址訪問后,ARx以循環(huán)尋址方式加上AR012*ARx(lk)Addr=ARx+lkARx=ARxARx加上16位長偏移量作為數(shù)據(jù)存儲器地址訪問后,ARx中內(nèi)容不變13*+ARx(lk)Addr=ARx+lkARx=ARx+lkARx加上16位長偏移量作為數(shù)據(jù)存儲器地址訪問后,ARx中內(nèi)容加上16位長偏移量14*+ARx(lk)%Addr=circ(ARx+lk)ARx=circ(ARx+lk)ARx以循環(huán)尋址方式加上16位長偏移量作為數(shù)據(jù)存儲器地址,同時修改ARx中內(nèi)容15*(lk)Addr=lk以無符號16位長偏移量作為數(shù)據(jù)存儲器地址(絕對地址)(lk)不允許MMR尋址18間接尋址時:間址寄存器前加*號有B符號,位倒序尋址有%符號,循環(huán)尋址有0符號,與AR0有關“+”號在前,修改生成新值后再尋址“+”號在后,尋址后再修改生成新值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ù)間接尋址可使程序簡化20雙操作數(shù)間接尋址方式雙操作數(shù)間接尋址類型為:*ARx、*ARx-、*ARx+、*ARx+0%雙操作數(shù)間接尋址寄存器只能使用:AR2、AR3、AR4、AR5雙操作數(shù)間接尋址特點:速度快,使用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ù)字信號處理算法中常用的位倒序和循環(huán)尋址功能。
FFT算法中常用到位碼倒序尋址。
FFT運算時輸出/輸入序列中必有其一要倒序。以8點蝶形FFT運算為例:
FFT變換前按順序排列的輸入序列數(shù)據(jù)經(jīng)蝶形變換后,輸出序列按倒序排列;
FFT變換前按倒序排列的輸入序列數(shù)據(jù)經(jīng)蝶形變換后,輸出序列按順序排列;
(1)
位碼倒序尋址222324倒序及其進位(有B符號)位倒序表示:1010,0101;0011,1100
位倒序進位:進位不是加到左邊而是加到右邊。例如:進位加到左邊(正序)
進位加到右邊(倒序)
11001100
+1000+1000101000010
16點蝶形FFT運算中,將FFT序列長度的一半(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)尋址在卷積、相關、FIR濾波算法中,要求在存儲器中設置一個緩沖區(qū)作為滑動窗,保存最新一批數(shù)據(jù)。循環(huán)尋址過程中,不斷有新的數(shù)據(jù)覆蓋舊的數(shù)據(jù),從而實現(xiàn)循環(huán)緩沖區(qū)尋址。循環(huán)緩沖區(qū)長度BK決定緩沖區(qū)的大小,循環(huán)尋址時首先應將緩沖區(qū)的長度值R加載至循環(huán)緩沖區(qū)長度寄存器BK。
STM#lk,BK;設置循環(huán)緩沖區(qū)長度循環(huán)緩沖區(qū)從N位的地址邊界(N位0)開始,要求2N>緩沖區(qū)長度R。若R=32,則N=6,即開始地址為:
xxxxxxxxxx000000。循環(huán)尋址時用一個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點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.存儲器映像寄存器尋址
存儲器映像寄存器尋址主要用于不改變DP、SP的情況下,訪問MMR中的內(nèi)容。因此,這種尋址方式對MMR執(zhí)行寫操作開銷小。
存儲器映像寄存器MMR尋址有兩種方法。(1)采用直接尋址方式,高9位數(shù)據(jù)存儲器地址置0(無論DP、SP為何值),利用指令中的低7位地址直接訪問MMR。(2)采用間接尋址方式,高9位數(shù)據(jù)存儲器地址置0(無論DP、SP為何值),按照當前輔助寄存器的低7位地址訪問MMR。此種方式訪問MMR,尋址操作完成后,輔助寄存器的高9位被強迫置成0。30CPU存儲器映射寄存器31只有8條指令能使用存儲器映射寄存器尋址:LDM
MMR,dstSTLMsrc,MMRSTM#lk,MMR
MVMD
MMR,dmad
MVDMdmad,MMR
MVMM
MMRx,MMRyPSHM
MMR
POPM
MMR存儲器映射寄存器尋址用來訪問存儲器映射寄存器而不影響當前數(shù)據(jù)頁指針(DP)或堆棧指針(SP)的值。
直接尋址中利用操作數(shù)中的低7位訪問MMR;間接尋址中利用ARx訪問MMR時ARx高9位被置0。327.堆棧尋址
’C54x的堆棧是從高地址向低地址方向生長的,并用16位堆棧指針SP管理堆棧。
SP總是指向存放在堆棧中的最后一個元素,即棧頂。
堆棧尋址就是利用SP完成尋址操作。共有4條堆棧尋址指令:
PSHD;數(shù)據(jù)存儲器中的一個數(shù)壓棧
PSHM;MMR中的數(shù)壓棧
POPD;彈出一個數(shù)至數(shù)據(jù)存儲單元
POPM;彈出一個數(shù)至MMR33幾種尋址方式的特點(1)立即尋址的特點是操作數(shù)在指令中,運行速度快,但需要較多的程序存儲空間,而且數(shù)值不能改變,主要用于表示常數(shù)和初始化。
絕對尋址可以訪問任何的數(shù)據(jù)空間,但速度慢,且要求較多的存儲空間,可用于對速度沒有苛刻要求的場合。
累加器尋址是利用累加器中的數(shù)值尋址程序存儲器,故主要
用于程序空間和數(shù)據(jù)空間的數(shù)據(jù)傳送。
間接尋址是通過輔助寄存器和輔助寄存器指針尋址數(shù)據(jù)存儲空間任一單元的,較為靈活,可自動實現(xiàn)增量、減量、變址尋址、循環(huán)尋址等操作。2634幾種尋址方式的特點(2)直接尋址指令中包含有數(shù)據(jù)存儲器的低7位地址,與DP或SP內(nèi)容結合形成l6位地址,可以實現(xiàn)單指令周期尋址128個單元。速度較快,利用并行流水線操作,用于時間要求較高的場合。
MMR是基地址為零(不考慮SP、DP、CPL)的直接尋址方式,尋址速度較快,可以直接利用存儲器映像寄存器MMR快速訪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年05月山西2024屆中國民生銀行太原分行暑期校園招考筆試歷年參考題庫附帶答案詳解
- 《疤痕妊娠》課件
- 2024年滬教版選擇性必修3歷史上冊階段測試試卷
- 2024年北師大版第一冊生物下冊階段測試試卷
- 2025年粵人版七年級科學下冊階段測試試卷
- 2024年05月上海浙江民泰商業(yè)銀行綜合管理崗社會招考(58)筆試歷年參考題庫附帶答案詳解
- 2024年北師大版二年級英語上冊階段測試試卷
- 七年級英語OurDailyLife課件
- 2024年晉寧縣人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年明溪縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 第十四結異質結
- GB/T 32491-2016玻璃纖維增強熱固性樹脂管及管件長期靜水壓試驗方法
- 書名號測試的文檔
- 交大醫(yī)學院研究生現(xiàn)代免疫學基礎和進展《免疫學原理》考試重點
- 全文解讀改革開放簡史專題解讀
- 熱電廠工程燃煤系統(tǒng)施工方案
- 福建省南平市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- 金融科技課件(完整版)
- 中國建筑史經(jīng)典題型
- 計算機信息系統(tǒng)分級保護方案
- 頂管施工技術全面詳解
評論
0/150
提交評論