第三章DSP匯編指令_第1頁
第三章DSP匯編指令_第2頁
第三章DSP匯編指令_第3頁
第三章DSP匯編指令_第4頁
第三章DSP匯編指令_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章:DSP匯編指令‘C54x尋址方式‘C54x特殊尋址方式說明‘C54x指令集‘C54x特殊指令使用說明一、TMS320C54x的尋址方式

立即數(shù)尋址:指令中嵌有一個固定的數(shù)絕對地址尋址:指令中有一個固定的地址累加器尋址:按累加器內(nèi)的地址去訪問程序存儲器中的一個單元直接尋址:指令中的7bits是一個數(shù)據(jù)頁內(nèi)的偏移地址,而所在的數(shù)據(jù)頁由數(shù)據(jù)頁指針DP或SP決定。該偏移加上DP和SP的值決定了在數(shù)據(jù)存儲器中的實際地址。間接尋址:按照輔助寄存器中的地址訪問存儲器。存儲器映射寄存器尋址:修改存儲器映射寄存器中的值,而不影響當前DP或SP的值。堆棧尋址:把數(shù)據(jù)壓入和彈出系統(tǒng)堆棧。

在立即數(shù)尋址中,指令里包括了立即操作數(shù)。在一條指令中可對兩種立即數(shù)編碼。一種是短立即數(shù)(3、5、8或9bits),另一種是16bits的長立即數(shù)。立即數(shù)可包含在單字或雙字指令中。3-,5-,8-或9-bit值在單字指令中,16-bit值在雙字指令中。1.立即數(shù)尋址立即數(shù)尋址的其他例子:LD#0,ARP;ARP=0(#k3)LD#3,ASM;ASM=3(#k5)LD#50,DP;DP=50(#k9)LD#1234,A;A=1234(#K)STM#FFFFh,IMR;IMR=FFFFh(#lk)短立即數(shù)RPT長立即數(shù)RPT2.直接尋址

在直接尋址中,指令代碼包含了數(shù)據(jù)存儲器地址的低七位。這7-bitdma(數(shù)據(jù)存儲器地址)作為偏移地址與數(shù)據(jù)頁指針(DP)或堆棧指針(SP)相結(jié)合共同形成16-bit的數(shù)據(jù)存儲器實際地址。如右圖所示。CPL=0:dma與9-bit的DP相結(jié)合形成數(shù)據(jù)存儲器地址。以DP為基準的直接尋址DP9-bit9-bit的DP指向數(shù)據(jù)存儲空間的512個數(shù)據(jù)頁中的一頁012510511以SP為基準的直接尋址CPL=1:dma加上SP基地址形成數(shù)據(jù)存儲器地址。(st1中)使用以SP為基址的直接尋址:ANDsample,ALDsample,AADDsample,B;……..3.間接尋址

在間接尋址中,64K數(shù)據(jù)空間任意單元都可通過一個輔助寄存器中的16-bit地址進行訪問?!瓹54x有8個16-bit輔助寄存器(AR0-AR7)。兩個輔助寄存器算術(shù)單元(ARAU0和ARAU1),根據(jù)輔助寄存器的內(nèi)容進行操作,完成無符號的16-bit算術(shù)運算。間接尋址很靈活,不僅能從存儲器中讀或?qū)懸粋€單16-bit數(shù)據(jù)操作數(shù),而且能在一條指令中訪問兩個數(shù)據(jù)存儲器單元(即從兩個獨立的存儲器單元讀數(shù)據(jù),或讀一個存儲器單元同時寫另一個存儲器單元,或讀寫兩個連續(xù)的存儲器單元)。單操作數(shù)尋址單操作數(shù)間接尋址方框圖單操作數(shù)間接尋址類型:*ARx:ARx包含了數(shù)據(jù)存儲器地址*ARx-/*ARx+:訪問后,ARx中的地址減1/加1*+ARx:在尋址之前,ARx中的地址加1*ARx-0B/*ARx+0B:訪問后,從ARx中以位倒序進位的方式減去/加上AR0*ARx-0/*ARx+0:訪問后,從ARx中減去/加上AR0*ARx-%/*ARx+%:訪問后,ARx中的地址以循環(huán)尋址的方式減1/加1*ARx-0%/*ARx+0%:訪問后,從ARx中以循環(huán)尋址的方式減去/加上AR0*ARx(lk):ARx和16-bit的長偏移(lk)的和用來作為數(shù)據(jù)存儲器地址。ARx本身不被修改編程舉例:4.絕對地址尋址有個別指令可以使用16bits的絕對地址尋址:

數(shù)據(jù)存儲器地址(dmad)尋址:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDpmad,Smem程序存儲器地址(pmad)尋址:FIRSXmem,Ymem,pmadMACDSmem,pmad,srcMACPSmem,pmad,srcMVPDpmad,Smem端口地址(PA)尋址PORTRPA,SmemPORTWSmem,PA*(lk)尋址適用于支持單數(shù)據(jù)存儲器操作數(shù)的指令

5.累加器尋址

累加器尋址是用累加器中的數(shù)作為一個地址。這種尋址方式可用來對存放數(shù)據(jù)的程序存儲器尋址。共有兩條指令可以采用累加器尋址:READASmemWRITASmemREADA是把累加器A所確定的程序存儲器單元中的一個字,傳送到單數(shù)據(jù)存儲器(Smem)操作數(shù)所確定的數(shù)據(jù)存儲器單元中。WRITA是把Smem操作數(shù)所確定的數(shù)據(jù)單元中的一個字,傳送到累加器A確定的程序存儲器單元中去。只有8條指令能使用存儲器映射寄存器尋址:LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRyPOPMMMRPSHMMMRSTLMsrc,MMRSTM#lk,MMR6.存儲器映射寄存器尋址

存儲器映射寄存器尋址用來修改存儲器映射寄存器而不影響當前數(shù)據(jù)頁指針(DP)或堆棧指針(SP)的值。存儲器映射寄存器尋址既可以在直接尋址中使用,又可以在間接尋址中使用。

7.堆棧尋址

系統(tǒng)堆棧用來在中斷和子程序期間自動存放程序計數(shù)器。它也能用來存放額外的數(shù)據(jù)項或傳遞數(shù)據(jù)值。處理器使用一個16-bit的存儲器映射寄存器—堆棧指針來對堆棧尋址,它總是指向存放在堆棧中的最后一個元素。

共有四條使用堆棧尋址方式訪問堆棧的指令: PSHD把一個數(shù)據(jù)存儲器的值壓入堆棧。 PSHM把一個存儲器映射寄存器的值壓入堆棧。 POPD把一個數(shù)據(jù)存儲器的值彈出堆棧。 POPM把一個存儲器映射寄存器的值彈出堆棧?!?-2特殊尋址方式說明本小節(jié)重點介紹兩種廣泛應(yīng)用的特殊尋址方式—位倒序?qū)ぶ泛脱h(huán)尋址。

位倒序?qū)ぶ?/p>

位倒序?qū)ぶ诽岣吡藞?zhí)行速度和在FFT算法的程序中使用存儲器的效率。在這種尋址方式中,AR0存放的整數(shù)N是FFT點數(shù)的一半。一個輔助寄存器指向一數(shù)據(jù)存放的物理單元。當使用位倒序?qū)ぶ钒袮R0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進位是從左向右,而不是從右向左。間接尋址中*ARn+0B/-0B表示位倒序?qū)ぶ?。位倒序?qū)ぶ返膱?zhí)行

設(shè)FFT長度N=16,x(0)~x(15)位于地址(01100000)~(01101111),則AR0賦值為8,位倒序方式讀入數(shù)據(jù)情況如下(AR2初始為01100000):循環(huán)尋址:

許多算法,如卷積,相關(guān)和FIR濾波等,都需要在存儲器中實現(xiàn)一個循環(huán)緩沖器。在這些算法中,一個循環(huán)緩沖器就是一個包含了最近的數(shù)據(jù)的滑動窗口。當新的數(shù)據(jù)來到時,緩沖器就會覆蓋最早的數(shù)據(jù)。循環(huán)緩沖器實現(xiàn)的關(guān)鍵是循環(huán)尋址的實現(xiàn)。‘C54x間接尋址中提供了循環(huán)尋址的方式,以%表示。循環(huán)尋址圖示if0≤

index+step<BK:

index=index+step

elseifindex+step≥BK:

index=index+step-BK

elseifindex+step<0

index=index+step+BK

TMS320C54x的指令集有近兩百條指令,按功能分為如下幾類: 算術(shù)運算指令 邏輯運算指令 程序控制指令 裝入和存儲指令§3-3TMS320C54x的指令集

指令中用到的縮寫符號及其含義縮寫符號含義Smem16位單數(shù)據(jù)存儲器操作數(shù)Xmem在雙操作數(shù)指令及某些單操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲器操作數(shù),從DB總線上讀出Ymem在雙操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲器操作數(shù),從CB總線上讀出;在讀同時并行寫的指令中表示寫操作數(shù)dmad16位立即數(shù)——數(shù)據(jù)存儲器地址(0~65535)pmad16位立即數(shù)——程序存儲器地址(0~65535)PA16位立即數(shù)——I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)lk16位長立即數(shù)一、算術(shù)運算指令算術(shù)運算指令可分為如下幾類: 加法指令 減法指令 乘法指令 乘加指令 乘減指令 雙數(shù)/雙精度指令 特殊操作指令1、加法指令2、減法指令3、乘法指令4、乘加和乘減指令5、雙精度/雙數(shù)操作指令6、特殊指令二、邏輯運算指令邏輯指令包括與、或、異或、移位和測試指令1、與指令(AND)2、或、異或指令3、移位和測試指令三、程序控制指令程序控制指令包括:

分支指令 調(diào)用指令 中斷指令 返回指令

溫馨提示

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

評論

0/150

提交評論